更新时间:2025-08-19 GMT+08:00

监控NGINX Ingress控制器指标

通过Prometheus和Grafana,可以实现对NGINX Ingress控制器指标的观测。

本文以实际示例介绍如何通过Prometheus查看集群的NGINX Ingress控制器指标,具体步骤如下:

  1. 访问Prometheus

    (可选)为Prometheus绑定LoadBalancer类型的Service,支持从外部访问Prometheus。

  2. 监控NGINX Ingress控制器指标

    在集群中部署使用NGINX Ingress控制器时,打开“开启指标采集”开关后将自动上报NGINX Ingress控制器指标。

前提条件

访问Prometheus

云原生监控插件安装完成后会在集群中部署一系列工作负载和Service。其中Prometheus的Server端会在monitoring命名空间下以有状态工作负载进行部署。

您可以创建一个公网LoadBalancer类型Service,这样就可以从外部访问Prometheus。

  1. 登录CCE控制台,选择一个已安装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

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

    图2 查看监控目标

监控NGINX Ingress控制器指标

访问Prometheus,在“Graph”页面中,查看NGINX Ingress控制器指标。

图3 查看NGINX Ingress控制器监控指标
表1 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)不存在,标签包括:

  • namespace:是用于标识Ingress所在的命名空间。
  • ingress:表示Ingress名称。
  • type:表示孤立Ingress的原因,取值为no-service(表示服务不存在)或no-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

基础指标

被监控对象的存活状态。

  • 1:正常运行状态。
  • 0:不可用状态。

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

  • nginx_ingress_controller_header_duration_seconds
  • nginx_ingress_controller_ingress_upstream_latency_seconds