tencent cloud

腾讯云可观测平台

动态与公告
产品动态
产品简介
产品概述
产品优势
基本功能
基本概念
应用场景
使用限制
购买指南
云产品监控
应用性能监控
终端性能监控
前端性能监控
云拨测
Prometheus 监控服务
Grafana 服务
事件总线
云压测
快速入门
监控概览
实例分组
云产品监控
应用性能监控
云拨测
云压测
Prometheus 监控服务
Grafana 服务
创建 Dashboard
事件总线
告警服务
云产品监控
云产品监控指标
控制台操作指南
云服务器监控组件
云产品监控对接 Grafana
故障处理
实践教程
应用性能监控
应用性能监控简介
接入指南
控制台操作指南
实践教程
参考信息
常见问题
终端性能监控
终端性能监控概述
控制台操作指南
接入指南
实践教程
前端性能监控
前端性能监控简介
控制台操作指南
接入指南
常见问题
云拨测
产品简介
控制台操作指南
常见问题
云压测
云压测概述
控制台操作指南
实践教程
JavaScript API 列表
常见问题
Prometheus 监控
Prometheus 监控简介
接入指南
控制台操作指南
实践教程
Terraform
常见问题
Grafana 服务
产品简介
控制台操作指南
Grafana 平台常用功能指引
常见问题
Dashboard
什么是 Dashboard
控制台操作指南
告警管理
控制台操作指南
故障处理
常见问题
事件总线
事件总线简介
控制台操作指南
实践教程
常见问题
报表管理
常见问题
腾讯云可观测平台常见问题
告警服务相关
一般性问题
监控图表相关
云服务器监控组件相关
动态阈值告警相关
云监控对接 Grafana 相关
文档阅读指南
相关协议
应用性能监控服务等级协议
APM 隐私协议
APM 数据处理和安全协议
前端性能监控服务等级协议
终端性能监控服务等级协议
云拨测服务等级协议
Prometheus 监控服务服务等级协议
Grafana 服务服务等级协议
云压测服务等级协议
云压测使用限制
Cloud Monitor Service Level Agreement
词汇表

Nginx Exporter 接入

PDF
聚焦模式
字号
最后更新时间: 2024-10-29 11:16:48

操作场景

Nginx 通过 stub_status 页面暴露了部分监控指标。Nginx Prometheus Exporter 会采集单个 Nginx 实例指标,并将其转化为 Prometheus 可用的监控数据, 最终通过 HTTP 协议暴露给 Prometheus 服务进行采集。我们可以通过 Exporter 上报重点关注的监控指标,用于异常报警和大盘展示。

前提条件

开启 NGINX stub_status 功能

说明:
1. 下述例子为 Nginx 部署在容器服务中,其他部署方式登录及配置修改方式进行对应调整即可。
2. 容器服务相关操作可参见 容器服务 相关文档。
因为 Nginx Prometheus Exporter 是通过 Nginx 的 stub_status 模块对其进行监控,所以需要确保 Nginx 服务打开了 stub_status 模块,具体步骤如下:
2. 在左侧菜单栏中单击集群,找到业务 Nginx 服务所在集群,进入集群,找到业务 Nginx 服务。
3. 登录到业务 Nginx 服务,执行以下命令检查 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 \\
\\ ## 之前编译nginx所需的命令
--with-http_stub_status_module
make
sudo make install
4. 若未添加 Nginx 服务相关 ConfigMap,可登录到业务 Nginx 服务,将配置目录(官方镜像为 /etc/nginx/conf.d )下的 default.conf 配置信息进行拷贝,创建 ConfigMap,将配置信息添加到该 ConfigMap 中,ConfigMap 相关操作指引见 ConfigMap 管理
5. 确认 stub_status 模块启用之后,在 ConfigMap 的default.conf 中添加如下配置。示例如下:
server {
listen 8080; # 根据业务情况进行调整
listen [::]:8080; # 根据业务情况进行调整
server_name localhost; # 根据业务情况进行调整
location = /stub_status { # 具体路径可根据业务情况进行调整
stub_status;
}
}
ConfigMap 中配置示例如下:



6. 配置修改完成之后,找到业务 Nginx 服务,点击更多 > 重新部署,完成配置的重新加载。非容器服务环境重加载命令:
nginx -t
nginx -s reload
7. 完成上述步骤之后,登录业务 Nginx 服务,执行如下命令,即可查看 Nginx 上次启动后工作状态的统计结果。
curl http://localhost:8080/stub_status ## 根据配置文件中配置内容进行相应调整
Active connections: 45
server accepts handled requests
1056958 1156958 4491319
Reading: 0 Writing: 25 Waiting : 7

接入方式

方式一:一键安装(推荐)

操作步骤

2. 在实例列表中,选择对应的 Prometheus 实例。
3. 进入实例详情页,选择数据采集 > 集成中心
4. 在集成中心搜索 Nginx,找到后单击它即会弹出一个安装窗口。
5. 在弹出窗口的安装页面,填写指标采集名称、地址、路径等信息,并单击保存




配置说明

参数
说明
名称
集成名称,命名规范如下:
名称具有唯一性。
名称需要符合下面的正则:'^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$'。
地址
Nginx 服务的连接地址。
路径
Nginx 服务的服务状态路径,在配置中指定
用户名
Nginx 服务 HTTP 验证用的用户名称。
密码
Nginx 服务 HTTP 验证用的密码。
标签
给指标添加自定义 Label。

方式二:自定义安装

说明:
为了方便安装管理 Exporter,推荐使用腾讯云 容器服务 来统一管理。

前提条件

在 Prometheus 实例对应地域及私有网络(VPC)下,创建腾讯云容器服务 Kubernetes 集群,并为集群创建 命名空间
Prometheus 监控服务控制台 > 选择对应的 Prometheus 实例 > 数据采集 > 集成容器服务中找到对应容器集群完成关联集群操作。可参见指引 关联集群

操作步骤

步骤一:Exporter 部署
2. 在左侧菜单栏中单击集群。
3. 单击需要获取集群访问凭证的集群 ID/名称,进入该集群的管理页面。
4. 执行以下 部署 Nginx Exporter > 验证 步骤完成 Exporter 部署。
步骤二:部署 Nginx Exporter
1. 在左侧菜单中选择工作负载 > Deployment,进入 Deployment 页面。
2. 在页面右上角单击 YAML 创建资源,创建 YAML 配置,选择对应的命名空间来进行部署服务,可以通过控制台的方式创建。如下以 YAML 的方式部署 Exporter, 配置示例如下:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
k8s-app: nginx-exporter # 根据业务需要调整成对应的名称,建议加上 Nginx 实例的信息
name: nginx-exporter # 根据业务需要调整成对应的名称,建议加上 Nginx 实例的信息
namespace: nginx-demo # 根据业务需要调整成对应的命名空间
spec:
replicas: 1
selector:
matchLabels:
k8s-app: nginx-exporter # 根据业务需要调整成对应的名称,建议加上 Nginx 实例的信息
template:
metadata:
labels:
k8s-app: nginx-exporter # 根据业务需要调整成对应的名称,建议加上 Nginx 实例的信息
spec:
containers:
- args:
- --web.listen-address=:8080
- --nginx.scrape-uri=http://127.0.0.1:8080/stub_status # 根据业务需要调整成 Nginx 实例对应地址
image: ccr.ccs.tencentyun.com/rig-agent/common-image:nginx-exporter-v1.1.0
name: nginx-exporter
ports:
- containerPort: 9113
name: metric-port
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: qcloudregistrykey
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30

验证
1. 在 Deployment 页面单击上述步骤创建的 Deployment,进入 Deployment 管理页面。
2. 单击日志页签,可以查看到 Exporter 成功启动并暴露对应的访问地址,如下图所示:



3. 单击 Pod 管理页签进入 Pod 页面。
4. 在右侧的操作项下单击远程登录,即可登录 Pod,在命令行窗口中执行以下 wget 命令对应 Exporter 暴露的地址,可以正常得到对应的 Nginx 指标。如发现未能得到对应的数据,请检查连接串是否正确,具体如下:
wget -qO- http://localhost:8080/metrics
执行结果如下图所示:



步骤四:添加采集任务
1. 登录 腾讯云可观测平台 Prometheus 控制台,选择对应 Prometheus 实例进入管理页面。
2. 单击数据采集 > 集成容器服务,选择已经关联的集群,通过数据采集配置 > 新建自定义监控 > YAML 编辑来添加采集配置。
3. 通过服务发现添加 PodMonitors 来定义 Prometheus 抓取任务,YAML 配置示例如下:
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: nginx-exporter # 填写一个唯一名称
namespace: cm-prometheus # 按量实例: 集群的 namesapce; 包年包月实例(已停止售卖): namespace 固定,不要修改
spec:
podMetricsEndpoints:
- interval: 30s
port: metric-port # 填写pod yaml中Prometheus Exporter对应的Port的Name
path: /metrics # 填写Prometheus Exporter对应的Path的值,不填默认/metrics
relabelings:
- action: replace
sourceLabels:
- instance
regex: (.*)
targetLabel: instance
replacement: 'crs-xxxxxx' # 调整成对应的 Nginx 实例信息
namespaceSelector: # 选择要监控pod所在的namespace
matchNames:
- nginx-demo
selector: # 填写要监控pod的Label值,以定位目标pod
matchLabels:
k8s-app: nginx-exporter


查看监控

前提条件

Prometheus 实例已绑定 Grafana 实例。

操作步骤

1. 登录 腾讯云可观测平台 Prometheus 控制台,选择对应 Prometheus 实例进入管理页面。
2. 在实例基本信息页面,找到绑定的 grafana 地址,打开并登录,然后在 middleware 文件夹中找到 nginx 实例监控面板,查看实例相关监控数据,如下图所示:




配置告警

腾讯云 Prometheus 托管服务支持告警配置,可根据业务实际的情况来添加告警策略。详情请参见 新建告警策略

附录:Nginx Exporter 采集参数说明

全局配置参数

名称
描述
web.telemetry-path
指标暴露路径,默认 /metrics
nginx.scrape-uri
nginx 指标抓取 url,默认 http://127.0.0.1:8080/stub_status
[no-]nginx.plus
是否启用 NGINX Plus,默认是启用的。
[no-]nginx.ssl-verify
是否验证 ssl 证书。
nginx.ssl-ca-cert
ssl 证书路径。
nginx.ssl-client-cert
ssl 证书路径。
nginx.ssl-client-key
ssl 证书路径。
nginx.timeout
nginx 指标抓取超时。
prometheus.const-label
将在每个指标中使用的标签。格式为 label=value,允许重复多次。
[no-]web.systemd-socket
使用 systemd 套接字监听器代替端口监听器(仅限 Linux)。
web.listen-address
监听地址,默认:9113。
web.config.file
配置文件的路径,可以启用 TLS 或身份验证(实验性参数)。
log.level
日志级别,默认 info。
log.format
日志消息的输出格式,取值范围:[logfmt,json],默认 logfmt。
version
打印版本信息。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈