You need to enable JavaScript to run this app.
导航

Nginx Exporter 接入

最近更新时间2024.03.01 11:23:08

首次发布时间2023.05.15 15:53:28

托管 Prometheus 支持基于 exporter 的方式来监控 nginx 的运行状态,本文为您介绍如何在集群中部署 nginx-exporter,并实现对 nginx 的监控。

背景信息

nginx 应用通过 stub_status 页面暴露了部分监控指标。nginx-exporter 会采集单个 nginx 实例指标,并将其转化为 Prometheus 可用的监控数据。

前提条件

配置步骤

步骤一:开启 stub_status 功能

nginx 通过 stub_status 页面暴露 nginx 的状态数据。当您完成 nginx 部署后,需要首先检查 nginx 是否启用了该功能。

  1. 在 nginx 所在环境中,执行以下命令,检查 nginx 是否启用了 stub_status 页面。
nginx -V 2>&1 | grep -o with-http_stub_status_module

如果命令回显为 with-http_stub_status_module ,则说明 nginx 已启用 stub_status 模块。
2. 修改 nginx.conf 配置文件,指定 stub_status 页面的访问端口号和 URL 地址。

server {
 listen  8080;
 location /stub_status {
     stub_status on;
     access_log off;
 }
}
  1. 重新加载 nginx ,使得配置生效。
nginx -t
nginx -s load
  1. 配置完成后,可以在本地环境中,通过 URL 查看 nginx 的指标信息。
curl http://127.0.0.1:8080/stub_status

预期返回结果如下所示。

Active connections: 45
server accepts handled requests
1056958 1156958 4491319
Reading: 0 Writing: 25 Waiting : 7

步骤二:部署 nginx-exporter

  1. 登录 容器服务控制台
  2. 在左侧菜单栏中选择 集群,并在右侧集群列表中选择目标集群。
  3. 单击集群名称,进入集群配置页面。
  4. 在左侧菜单栏中选择 工作负载 > 无状态负载。 单击 使用 Yaml 创建 ,部署 nginx-exporter。
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-exporter # 配置 exporter 的名称
  namespace: volcano-metrics # 配置 exporter 的命名空间
  labels:
    app-name: nginx-exporter # 配置 exporter 的标签
spec:
  replicas: 1 # 配置 exporter 副本数
  selector:
    matchLabels:
      app: nginx-exporter
  template:
    metadata:
      labels:
        app: nginx-exporter
    spec:
      containers:
      - args: 
          - "-nginx.scrape-uri=http://<nginx-ip>:8080/stub_status" # 配置 exporter 抓取指标的页面路径,该路径需要与 nginx 的 stub_status 页面路径一致。
        name: nginx-exporter # 配置容器名称
        image: nginx/nginx-prometheus-exporter:latest # 拉取 Docker Hub 中的 exporter 镜像
        ports:
        - containerPort: 9113 # 配置容器端口号
          app-name: metric-port # 配置容器端口名称

步骤三:配置服务发现

  1. 在左侧菜单栏中选择 工作负载 > 对象浏览器
  2. 单击 使用 Yaml 创建 ,通过 PodMonitor 配置服务发现。
    • 类型 下拉菜单中选择 自定义
    • Yaml 配置框内输入 Yaml 配置。
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
  name: nginx-exporter # 配置 PodMonitor 的名称
  namespace: volcano-metrics # 配置 PodMonitor 的命名空间
  labels: 
    volcengine.vmp: "true" # 配置 PodMonitor 的标签,允许被 Prometheus-agent 发现
spec:
  podMetricsEndpoints:
  - interval: 30s
    port: metric-port # 填写 exporter 的容器端口名称
    path: /metrics # 填写指标暴露的 URI 路径,不填默认为 /metrics
  namespaceSelector:
    matchNames: 
    - volcano-metrics # 配置为 exporter 所在的命名空间
  selector: 
    matchLabels:
      app-name: nginx-exporter # 配置 exporter 的 Label 值,以定位和选择目标 Pod

结果验证

  1. 执行以下命令,配置 Grafana 端口映射。
kubectl port-forward service/grafana 3000:3000 -n volcano-metrics
  1. 在本地环境(Linux/Mac)中打开浏览器,在地址栏中输入 localhost:3000,进入 Grafana 登录界面,使用默认用户名admin密码admin登录。
    alt
  2. 登录 Grafana 后,创建 nginx 大盘,即可查看 nginx 信息。
    alt

    说明

    nginx-exporter 的详细参数,请参见 nginx-exporter