更新时间:2024-08-17 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

基础指标

发送到客户端的字节数

nginx_ingress_controller_connect_duration_seconds

基础指标

与上游服务器建立连接花费的时间

nginx_ingress_controller_header_duration_seconds

基础指标

从上游服务器接收第一个报头所花费的时间

nginx_ingress_controller_ingress_upstream_latency_seconds

基础指标

上游服务时延

nginx_ingress_controller_request_duration_seconds

基础指标

请求处理时间(以毫秒为单位)

nginx_ingress_controller_request_size

基础指标

请求长度(包括请求行、请求头和请求体)

nginx_ingress_controller_requests

基础指标

客户端请求的总数

nginx_ingress_controller_response_duration_seconds

基础指标

从上游服务器接收响应所花费的时间

nginx_ingress_controller_response_size

基础指标

响应长度(包括请求行、报头和请求体)

nginx_ingress_controller_nginx_process_connections

基础指标

当前状态为{活动,读取,写入,等待}的客户端连接数

nginx_ingress_controller_nginx_process_connections_total

基础指标

状态为{已接受,已处理}的连接总数

nginx_ingress_controller_nginx_process_cpu_seconds_total

基础指标

CPU使用率(秒)

nginx_ingress_controller_nginx_process_num_procs

基础指标

进程数

nginx_ingress_controller_nginx_process_oldest_start_time_seconds

基础指标

从1970年1月1日开始以秒为单位的开始时间

nginx_ingress_controller_nginx_process_read_bytes_total

基础指标

读取的字节数

nginx_ingress_controller_nginx_process_requests_total

基础指标

客户端请求总数

nginx_ingress_controller_nginx_process_resident_memory_bytes

基础指标

正在使用的内存字节数

nginx_ingress_controller_nginx_process_virtual_memory_bytes

基础指标

正在使用的内存字节数

nginx_ingress_controller_nginx_process_write_bytes_total

基础指标

写入字节数

nginx_ingress_controller_build_info

基础指标

一个带有常量“1”的度量,标记有关于构建的信息。

nginx_ingress_controller_check_success

基础指标

Ingress controller语法检查累计次数

nginx_ingress_controller_config_hash

基础指标

正在运行的Nginx配置hash值

nginx_ingress_controller_config_last_reload_successful

基础指标

最后一次尝试重新加载配置是否成功

nginx_ingress_controller_config_last_reload_successful_timestamp_seconds

基础指标

最后一次成功重新加载配置的时间戳

nginx_ingress_controller_ssl_certificate_info

基础指标

保留与证书相关的所有标签

nginx_ingress_controller_success

基础指标

Ingress controller重新加载操作的累计次数

nginx_ingress_controller_orphan_ingress

基础指标

孤立ingress的状态,1表示孤立ingress。

  • namespace:是用于标识ingress名称空间的字符串。
  • ingress:表示ingress名称。
  • type:表示孤立ingress的状态,取值为no-service或no-endpoint。

nginx_ingress_controller_admission_config_size

基础指标

被测试配置的大小

nginx_ingress_controller_admission_render_duration

基础指标

允许ingress渲染入口的处理持续时间(浮点秒)

nginx_ingress_controller_admission_render_ingresses

基础指标

由admission controller渲染的ingress长度

nginx_ingress_controller_admission_roundtrip_duration

基础指标

admission controller在处理新事件时的完整持续时间(浮点秒)

nginx_ingress_controller_admission_tested_duration

基础指标

admission controller测试的处理持续时间(浮点秒)

nginx_ingress_controller_admission_tested_ingresses

基础指标

admission controller处理的ingress长度

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

  • nginx_ingress_controller_success
  • nginx_ingress_controller_header_duration_seconds
  • nginx_ingress_controller_ingress_upstream_latency_seconds