容器服务提供基于社区版的 Nginx Ingress Controller,它将 Ingress 规则转换成 Nginx 的配置,并基于 Nginx 来进行七层的流量转发。同时,支持对 Nginx Ingress Controller 进行监控。本文为您介绍如何配置和查看 Nginx Ingress 的监控信息。
监控开启后,您可以配置采集规则,选择需要采集的目标组件、具体指标项及采集间隔。可以根据实际需求丢弃一些不用的指标。
说明
Ingress 服务暂不支持告警规则模板。如需配置告警,请参见 创建告警规则。
您可以在容器服务控制台中,查看预置的监控大盘。包括:请求总数、连接数、请求成功率、配置重载次数、CPU 趋势图、内存趋势图等。
说明
您也可以在集群中自建 Grafana,并通过 Grafana 查看指标和创建大盘。详情请参见 在容器服务集群中部署 Grafana 并接入工作区。
该看板的指标清单如下表所示。
看板名称 | PromQL 语句 |
---|---|
请求总数 | sum(increase(nginx_ingress_controller_nginx_process_requests_total{cluster="$ClusterId",controller_class=~"$IngressClass",controller_namespace=~"$Namespace",controller_pod=~"$Pod"}[$__range])) |
连接数 | sum(avg_over_time(nginx_ingress_controller_nginx_process_connections{cluster="$ClusterId",state="active",controller_class=~"$IngressClass",controller_namespace=~"$Namespace",controller_pod=~"$Pod"}[1m])) |
请求成功率 | sum(rate(nginx_ingress_controller_requests{cluster="$ClusterId",status!~"[4-5].*",controller_class=~"$IngressClass",controller_namespace=~"$Namespace",controller_pod=~"$Pod"}[2m])) / sum(rate(nginx_ingress_controller_requests{cluster="$ClusterId",controller_class=~"$IngressClass",controller_namespace=~"$Namespace",controller_pod=~"$Pod"}[2m])) |
配置重载次数 | avg(nginx_ingress_controller_success{cluster="$ClusterId",controller_class=~"$IngressClass",controller_namespace=~"$Namespace",controller_pod=~"$Pod"}) |
CPU 趋势图 | avg (rate (nginx_ingress_controller_nginx_process_cpu_seconds_total{cluster="$ClusterId",controller_class=~"$IngressClass",controller_namespace=~"$Namespace",controller_pod=~"$Pod"}[2m])) by(controller_pod) |
内存趋势图 | avg(nginx_ingress_controller_nginx_process_resident_memory_bytes{cluster="$ClusterId",controller_class=~"$IngressClass",controller_namespace=~"$Namespace",controller_pod=~"$Pod"}) by(controller_pod) |
流量速率趋势图 | sum (irate (nginx_ingress_controller_request_size_sum{cluster="$ClusterId",controller_class=~"$IngressClass",controller_namespace=~"$Namespace",controller_pod=~"$Pod"}[2m])) by(controller_pod) |
请求处理延迟 | histogram_quantile(0.9, sum(rate(nginx_ingress_controller_response_duration_seconds_bucket{cluster="$ClusterId",controller_class=~"$IngressClass",controller_namespace=~"$Namespace",controller_pod=~"$Pod"}[2m])) by(le,path)) |
请求趋势图 | sum(increase(nginx_ingress_controller_requests{cluster="$ClusterId",controller_class=~"$IngressClass",controller_namespace=~"$Namespace",controller_pod=~"$Pod"}[15s])) by(controller_pod) |
请求数趋势图 by path | sum(increase(nginx_ingress_controller_requests{cluster="$ClusterId",controller_class=~"$IngressClass",controller_namespace=~"$Namespace",controller_pod=~"$Pod"}[15s])) by(path) |
错误数趋势图 by path | sum(increase(nginx_ingress_controller_requests{cluster="$ClusterId",status!~"2..",controller_class=~"$IngressClass",controller_namespace=~"$Namespace",controller_pod=~"$Pod"}[15s])) by(path) |
错误数趋势图 by http code | sum(increase(nginx_ingress_controller_requests{cluster="$ClusterId",status!~"2..",controller_class=~"$IngressClass",controller_namespace=~"$Namespace",controller_pod=~"$Pod"}[15s])) by(status) |
证书过期时间 | nginx_ingress_controller_ssl_expire_time_seconds{cluster="$ClusterId",class="$IngressClass"}*1000 |
说明
如果您需要在托管 Prometheus 中的 Explore 功能或告警中心使用上述 PromQL 语句查看具体的指标或配置告警,请修改或删除语句中关于集群、节点、容器组的变量。例如:将 cluster=~"$ClusterId"
参数中的$ClusterId
变量修改为具体的集群 ID ,或直接删除该参数。
您可以使用托管 Prometheus 的 Explore 功能来快速查询和展示指标数据。详情请参见 指标查询。