一、开启 NGINX stub_status 功能
注意:说明:
因为 Nginx Prometheus Exporter 是通过 Nginx 的 stub_status 模块对其进行监控,所以需要确保 Nginx 服务打开了 stub_status 模块,具体步骤如下:
1. 登录 容器服务控制台。
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_modulemakesudo 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 -tnginx -s reload
7. 完成上述步骤之后,登录业务 Nginx 服务,执行如下命令,即可查看 Nginx 上次启动后工作状态的统计结果。
curl http://localhost:8080/stub_status ## 根据配置文件中配置内容进行相应调整
Active connections: 45server accepts handled requests1056958 1156958 4491319Reading: 0 Writing: 25 Waiting : 7
二、操作步骤
1. 登录 Prometheus 监控服务控制台。
2. 在实例列表中,选择对应的 Prometheus 实例。
3. 进入实例详情页,选择数据采集 > 集成中心。
4. 在集成中心搜索 Nginx,找到后单击它即会弹出一个安装窗口。
5. 在弹出窗口的安装页面,填写指标采集名称、地址、路径等信息,并单击保存。
三、配置说明
| 参数 | 说明 |
| 名称 | 集成名称,命名规范如下:名称具有唯一性。名称需要符合下面的正则:'^a-z0-9?(\\.a-z0-9?)*$'。 |
| 地址 | Nginx 服务的连接地址。 |
| 路径 | Nginx 服务的服务状态路径,在配置中指定 |
| 用户名 | Nginx 服务 HTTP 验证用的用户名称。 |
| 密码 | Nginx 服务 HTTP 验证用的密码。 |
| 标签 | 给指标添加自定义 Label。 |
四、方式二:自定义安装
注意:说明:
注意:为了方便安装管理 Exporter,推荐使用腾讯云 容器服务 来统一管理。
五、前提条件
·在 Prometheus 实例对应地域及私有网络(VPC)下,创建腾讯云容器服务 Kubernetes 集群,并为集群创建 命名空间。
·在 Prometheus 监控服务控制台 > 选择对应的 Prometheus 实例 > 数据采集 > 集成容器服务中找到对应容器集群完成关联集群操作。可参见指引 关联集群。
六、操作步骤
步骤一:Exporter 部署
1. 登录 容器服务控制台,在左侧菜单栏中选择集群。
2. 单击需要获取集群访问凭证的集群 ID/名称,进入该集群的管理页面。
3. 执行以下 部署 Nginx Exporter > 验证 步骤完成 Exporter 部署。
步骤二:部署 Nginx Exporter
1. 在左侧菜单中选择工作负载 > Deployment,进入 Deployment 页面。
2. 在页面右上角单击 YAML 创建资源,创建 YAML 配置,选择对应的命名空间来进行部署服务,可以通过控制台的方式创建。如下以 YAML 的方式部署 Exporter, 配置示例如下:
apiVersion: apps/v1kind: Deploymentmetadata: 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=:9113 – –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:9113/metrics
执行结果如下:
步骤四:添加采集任务
1. 登录 腾讯云可观测平台 Prometheus 控制台,选择对应 Prometheus 实例进入管理页面。
2. 选择数据采集 > 集成容器服务,选择已经关联的集群,通过数据采集配置 > 新建自定义监控 > YAML 编辑来添加采集配置。
3. 通过服务发现添加 PodMonitors 来定义 Prometheus 抓取任务,YAML 配置示例如下:
apiVersion: monitoring.coreos.com/v1 kind: PodMonitor metadata: name: nginx-exporter # 填写一个唯一名称 namespace: cm-prometheus # 按量实例: 集群的 namespace; 包年包月实例(已停止售卖): 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 托管服务支持告警配置,可根据业务实际的情况来添加告警策略。详情请参见 新建告警策略。
十、全局配置参数
| 名称 | 描述 |
| 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 | 打印版本信息。 |