操作场景
Nginx 通过 stub_status 页面暴露了部分监控指标。Nginx Prometheus Exporter 会采集单个 Nginx 实例指标,并将其转化为 Prometheus 可用的监控数据, 最终通过 HTTP 协议暴露给 Prometheus 服务进行采集。我们可以通过 Exporter 上报重点关注的监控指标,用于异常报警和大盘展示。
前提条件
开启 NGINX stub_status 功能
1. 开源 Nginx 提供一个简单页面用于展示状态数据,该页面由 stub_status 模块提供。执行以下命令检查 Nginx 是否已经开启了该模块:
nginx -V 2>&1 | grep -o with-http_stub_status_module
如果在终端中输出
with-http_stub_status_module
,则说明 Nginx 已启用 stub_status 模块。如果未输出任何结果,则可以使用
--with-http_stub_status_module
参数从源码重新配置编译一个 Nginx。示例如下:./configure \\… \\--with-http_stub_status_modulemakesudo make install
2. 确认 stub_status 模块启用之后,修改 Nginx 的配置文件指定 status 页面的 URL。示例如下:
server {listen 8080 # 根据业务情况进行调整listen [::]:8080; # 根据业务情况进行调整server_name localhost; # 根据业务情况进行调整location = /stub_status { # 具体路径可根据业务情况进行调整stub_status;}}
3. 检查并重新加载 Nginx 的配置使其生效。
nginx -tnginx -s reload
4. 完成上述步骤之后,您可以通过下面的 URL 查看 Nginx 上次启动后工作状态的统计结果。
curl http://localhost:8080/nginx_status
Active connections: 45server accepts handled requests1056958 1156958 4491319Reading: 0 Writing: 25 Waiting : 7
操作步骤
使用 Docker 容器运行 Exporter
$ docker run -p 9113:9113 nginx/nginx-prometheus-exporter:0.8.0 -nginx.scrape-uri=http://<nginx>:8080/stub_status
说明:
http://<nginx>:8080/stub_status
需要把 <nginx>
替换成实际服务的 IP 地址,8080/stub-status
替换为 stub_status
开启的端口/路径,如前提例子中配置的为 http://localhost:8080/stub_status
。下属内容均以 192.168.10.10:8080/stub_status 作为例子,请换成实际服务地址。
方式2:使用 nginx-prometheus-exporter 镜像将服务部署在腾讯云 容器服务 TKE 中,通过托管 Prometheus 的监控自发现 CRD PodMonitor 或者 ServiceMonitor 采集监控数据。
使用二进制程序运行 Exporter
下载安装
运行 NGINX Prometheus Exporter
执行以下命令启动 NGINX Prometheus Exporter:
$ ./nginx-prometheus-exporter -nginx.scrape-uri=http://192.168.10.10:8080/stub_status
上报指标
nginxexporter_build_info
-- exporter 编译信息。所有的 stub_status 指标。
nginx_up
-- 展示上次抓取的状态:1表示抓取成功, 0表示抓取失败。配置 Prometheus 的抓取 Job
1. Nginx Prometheus Exporter 正常运行后,将如下 Job 添加到 Prometheus 的抓取任务中:
scrape_configs:...## 需添加的配置信息- job_name: 'nginx_exporter'metrics_path: '/stub_status
' ## 更换为实际路径static_configs:- targets: ['192.168.10.10:8080'] ## 更换为地址
2. 通常情况下,Exporter 和 Nginx 并非共同运行,所以数据上报的
instance
并不能真实描述是哪个实例,为了方便数据的检索和观察,我们可以修改 instance
标签,使用真实的 IP 进行替换以便更加直观。示例如下:scrape_configs:...## 需添加的配置信息- job_name: 'nginx_exporter'metrics_path: '/stub_status
' ## 更换为实际路径static_configs:- targets: ['192.168.10.10:8080'] ## 更换为地址relabel_configs:- source_labels: [__address__]regex: '.*'target_label: instancereplacement: '10.0.0.1:80' ## 更换为实际实例名或实例地址信息
查看监控
Prometheus 监控服务可以通过导入官方 Nginx Exporter Dashboard 的方式查看 Nginx 监控数据。
1. 登录 Prometheus 监控服务控制台。
2. 单击对应实例 ID 右侧的
,登录 Grafana。3. 将 Exporter 自带仪表盘 导入到 Grafana,选择数据源,即可查看监控数据。