NGINX Prometheus Exporter 安装与配置完全指南
NGINX Prometheus Exporter 是一个用于监控 NGINX 和 NGINX Plus 的开源工具,它允许通过 Prometheus 监控系统收集这两个Web服务器的性能指标。此项目由 nginxinc 维护,并采用 Go 语言编写,确保了高效率和跨平台兼容性。
项目基础介绍
NGINX Prometheus Exporter 能够从单个 NGINX 或 NGINX Plus 实例获取指标,将这些指标转换为适当的 Prometheus 指标类型,最后通过 HTTP 服务器暴露它们以便 Prometheus 收集。
环境需求
- Prometheus: 确保已经安装并运行Prometheus服务
- NGINX 或 NGINX Plus: 需要配置好NGINX(需开启stub_status页面)或NGINX Plus(需开启API访问)
- Go环境(仅限自建二进制文件时需要)
安装步骤详解
获取项目源码
使用以下命令克隆项目仓库:
git clone https://gitcode.com/gh_mirrors/ng/nginx-prometheus-exporter.git
cd nginx-prometheus-exporter
配置NGINX
对于 NGINX,编辑配置文件以公开stub_status页面:
server {
listen 8080;
location /stub_status {
stub_status on;
access_log off;
allow 127.0.0.1; # 允许指定IP访问
deny all;
}
}
对于 NGINX Plus,确保API接口是可用的。
使用Docker容器运行
这是最推荐的运行方式:
监控NGINX:
docker run -p 9113:9113 nginx/nginx-prometheus-exporter:1.4.0 --nginx.scrape-uri=http://你的NGINX主机IP:8080/stub_status
监控NGINX Plus:
docker run -p 9113:9113 nginx/nginx-prometheus-exporter:1.4.0 --nginx.plus --nginx.scrape-uri=http://你的NGINX-Plus主机IP:8080/api
使用二进制文件运行
首先构建二进制文件:
make build
然后运行:
./nginx-prometheus-exporter --nginx.scrape-uri=http://你的NGINX主机IP:8080/stub_status
对于NGINX Plus:
./nginx-prometheus-exporter --nginx.plus --nginx.scrape-uri=http://你的NGINX-Plus主机IP:8080/api
配置Prometheus
在Prometheus的配置文件中添加新的scrape配置:
- job_name: 'nginx'
static_configs:
- targets: ['localhost:9113']
命令行参数详解
NGINX Prometheus Exporter 支持以下主要命令行参数:
--web.listen-address=:9113: 暴露指标和Web界面的地址--web.telemetry-path="/metrics": 暴露指标的路径--nginx.plus: 为NGINX Plus启动导出器(默认为NGINX)--nginx.scrape-uri: 用于抓取NGINX或NGINX Plus指标的URI--nginx.timeout=5s: 从NGINX或NGINX Plus抓取指标的超时时间
导出的指标
通用指标
nginx_exporter_build_info: 显示导出器构建信息promhttp_metric_handler_requests_total: 按HTTP状态码统计的总抓取次数go_*: Go运行时指标
NGINX OSS 指标
nginx_up: 显示上次指标抓取的状态nginx_connections_accepted: 接受的客户端连接数nginx_connections_active: 活跃的客户端连接数nginx_connections_handled: 已处理的客户端连接数nginx_connections_reading: NGINX正在读取请求头的连接数nginx_connections_waiting: 空闲的客户端连接数nginx_connections_writing: NGINX正在将响应写回客户端的连接数nginx_http_requests_total: 总HTTP请求数
NGINX Plus 指标
NGINX Plus 提供了更丰富的指标集,包括:
- 连接指标: 接受、活跃、丢弃和空闲的连接数
- HTTP指标: 总HTTP请求数和当前HTTP请求数
- SSL指标: 成功的SSL握手、失败的SSL握手和SSL握手期间的会话重用
- HTTP服务器区域: 处理中的客户端请求、总客户端请求、发送给客户端的响应等
高级配置选项
SSL配置
如果需要SSL验证,可以使用以下参数:
--nginx.ssl-verify: 执行SSL证书验证--nginx.ssl-ca-cert: 用于验证服务器SSL证书的PEM编码CA证书文件路径
Unix域套接字支持
支持通过Unix域套接字抓取NGINX指标:
nginx-prometheus-exporter --nginx.scrape-uri=unix:你的NGINX套接字路径:/stub_status
Grafana仪表板
项目提供了官方的Grafana仪表板,用于可视化导出器暴露的NGINX指标。仪表板允许您按实例过滤指标或查看所有实例的指标。
仪表板安装步骤
- 在Grafana UI中使用新建仪表板按钮并点击导入
- 上传
grafana/dashboard.json或在文本框中复制粘贴文件内容,然后点击加载 - 设置Prometheus数据源并点击导入
- 仪表板将出现,您可以在仪表板标题下方(左上角)过滤实例标签
故障排除
常见问题
- 无法连接到NGINX: 确保stub_status页面已正确配置且可访问
- 指标显示为0: 检查NGINX配置和网络连接
- Prometheus无法抓取: 验证导出器是否在正确端口运行
验证安装
- 访问Prometheus UI,您应该在目标列表中看到名为'nginx'的作业,且状态为UP
- 直接访问
http://localhost:9113/metrics来查看导出的指标是否正确
构建和开发
构建二进制文件
使用Makefile构建:
make nginx-prometheus-exporter
运行测试
make test
代码检查
make lint
系统服务配置
要将导出器作为系统服务运行,可以参考项目中的示例配置:
examples/systemd/nginx_exporter.service
该服务文件提供了systemd配置,可以确保导出器在系统启动时自动运行。
总结
NGINX Prometheus Exporter 为NGINX和NGINX Plus提供了强大的监控能力。通过本文的详细指南,您可以轻松完成安装和配置,开始对您的Web服务器进行全面的性能监控。无论是通过Docker容器还是二进制文件运行,该工具都能提供稳定可靠的指标收集服务。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




