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。

相关推荐
泡干脆面就番茄4 小时前
MySQL_流程控制_分组查询与连接查询详解
数据库·mysql
harmony&5 小时前
MySQL 运维实战:从 DQL 查询到 MHA 高可用架构全解析
mysql
Meta396 小时前
Java八股文之Spring Boot 中解决 MySQL 和 Elasticsearch (ES) 的数据一致性问题
java·spring boot·mysql
索西引擎7 小时前
基于 Docker 容器化的 MySQL 数据库部署与访问控制机制研究
数据库·mysql·docker
HY小宝F7 小时前
腾讯云 × 树莓派摄像头四周实战学习路线 第 2 周 · 第 8 天:Nginx 入门
nginx·腾讯云
流光D7 小时前
AI时代,搭建 web 站点并配置 nginx 反向代理流程
运维·服务器·前端·人工智能·nginx·ai·ai编程
2301_800074217 小时前
MySQL部分语句
数据库·mysql
CodeStats8 小时前
MySQL与Oracle数据类型底层设计原理对比(下)
数据库·mysql·oracle
程序员黎剑8 小时前
MySQL-JOIN优化-NLJ与BNL的区别与实战
数据库·mysql