netdata可直接监控nginx,需启用nginx-module-vts模块并配置/status接口;默认启用nginxvts收集器,通过json接口采集连接、请求、上游、缓存等指标;建议配合web_log收集器分析访问日志,实现全链路监控。

直接用 Netdata 监控 Nginx,不需要写脚本、不依赖外部数据库,开箱即用——但前提是 Nginx 暴露了状态接口,且 Netdata 能连上它。
Nginx 必须启用状态模块
Netdata 默认通过 HTTP 接口读取 Nginx 的实时指标(如连接数、请求数、响应时间),这依赖 Nginx 自带的 stub_status 模块或第三方模块 nginx-module-vts。推荐使用后者,功能更全、指标更细。
- 确认模块已编译:运行
nginx -V 2>&1 | grep -o with-http-vts-module,有输出说明已支持 - 若未安装,需重新编译 Nginx 并加入
--add-module=/path/to/nginx-module-vts - 在
http块中添加配置: vhost_traffic_status_zone;
server {
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format json;
allow 127.0.0.1;
deny all;
}
}
保存后执行 sudo nginx -t && sudo systemctl reload nginx,再访问 http://127.0.0.1/status 确认返回 JSON 数据。
确保 Netdata 正确采集 Nginx 数据
Netdata 自带 nginxvts 收集器,只要状态接口可达,默认就会启用。无需手动编辑 Go 源码(旧教程中修改 collector.go 已过时)。
- 检查收集器是否启用:查看
/etc/netdata/go.d/nginxvts.conf,确认enable: yes - 核对 URL 地址:默认是
http://127.0.0.1/status,如 Nginx 绑定非本地或改了路径,需在此文件中调整url字段 - 测试连通性:
sudo -u netdata curl -s http://127.0.0.1/status | head -20,应能拿到 JSON 输出 - 重启采集器:
sudo systemctl restart netdata或运行sudo netdata-updater(部分版本需刷新插件缓存)
在仪表盘查看关键指标
刷新 http://your-server:19999 后,在左侧菜单找到 Nginx VTS 分组,即可看到实时图表:
- Requests:总请求数、成功/失败/重定向请求量(含 4xx/5xx 分布)
- Connections:活跃连接、等待连接、接受/处理/丢弃连接数
- Upstream:后端服务器健康状态、请求分发、响应时间 P95/P99
- Cache:缓存命中率、缓存大小、缓存键冲突(需 Nginx 开启 cache_status)
所有图表支持点击缩放、悬停查看精确值、右键导出数据,也可在搜索框输入 nginxvts. 查看全部 20+ 个原始指标名(如 nginxvts.requests_4xx)。
进阶建议:结合日志监控补全视角
状态模块只反映“流量面”,看不到具体请求内容。若需分析 URL 路径、用户代理、响应延迟分布、慢请求 TopN,可同时启用 Netdata 的 web_log 收集器:
- 在
/etc/netdata/go.d/web_log.conf中配置 Nginx access log 路径(如/var/log/nginx/access.log) - 指定日志格式(支持
combined、main或自定义正则) - 启用后,仪表盘新增 Web Log 区域,可实时查看状态码趋势、Top URI、客户端国家分布等
状态 + 日志双路采集,覆盖性能瓶颈定位的完整链路。











