监控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 |
基础指标 |
发送到客户端的字节数 |
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。
|
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