启用Nginx状态模块
server {
listen 8080;
server_name localhost;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1; # 允许Zabbix Agent IP
deny all;
}
}
重新加载Nginx配置
nginx -s reload
测试状态页面是否正常工作
curl http://localhost:8080/nginx_status
正常输出应类似:
Active connections: 1
server accepts handled requests
10 10 20
Reading: 0 Writing: 1 Waiting: 0
编辑Zabbix Agent配置文件
vim /etc/zabbix/zabbix_agentd.conf
添加以下内容:
UserParameter=nginx.active[*],curl -s http://$1:$2/nginx_status | awk '/Active connections/ {print $3}'
UserParameter=nginx.accepts[*],curl -s http://$1:$2/nginx_status | awk 'NR==3 {print $1}'
UserParameter=nginx.handled[*],curl -s http://$1:$2/nginx_status | awk 'NR==3 {print $2}'
UserParameter=nginx.requests[*],curl -s http://$1:$2/nginx_status | awk 'NR==3 {print $3}'
UserParameter=nginx.reading[*],curl -s http://$1:$2/nginx_status | awk '/Reading/ {print $2}'
UserParameter=nginx.writing[*],curl -s http://$1:$2/nginx_status | awk '/Reading/ {print $4}'
UserParameter=nginx.waiting[*],curl -s http://$1:$2/nginx_status | awk '/Reading/ {print $6}'
重启Zabbix Agent
systemctl restart zabbix-agent
在Zabbix Server上测试Agent是否正常工作
zabbix_get -s <nginx_server_ip> -k "nginx.active[127.0.0.1,8080]"
创建主机
添加监控项
nginx.active[{HOST.CONN},8080]
nginx.accepts[{HOST.CONN},8080]
nginx.handled[{HOST.CONN},8080]
nginx.requests[{HOST.CONN},8080]
nginx.reading[{HOST.CONN},8080]
nginx.writing[{HOST.CONN},8080]
nginx.waiting[{HOST.CONN},8080]
创建图形
创建触发器(可选)
导入Nginx监控模板(可从Zabbix官网下载或使用社区模板)
将模板关联到主机
监控Nginx进程状态
UserParameter=nginx.process,ps aux | grep nginx | grep -v grep | wc -l
监控Nginx端口状态
UserParameter=nginx.port,netstat -tlnp | grep nginx | wc -l
监控Nginx错误日志(需配置日志监控)
通过以上步骤,您可以在Zabbix中实现对Nginx的全面监控,包括连接数、请求处理状态等关键指标。