# 监控NGINX Ingress控制器指标
通过Prometheus和Grafana，可以实现对NGINX Ingress控制器指标的观测。
本文以实际示例介绍如何通过Prometheus查看集群的NGINX Ingress控制器指标，具体步骤如下：
1. [访问Prometheus]
   （可选）为Prometheus绑定LoadBalancer类型的Service，支持从外部访问Prometheus。
   
2. [监控NGINX Ingress控制器指标]
   在集群中部署使用NGINX Ingress控制器时，打开"开启指标采集"开关后将自动上报NGINX Ingress控制器指标。
   
#### 前提条件
- 集群中已安装3.9.5及以上版本[云原生监控插件](https://support.huaweicloud.com/usermanual-cce/cce_10_0406.html)。
- 集群中已安装2.5.4及以上版本的[NGINX Ingress控制器](https://support.huaweicloud.com/usermanual-cce/cce_10_0034.html)插件，且已打开"开启指标采集"开关。
 
 #### 访问Prometheus
[云原生监控插件](https://support.huaweicloud.com/usermanual-cce/cce_10_0406.html)安装完成后会在集群中部署一系列工作负载和Service。其中Prometheus的Server端会在monitoring命名空间下以有状态工作负载进行部署。
您可以创建一个公网[LoadBalancer类型Service](https://support.huaweicloud.com/usermanual-cce/cce_10_0014.html)，这样就可以从外部访问Prometheus。
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，选择一个已安装Prometheus的集群，在左侧导航栏中选择"服务"。
2. 单击右上角"YAML创建"，创建一个公网LoadBalancer类型的Service。 
   ```
   apiVersion: v1
   kind: Service
   metadata:
     name: prom-lb     #服务名称，可自定义
     namespace: monitoring
     labels:
       app: prometheus
       component: server
     annotations:
       kubernetes.io/elb.id: 038ff***     #请替换为集群所在VPC下的ELB实例ID，且ELB实例为公网访问类型
   spec:
     ports:
       - name: cce-service-0
         protocol: TCP
         port: 88             #服务端口号，可自定义
         targetPort: 9090     #Prometheus的默认端口号，无需更改
     selector:                #标签选择器可根据Prometheus Server实例的标签进行调整
       app.kubernetes.io/name: prometheus
       prometheus: server
     type: LoadBalancer
   ```
   
   
3. 创建完成后在浏览器访问"负载均衡公网IP地址:服务端口"，访问Prometheus。 
   图1访问Prometheus   
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001784761474.png "点击放大")
   
   
4. 单击"Status \> Targets"，可以查看到Prometheus监控了哪些目标。 
   图2查看监控目标   
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001784601818.png "点击放大")
   
   
 
 #### 监控NGINX Ingress控制器指标
访问Prometheus，在"Graph"页面中，查看NGINX Ingress控制器指标。
图3查看NGINX Ingress控制器监控指标   
![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001834069832.png "点击放大")
表1NGINX Ingress控制器监控指标 
| 分类                    | 指标                                                                     | 指标类型   | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| 流量与请求处理类指标            | nginx_ingress_controller_bytes_sent                                      | 基础指标    | Ingress Controller发送到客户端的总字节数（包括响应的所有内容，如响应头、响应体）。 单位：字节（B）                                                                                                                                                                                                                                                                                                                                                          |
| 流量与请求处理类指标            | nginx_ingress_controller_connect_duration_seconds                       | 基础指标   | Ingress Controller与上游服务器（后端服务）建立连接所花费的时间，反映连接建立的效率。 单位：秒（s）                                                                                                                                                                                                                                                                                                                                                             |
| 流量与请求处理类指标            | nginx_ingress_controller_header_duration_seconds                        | 基础指标  | 从Ingress Controller向upstream发送请求开始，到接收上游服务器返回的第一个响应报头所花费的时间。 单位：秒（s）                                                                                                                                                                                                                                                                                                                                                  |
| 流量与请求处理类指标            | nginx_ingress_controller_ingress_upstream_latency_seconds                | 基础指标  | 上游服务器处理请求的总时延，即从Ingress Controller将请求转发给上游服务器，到上游服务器返回完整响应的时间。 单位：秒（s）                                                                                                                                                                                                                                                                                                                                              |
| 流量与请求处理类指标            | nginx_ingress_controller_request_duration_seconds                       | 基础指标   | 从客户端发送请求到 Ingress Controller，到Ingress Controller返回完整响应给客户端的总处理时间。 单位：秒（s）                                                                                                                                                                                                                                                                                                                                             |
| 流量与请求处理类指标            | nginx_ingress_controller_request_size                                    | 基础指标  | 客户端请求的总长度，包括请求行（如GET /api HTTP/1.1）、请求头（如Host: example.com）和请求体（如POST的数据）。 单位：字节（B）                                                                                                                                                                                                                                                                                                                                  |
| 流量与请求处理类指标            | nginx_ingress_controller_requests                                      | 基础指标   | Ingress Controller接收到的客户端请求总数，可按域名、路径等标签拆分统计。 单位：个                                                                                                                                                                                                                                                                                                                                                                    |
| 流量与请求处理类指标            | nginx_ingress_controller_response_duration_seconds                         | 基础指标    | 从Ingress Controller开始接收上游服务器的响应，到完全接收响应（包括所有响应体）所花费的时间。 单位：秒（s）                                                                                                                                                                                                                                                                                                                                                        |
| 流量与请求处理类指标            | nginx_ingress_controller_response_size                                     | 基础指标  | Ingress Controller返回给客户端的响应总长度，包括响应行（如HTTP/1.1 200 OK）、响应头和响应体。 单位：字节（B）                                                                                                                                                                                                                                                                                                                                               |
| 进程状态类指标                | nginx_ingress_controller_nginx_process_connections                      | 基础指标   | 当前进程的客户端连接状态统计，包含活跃连接（正在处理请求或等待响应）、正在读取客户端请求的连接、正在向客户端发送响应的连接、空闲连接（保持连接状态，等待新请求）。 单位：个                                                                                                                                                                                                                                                                                                                                  |
| 进程状态类指标                | nginx_ingress_controller_nginx_process_connections_total                | 基础指标    | 进程累计处理的连接总数，包含已接受的客户端连接数和已处理（成功建立并处理请求）的连接数。 单位：个                                                                                                                                                                                                                                                                                                                                                                      |
| 进程状态类指标                | nginx_ingress_controller_nginx_process_cpu_seconds_total                  | 基础指标  | 进程累计占用的CPU时间，反映CPU资源消耗。 单位：秒（s）                                                                                                                                                                                                                                                                                                                                                                                        |
| 进程状态类指标                | nginx_ingress_controller_nginx_process_num_procs                          | 基础指标    | 当前运行的进程数量（包括主进程和工作进程）。 单位：个                                                                                                                                                                                                                                                                                                                                                                                              |
| 进程状态类指标                | nginx_ingress_controller_nginx_process_oldest_start_time_seconds         | 基础指标  | 最旧的进程的启动时间，以Unix时间戳（从1970年1月1日00:00:00 UTC开始的秒数）表示，用于判断进程运行时长。 单位：无                                                                                                                                                                                                                                                                                                                                                |
| 进程状态类指标                | nginx_ingress_controller_nginx_process_read_bytes_total                  | 基础指标    | 进程从磁盘、网络等数据源累计读取的字节数（如读取静态文件、接收客户端请求数据）。 单位：字节（B）                                                                                                                                                                                                                                                                                                                                                                    |
| 进程状态类指标                | nginx_ingress_controller_nginx_process_requests_total                    | 基础指标   | 进程累计处理的客户端请求总数。 单位：个                                                                                                                                                                                                                                                                                                                                                                                                |
| 进程状态类指标                | nginx_ingress_controller_nginx_process_resident_memory_bytes              | 基础指标   | 进程当前使用的物理内存（驻留内存）大小，不包括交换到磁盘的内存，反映实际占用的硬件内存。 单位：字节（B）                                                                                                                                                                                                                                                                                                                                                                |
| 进程状态类指标                | nginx_ingress_controller_nginx_process_virtual_memory_bytes             | 基础指标  | 进程使用的虚拟内存总大小，包括物理内存、交换内存和未使用的地址空间，反映进程申请的内存地址范围。 单位：字节（B）                                                                                                                                                                                                                                                                                                                                                                |
| 进程状态类指标                | nginx_ingress_controller_nginx_process_write_bytes_total                  | 基础指标 | 进程累计写入到磁盘、网络等的字节数（如发送响应给客户端、写入日志文件）。 单位：字节（B）                                                                                                                                                                                                                                                                                                                                                                          |
| 控制器配置与状态类指标         | nginx_ingress_controller_build_info                                       | 基础指标    | 一个常量指标（值恒为 1），标签包含控制器的构建信息。 单位：无                                                                                                                                                                                                                                                                                                                                                                                     |
| 控制器配置与状态类指标         | nginx_ingress_controller_check_success                                   | 基础指标  | Ingress Controller对Ingress规则、Nginx配置进行语法检查的累计次数。 单位：次                                                                                                                                                                                                                                                                                                                                                              |
| 控制器配置与状态类指标         | nginx_ingress_controller_config_hash                                      | 基础指标    | 当前运行的Nginx配置文件的哈希值，用于快速判断配置是否发生变更。 单位：无                                                                                                                                                                                                                                                                                                                                                                              |
| 控制器配置与状态类指标         | nginx_ingress_controller_config_last_reload_successful                    | 基础指标  | 标记最后一次尝试重新加载配置是否成功，1表示成功，0表示失败。 单位：无                                                                                                                                                                                                                                                                                                                                                                                   |
| 控制器配置与状态类指标         | nginx_ingress_controller_config_last_reload_successful_timestamp_seconds | 基础指标   | 最后一次成功重载Nginx配置的Unix时间戳。 单位：无                                                                                                                                                                                                                                                                                                                                                                                          |
| 控制器配置与状态类指标         | nginx_ingress_controller_ssl_certificate_info                           | 基础指标  | 存储SSL证书相关的标签信息（如证书域名、过期时间、颁发者等），用于监控证书状态（如是否即将过期）。 单位：无                                                                                                                                                                                                                                                                                                                                                                |
| 控制器配置与状态类指标         | nginx_ingress_controller_success                                        | 基础指标   | Ingress Controller 累计成功执行配置重载操作的次数。 单位：次                                                                                                                                                                                                                                                                                                                                                                                 |
| 控制器配置与状态类指标         | nginx_ingress_controller_orphan_ingress                                 | 基础指标     | 标记 "孤立 Ingress" 的状态，1表示存在孤立Ingress，0表示无。孤立Ingress指规则中引用的服务（Service）或端点（Endpoint）不存在，标签包括： - namespace：是用于标识Ingress所在的命名空间。  - ingress：表示Ingress名称。  - type：表示孤立Ingress的原因，取值为no-service（表示服务不存在）或no-endpoint（表示服务无可用端点）。   |
| Admission Controller相关指标 | nginx_ingress_controller_admission_config_size                            | 基础指标   | Admission Controller测试的Ingress配置的大小。 单位：字节（B）                                                                                                                                                                                                                                                                                                                                                                           |
| Admission Controller相关指标 | nginx_ingress_controller_admission_render_duration                        | 基础指标    | Admission Controller渲染Ingress配置的处理时间。 单位：秒（s），浮点型                                                                                                                                                                                                                                                                                                                                                                   |
| Admission Controller相关指标 | nginx_ingress_controller_admission_render_ingresses                       | 基础指标    | Admission Controller成功渲染的Ingress资源数量。 单位：个                                                                                                                                                                                                                                                                                                                                                                             |
| Admission Controller相关指标 | nginx_ingress_controller_admission_roundtrip_duration                     | 基础指标    | Admission Controller处理一个完整事件（从接收请求到返回结果）的总耗时。 单位：秒（s），浮点型                                                                                                                                                                                                                                                                                                                                                              |
| Admission Controller相关指标 | nginx_ingress_controller_admission_tested_duration                      | 基础指标  | Admission Controller测试Ingress配置的处理时间。 单位：秒（s），浮点型                                                                                                                                                                                                                                                                                                                                                                       |
| Admission Controller相关指标 | nginx_ingress_controller_admission_tested_ingresses                       | 基础指标    | Admission Controller处理的Ingress资源数量。 单位：个                                                                                                                                                                                                                                                                                                                                                                                 |
| 存活指标                    | up                                                                      | 基础指标 | 被监控对象的存活状态。 - 1：正常运行状态。  - 0：不可用状态。                                                                                                                                                                                                                                                        |
   
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
Nginx Ingress在高负载请求下，开启全量指标采集存在内存泄露的问题（详情请参见[社区issue](https://github.com/kubernetes/ingress-nginx/issues/9738)）。经过验证，屏蔽以下指标后，能够有效抑制内存增长。为避免内存泄露导致业务受损，Nginx Ingress插件默认屏蔽以下指标。我们将持续关注社区最新动态，及时同步修复该问题。
- nginx_ingress_controller_header_duration_seconds
- nginx_ingress_controller_ingress_upstream_latency_seconds
 
