需启用 Nginx stub_status 模块并配置本地访问,再通过 Zabbix Agent 的 UserParameter 调用自定义脚本解析状态页数据,最后在 Zabbix Server 端创建模板添加监控项与触发器。

安装完 Nginx 后,想用 Zabbix Agent 采集其运行状态(如连接数、请求量、活跃会话等),需手动启用 Nginx 的 stub_status 模块,并配置 Zabbix Agent 通过 HTTP 调用该接口获取指标。默认 YUM 安装的 Nginx 通常已内置该模块,但未启用。
确认 Nginx 支持 stub_status 并启用监控端点
YUM 安装的 Nginx(如 CentOS/RHEL 的官方或 EPEL 源)一般已编译 --with-http_stub_status_module。只需在 server 块中添加 location 配置:
- 编辑主配置文件(通常是
/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf) - 在某个 server 块内加入以下内容(建议绑定到 127.0.0.1,仅本地可访问):
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
保存后执行 nginx -t 测试语法,再 systemctl reload nginx 生效。然后本地执行:curl http://127.0.0.1/nginx_status,应返回类似:
Active connections: 2 server accepts handled requests 10 10 20 Reading: 0 Writing: 1 Waiting: 1
配置 Zabbix Agent 主动/被动检查获取 Nginx 状态
Zabbix Agent 本身不直接解析 Nginx 状态页,需借助自定义 UserParameter 或脚本。推荐使用简单 shell 脚本 + UserParameter 方式:
- 新建脚本
/etc/zabbix/scripts/nginx_status.sh(确保可执行:chmod +x):
#!/bin/bash
URL="http://127.0.0.1/nginx_status"
case $1 in
active) curl -s "$URL" 2>/dev/null | head -1 | awk '{print $3}' ;;
accepts) curl -s "$URL" 2>/dev/null | awk 'NR==3 {print $2}' ;;
handled) curl -s "$URL" 2>/dev/null | awk 'NR==3 {print $3}' ;;
requests) curl -s "$URL" 2>/dev/null | awk 'NR==3 {print $4}' ;;
reading) curl -s "$URL" 2>/dev/null | awk 'NR==4 {print $2}' ;;
writing) curl -s "$URL" 2>/dev/null | awk 'NR==4 {print $4}' ;;
waiting) curl -s "$URL" 2>/dev/null | awk 'NR==4 {print $6}' ;;
*) exit 1 ;;
esac
- 在 Zabbix Agent 配置文件(
/etc/zabbix/zabbix_agentd.conf)末尾添加:
UserParameter=nginx.status[*],/etc/zabbix/scripts/nginx_status.sh "$1"
- 重启 Agent:
systemctl restart zabbix-agent - 本地测试是否生效:
zabbix_get -s 127.0.0.1 -k "nginx.status[active]"
在 Zabbix Server 端添加模板与监控项
Zabbix 官方不提供开箱即用的 Nginx 模板,需手动创建或导入社区模板(如 Zabbix GitHub 模板库 中的 nginx template):
- 登录 Zabbix Web 界面 → 配置 → 模板 → 创建模板(名称如 Template App Nginx)
- 添加监控项(Item),类型为 “Zabbix agent”,键值示例:
nginx.status[active]、nginx.status[requests] 等 - 为关键指标(如 Active connections)设置触发器,例如:
{Template App Nginx:nginx.status[active].last()}>1000 - 将该模板链接到运行 Nginx 的主机
安全与排错提示
常见问题及应对方式:
- curl 返回空或 403/404:检查 Nginx 是否监听 127.0.0.1、location 路径是否拼写正确、allow/deny 规则是否阻止了 Agent 进程(Zabbix Agent 默认以 zabbix 用户运行,但访问的是本地 HTTP,不受用户限制,重点查 Nginx 访问控制)
-
Zabbix Agent 报 “Not supported”:确认脚本有执行权限、路径在 UserParameter 中完全匹配、Agent 配置已重载、SELinux 是否拦截(临时禁用测试:
setenforce 0) -
需要更详细指标(如各 upstream 状态):需改用 Nginx Plus 或开源替代方案(如
nginx-module-vts),YUM 默认包不支持










