文章摘要:本文是一份 Zabbix 监控实战指南,详细讲解了如何通过 Zabbix Agent 2 与 Zabbix Java Gateway 对 Nginx、MySQL 及 Java 程序进行监控。内容涵盖:开启 Nginx stub_status 统计模块并配置自定义监控项;通过免密登录方式获取 MySQL 运行状态并定义监控参数;以及安装配置 Zabbix Java Gateway,通过 JMX 接口远程监控 Java 应用。每部分均给出完整的配置文件与操作命令,并在 Zabbix 管理后台创建模板、绑定主机,帮助读者快速落地一套可用的监控方案。
Nginx的监控
- 修改nginx配置文件,增加统计功能。在/etc/nginx/conf.d/zabbix.conf中增加:
bash
vim /etc/nginx/conf.d/zabbix.conf
bash
location /nginx_status{
stub_status on; # 开启状态监控
access_log off; # 请求不写入访问日志
}
- 使用curl测试链接:
bash
curl -s 127.0.0.1/nginx_status

- 在/etc/zabbix/zabbix_agent2.d目录中新增监控文件nginx.conf,内容如下:
bash
vim /etc/zabbix/zabbix_agent2.d/nginx.conf
bash
UserParameter=nginx.connections,curl -s 127.0.0.1/nginx_status|awk'NR==1{print $3}'
UserParameter=nginx.accepts,curl -s 127.0.0.1/nginx_status|awk'NR==3{print $1}'
UserParameter=nginx.handled,curl -s 127.0.0.1/nginx_status|awk'NR==3{print $2}'
UserParameter=nginx.requests,curl -s 127.0.0.1/nginx_status|awk'NR==3{print $3}'
UserParameter=nginx.reading,curl -s 127.0.0.1/nginx_status|awk'NR==4{print $2}'
UserParameter=nginx.writing,curl -s 127.0.0.1/nginx_status|awk'NR==4{print $4}'
UserParameter=nginx.waiting,curl -s 127.0.0.1/nginx_status|awk'NR==4{print $6}'
- 在zabbix管理后台增加一个模板,并加入所有的监控项。
- 左侧:"配置"->"模板"。
- 右侧:"创建模板"。
- 输入名称,选择群组。
- 依次加入定义的7个监控项。
- 将模板应用至主机上。


MySQL的监控
- 修改mysql配置,设置免密码登录,此方法不推荐使用。非使用时则不允许root用户从其它主机登录,数据库服务器不允许除DBA以外其他人使用):
bash
vim /etc/my.cnf
bash
[client]
default-character-set=utf8
user=root#用户名
password=root # 密码
- 使用命令获取MySQL状态:
bash
mysqladmin status
mysqladmin extended-status
- 在/etc/zabbix/zabbix_agent2.d目录中新增监控文件mysql.conf,内容如下:
bash
UserParameter=mysql.uptime,mysqladmin status | awk '{print $2}'
UserParameter=mysql.slow,mysqladmin status | awk '{print $9}'
UserParameter=mysql.received,mysqladmin extended-status | grep 'Bytes_received' |awk '{print $4}'
UserParameter=mysql.sent,mysqladmin extended-status | grep 'Bytes_sent' | awk'{print $4}'
- 在zabbix管理后台增加一个模板,并加入所有的监控项。
- 左侧:"配置"->"模板"。
- 右侧:"创建模板"。
- 输入名称,选择群组。
- 依次加入定义的多个监控项。
- 将模板应用至主机上。


Java程序的监控
Zabbix Java Gateway 自Zabbix 2.0起支持监控JMX(Java管理扩展)应用程序,通过Zabbixserver/proxy向其发送请求,利用JMX管理API远程查询应用状态。
- Zabbix Java Gateway的安装:在zabbix服务端执行以下命令:
bash
yum -y install zabbix-java-gateway
- 启动gateway并打开10052端口:
bash
systemctl start zabbix-java-gateway
systemctl status zabbix-java-gateway
bash
firewall-cmd --zone=public --add-port=10052/tcp --permanent
firewall-cmd --reload
- 修改配置文件zabbix_server.conf,增加如下两行:
bash
vim /etc/zabbix/zabbix_server.conf
bash
JavaGateway=127.0.0.1 # gateway服务器Ip
StartJavaPollers=5 # 收集信息的线程数
- 在客户端运行Java程序:
bash
# Java运行服务器IP
java -Djava.rmi.server.hostname=192.168.19.128 \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.registry.ssl=false \
-jar zabbix-jmx-demo-1.0.0.jar

5、zabbix后台添加主机并添加接口类型为jmx,链接模板为Template App Generic Java JMX。
