Zabbix 监控实战:Nginx、MySQL 与 Java 程序配置指南

文章摘要:本文是一份 Zabbix 监控实战指南,详细讲解了如何通过 Zabbix Agent 2 与 Zabbix Java Gateway 对 Nginx、MySQL 及 Java 程序进行监控。内容涵盖:开启 Nginx stub_status 统计模块并配置自定义监控项;通过免密登录方式获取 MySQL 运行状态并定义监控参数;以及安装配置 Zabbix Java Gateway,通过 JMX 接口远程监控 Java 应用。每部分均给出完整的配置文件与操作命令,并在 Zabbix 管理后台创建模板、绑定主机,帮助读者快速落地一套可用的监控方案。


Nginx的监控

  1. 修改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;	# 请求不写入访问日志
}
  1. 使用curl测试链接:
bash 复制代码
curl -s 127.0.0.1/nginx_status
  1. 在/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}'
  1. 在zabbix管理后台增加一个模板,并加入所有的监控项。
  • 左侧:"配置"->"模板"。
  • 右侧:"创建模板"。
  • 输入名称,选择群组。
  • 依次加入定义的7个监控项。
  • 将模板应用至主机上。

MySQL的监控

  1. 修改mysql配置,设置免密码登录,此方法不推荐使用。非使用时则不允许root用户从其它主机登录,数据库服务器不允许除DBA以外其他人使用):
bash 复制代码
vim /etc/my.cnf
bash 复制代码
[client]
default-character-set=utf8
user=root#用户名
password=root	# 密码
  1. 使用命令获取MySQL状态:
bash 复制代码
mysqladmin status
mysqladmin extended-status
  1. 在/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}'
  1. 在zabbix管理后台增加一个模板,并加入所有的监控项。
  • 左侧:"配置"->"模板"。
  • 右侧:"创建模板"。
  • 输入名称,选择群组。
  • 依次加入定义的多个监控项。
  • 将模板应用至主机上。

Java程序的监控

Zabbix Java Gateway 自Zabbix 2.0起支持监控JMX(Java管理扩展)应用程序,通过Zabbixserver/proxy向其发送请求,利用JMX管理API远程查询应用状态。

  1. Zabbix Java Gateway的安装:在zabbix服务端执行以下命令:
bash 复制代码
yum -y install zabbix-java-gateway
  1. 启动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
  1. 修改配置文件zabbix_server.conf,增加如下两行:
bash 复制代码
vim /etc/zabbix/zabbix_server.conf
bash 复制代码
JavaGateway=127.0.0.1 # gateway服务器Ip 
StartJavaPollers=5		# 收集信息的线程数
  1. 在客户端运行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。

相关推荐
paopaokaka_luck42 分钟前
灾害应急物资管理系统(AI应急助手、Echarts可视化数据看板、捐赠入库联动、 物资全流程管理、库存变动追溯、灾情资讯与互动反馈、物资发放公示)
java·前端·javascript·spring boot·mysql·tomcat·echarts
这个DBA有点耶1 小时前
为什么删掉索引后,查询瞬间变快了?探讨MySQL的随机I/O与顺序I/O博弈
数据库·mysql·代码规范
GreatSQL3 小时前
GreatSQL 8.0回流MySQL 5.7主从复制中断分析排查过程
mysql
数据库小学妹3 小时前
MySQL磁盘IO瓶颈:iostat与刷脏fsync
数据库·mysql·性能优化
枫叶轻语3 小时前
【Nginx 从入门到实战 09】前后端统一入口:部署页面与接口的完整配置
nginx·全栈
Umi·4 小时前
MySQL之DQL使用实例
数据库·mysql
无言听风雨丶4 小时前
Nginx 深度实战:从架构原理到生产排错
运维·nginx·架构
贾公子5 小时前
检测结果怎么落库——表结构、状态机与三类对账
后端·mysql
z06.5 小时前
Linux系统中MySQL的安装
linux·mysql
Small-Young6 小时前
数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南
数据库·spring boot·mysql·postgresql·乐观锁·并发控制