监控NGINX Ingress控制器指标
通过Prometheus和Grafana,可以实现对NGINX Ingress控制器指标的观测。
本文以实际示例介绍如何通过Prometheus查看集群的NGINX Ingress控制器指标,具体步骤如下:
- 访问Prometheus
(可选)为Prometheus绑定LoadBalancer类型的Service,支持从外部访问Prometheus。
- 监控NGINX Ingress控制器指标
在集群中部署使用NGINX Ingress控制器时,打开“开启指标采集”开关后将自动上报NGINX Ingress控制器指标。
前提条件
- 集群中已安装3.9.5及以上版本云原生监控插件插件。
- 集群中已安装2.5.4及以上版本的NGINX Ingress控制器插件,且已打开“开启指标采集”开关。
访问Prometheus
云原生监控插件安装完成后会在集群中部署一系列工作负载和Service。其中Prometheus的Server端会在monitoring命名空间下以有状态工作负载进行部署。
您可以创建一个公网LoadBalancer类型Service,这样就可以从外部访问Prometheus。
- 登录CCE控制台,选择一个已安装Prometheus的集群,在左侧导航栏中选择“服务”。
- 单击右上角“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 - 创建完成后在浏览器访问“负载均衡公网IP地址:服务端口”,访问Prometheus。图1 访问Prometheus

- 单击“Status > Targets”,可以查看到Prometheus监控了哪些目标。图2 查看监控目标

监控NGINX Ingress控制器指标
访问Prometheus,在“Graph”页面中,查看NGINX 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)不存在,标签包括:
| |
Admission Controller相关指标 | nginx_ingress_controller_admission_config_size | 基础指标 | Admission Controller测试的Ingress配置的大小。 单位:字节(B) |
nginx_ingress_controller_admission_render_duration | 基础指标 | Admission Controller渲染Ingress配置的处理时间。 单位:秒(s),浮点型 | |
nginx_ingress_controller_admission_render_ingresses | 基础指标 | Admission Controller成功渲染的Ingress资源数量。 单位:个 | |
nginx_ingress_controller_admission_roundtrip_duration | 基础指标 | Admission Controller处理一个完整事件(从接收请求到返回结果)的总耗时。 单位:秒(s),浮点型 | |
nginx_ingress_controller_admission_tested_duration | 基础指标 | Admission Controller测试Ingress配置的处理时间。 单位:秒(s),浮点型 | |
nginx_ingress_controller_admission_tested_ingresses | 基础指标 | Admission Controller处理的Ingress资源数量。 单位:个 | |
存活指标 | up | 基础指标 | 被监控对象的存活状态。
|

Nginx Ingress在高负载请求下,开启全量指标采集存在内存泄露的问题(详情请参见社区issue)。经过验证,屏蔽以下指标后,能够有效抑制内存增长。为避免内存泄露导致业务受损,Nginx Ingress插件默认屏蔽以下指标。我们将持续关注社区最新动态,及时同步修复该问题。
- nginx_ingress_controller_header_duration_seconds
- nginx_ingress_controller_ingress_upstream_latency_seconds

