监控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