zabbix企业级监控平台3——服务监控与API实战
1 服务监控1.1 Linux服务监控在 agent 1 安装 nginx开启 nginx 状态统计页面[rootserver2 ~]# yum install -y nginx[rootserver2 ~]# nginx[rootserver2 ~]# vim /etc/nginx/nginx.conf#开启nginx状态统计页面并关闭这个页面的访问日志减少日志垃圾[rootserver2 ~]# nginx -t[rootserver2 ~]# nginx -s reload测试访问 nginx 状态接口输出连接、请求统计信息供 zabbix 抓取做 nginx 监控acceptsnginx 总共接收到的客户端连接数handled成功处理完成的连接一般和 accepts 相等requests总共收到的 HTTP 请求总数Reading正在读取请求的连接Writing正在返回响应给客户端的连接Waiting空闲等待的长连接主机清除之前手动复制的模板关联 nginx 服务监控模板系统抓取到数据后即可查看1.2 mysql 基础监控Zabbix 原生模板[rootserver2 ~]# yum install -y mysql-server[rootserver2 ~]# systemctl enable --now mysqld[rootserver2 ~]# mysqlmysqlCREATEUSERzbx_monitor%IDENTIFIED BYwestos;mysqlGRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TOzbx_monitor%;#创建专用监控用户 zbx_monitor授予监控需要的权限用来查看进程、复制状态、库视图信息mysqlquit[rootserver2 ~]# cp /usr/share/doc/zabbix-agent/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.d/[rootserver2 ~]# systemctl restart zabbix-agent[rootserver2 ~]# cd /etc/zabbix/zabbix_agentd.d/[rootserver2 zabbix_agentd.d]# mkdir /var/lib/zabbix[rootserver2 zabbix_agentd.d]# vim /var/lib/zabbix/.my.cnf# agent 调用 mysql 命令时自动读取账号密码主机关联 mysql 服务监控模板系统抓取到数据后即可查看1.3 mysql 深度监控Percona 插件1.3.1 CentOS 7Percona 插件是 zabbix 的 mysql 增强监控脚本采集比 zabbix 自带模板更多数据库性能指标尤其适合监控主从复制、缓冲池、慢查询。先导入Percona模板将 Percona 提供的 zabbix mysql 监控模板 rpm 安装包放入根下[rootserver3 ~]# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm[rootserver3 ~]# cd /var/lib/zabbix/percona/templates[rootserver3 templates]# cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/#将percona自定义监控key配置拷贝到zabbix agent配置目录agent才会加载这些监控项[rootserver3 templates]# systemctl restart zabbix-agent.service[rootserver3 templates]# yum install -y php php-mysql#安装php环境percona采集脚本ss_get_mysql_stats.php是php编写依赖php[rootserver3 templates]# yum install -y mariadb-server[rootserver3 templates]# systemctl enable --now mariadb.service[rootserver3 templates]# mysqlMariaDB[(none)]grant all on *.* to rootlocalhostidentified bywestos;#给rootlocalhost授权所有权限设置密码westos供php采集脚本连接数据库MariaDB[(none)]quit[rootserver3 templates]# cd /var/lib/zabbix/percona/scripts/[rootserver3 scripts]# vim ss_get_mysql_stats.php#修改php采集脚本填入数据库账号密码脚本靠这个账号查询mysql性能数据[rootserver3 scripts]# cd /etc/zabbix/zabbix_agentd.d/[rootserver3 zabbix_agentd.d]# vim userparameter_percona_mysql.confUserParameter监控key名,脚本路径 参数代号gg、os、ij、running‑slave都是脚本内部预定义的指标代号不同代号对应 MySQL 不同性能项。gg 代表Open‑files MySQL 打开文件数。[rootserver3 zabbix_agentd.d]# su -s /bin/sh -c /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg zabbix#单独测试【Open‑files 打开文件数】这个指标能不能拿到数值有数字输出说明脚本正常[rootserver3 zabbix_agentd.d]# cd /tmp/[rootserver3 tmp]# ll#脚本会把采集的临时数据缓存写到/tmp下此文件的属主和属组必须是 zabbix主机关联Percona模板系统抓取到数据后即可查看1.3.2 Rocky Linux因为兼容性问题其他操作与在CentOS 7里类似只是要将原有的ss_get_mysql_stats.php文件里的部分内容替换掉[rootserver2 ~]# yum install -y php php-mysqlnd[rootserver2 ~]# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm[rootserver2 ~]# cd /var/lib/zabbix/percona/templates[rootserver2 templates]# cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/[rootserver2 templates]# systemctl restart zabbix-agent[rootserver2 templates]# cd /var/lib/zabbix/percona/scripts[rootserver2 scripts]# rm -f ss_get_mysql_stats.php#删除原有版本将修改过的脚本上传到此目录下[rootserver2 scripts]# chmod x ss_get_mysql_stats.php[rootserver2 scripts]# su - zabbix -s /bin/sh -c /usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --items gggg:0给server2添加模板即可使用1.4 tomcat 服务监控Tomcat 是Java程序它暴露内部指标靠JMX接口。zabbix‑server 和 agent 本身是 C 语言写的没有 JMX 客户端能力不能直接连 JMX 端口拿数据。zabbix‑java‑gateway 是 Java 写的专门充当 JMX 客户端能调用Java JMX API去连接 Tomcat 的 JMX 端口拿数据。java‑gateway 部署在 zabbix‑server 端不在被监控的 Tomcat 机器上被监控端 Tomcat 只需要开启 JMX 远程端口不需要装 gateway。zabbix‑agent 只管普通系统指标CPU、磁盘、进程JMX 类型监控项不走 agent完全走 java‑gateway 这条链路。完整数据流向Tomcat 启动时增加 JMX 启动参数开启 JMX 远程监听端口对外暴露 Java 内部指标。Zabbix‑Server 需要获取 JMX 监控项数据内部 JavaPollers 线程去请求部署在 zabbix‑server 本机的 zabbix‑java‑gateway10052 端口zabbix‑server 不会直接访问 Tomcat 的 JMX 端口而是将 JMX 采集任务转发给 java‑gateway。java‑gateway 作为 JMX 客户端网络访问 Tomcat 的 JMX 端口抓取数据。gateway 把拿到的数据回传给 zabbix‑server存入数据库web 页面展示。配置zabbix server[rootserver1 ~]# yum install -y zabbix-java-gateway[rootserver1 ~]# systemctl enable --now zabbix-java-gateway.service[rootserver1 ~]# vim /etc/zabbix/zabbix_server.conf# 1.指定zabbix‑java‑gateway服务所在主机IP告诉zabbix‑server去哪里找 java 网关# 2.zabbix‑java‑gateway 默认监听端口为10052# 3.开启5个Java采集线程向java‑gateway下发JMX采集任务数值越大并发采集JMX监控项越多[rootserver1 ~]# systemctl restart zabbix-server.serviceagent 2上部署 tomcat 服务[rootserver3 ~]# tar zxf apache-tomcat-9.0.120.tar.gz -C /usr/local[rootserver3 local]# ln -s apache-tomcat-9.0.120/ tomcat[rootserver3 local]# cd /usr/local/tomcat/bin[rootserver3 bin]# vim catalina.sh开启 JMX 远程监听端口 8888关闭 JMX 通信 SSL 加密实验环境简化调试关闭 JMX 身份账号密码校验。任何能连通 8888 端口的主机都可以直接读取全部 JVM、Tomcat 指标不需要用户名密码。执行 Tomcat 启动脚本读取配置参数启动 Tomcat 进程。[rootserver3 bin]# /usr/local/tomcat/bin/startup.sh给server3添加 JMX 接口关联 Java JMX 模板JMX 部分显示绿色 java‑gateway 可以连通 Tomcat JMX 端口2 集成外部告警使用睿象云 CA 智能告警平台zabbix 用睿象云 Agent 探针对接睿象云。在 zabbix‑server 安装探针自动读取 zabbix 告警数据。添加zabbix告警右侧有配置步骤注意步骤一的脚本目录可能有所不同需要在zabbix-server端的/etc/zabbix/zabbix_server.conf查找告警脚本目录我查找到的路径为/usr/lib/zabbix/alertscripts在此目录下安装探针[rootserver1 ~]# cd /usr/lib/zabbix/alertscripts[rootserver1 alertscripts]# yum install -y wget[rootserver1 alertscripts]# wget https://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-4.0.5.tar.gz[rootserver1 alertscripts]# yum install -y tar[rootserver1 alertscripts]# tar zxf ca_zabbix_release-4.0.5.tar.gz[rootserver1 alertscripts]# chown -R zabbix:zabbix cloudalert/#保证运行zabbix服务的权限和cloudalert探针目录的权限保持一致不一致会导致告警无法正常接入[rootserver1 alertscripts]# cd cloudalert/bin/[rootserver1 bin]# ./install.sh 561063389842448191a1ba8d1c8a35be探针安装好后管理媒介会自动启用自动创建用户群组和用户自动创建触发器动作且自动停用其他的测试在睿象云设置告警通知策略停止一台 zabbix‑agent 客户端服务模拟故障[rootserver2 ~]# systemctl stop zabbix-agentzabbix 监控到异常并且自动发邮件通知睿象云平台也出现告警认领此告警详情中可以看到已经分配给我正在处理中恢复服务解决问题[rootserver2 ~]# systemctl start zabbix-agentzabbix 监控界面显示问题已解决恢复邮件也已发送睿象云告警关闭3 zabbix apiZabbix API 是 Zabbix Web 前端自带功能不需要额外安装服务。通过程序 / 脚本远程操作 Zabbix代替手动网页点鼠标。作用配置管理批量创建 / 删除 / 修改主机、监控项、触发器、模板、主机组数据读取获取监控历史数据、获取告警事件故障第三方对接对接睿象云、钉钉、运维平台读取告警推送外部系统自动化自动发现主机后调用 API 批量添加监控脚本化运维3.1 获取tokentoken 是 Zabbix API 登录成功后返回的临时身份凭证临时钥匙作用避免反复传递账号密码第一次调用user.login提交用户名密码拿到 token。后面每一次 API 请求只携带 token不再重复发送账号密码减少密码泄露风险。身份校验权限Zabbix 收到 API 请求检查 token 是否有效。token有效就按照这个账号的权限允许查数据、改配置。token无效 / 过期直接拒绝请求报错。临时生效token 有存活时间一段时间不用就失效。失效之后必须重新执行user.login获取新 token。代表登录会话人在网页登录 Zabbix浏览器会保存会话脚本程序没有浏览器就靠 token 来代表 “已经登录的状态”。[rootserver1 ~]# vim zabbix-api.sh[rootserver1 ~]# sh zabbix-api.sh返回的即为token值3.2 获取主机列表[rootserver1 ~]# vim zabbix-api.sh填写刚刚获取的token值[rootserver1 ~]# sh zabbix-api.sh3.3 删除主机[rootserver1 ~]# vim zabbix-api.sh[rootserver1 ~]# sh zabbix-api.sh此时监控页面的server2已经被删除3.4 添加主机添加主机需要设置添加到哪个群组以及关联哪个模板需要提前查询对应的id[rootserver1 ~]# vim zabbix-api.sh[rootserver1 ~]# sh zabbix-api.sh显示server2已经存在回到前端网页server2确实已经存在且链接到我们自定义的模板原因是我们的自动注册功能未停停用自动注册功能删除server2重新执行脚本server2重新加入