You need to enable JavaScript to run this app.
导航
Ingress 服务观测
最近更新时间:2024.10.29 14:15:13首次发布时间:2024.02.28 20:05:05

容器服务提供基于社区版的 Nginx Ingress Controller,它将 Ingress 规则转换成 Nginx 的配置,并基于 Nginx 来进行七层的流量转发。同时,支持对 Nginx Ingress Controller 进行监控。本文为您介绍如何配置和查看 Nginx Ingress 的监控信息。

前提条件

操作步骤

步骤一:开启观测

  1. 登录 容器服务控制台
  2. 在左侧导航栏单击 集群,找到目标集群,单击集群名称。
  3. 在集群管理页面的左侧导航栏中,单击 观测配置,并选择 基础观测 页签。
  4. 选择 Ingress 服务 卡片,单击 启用,开启集群 Ingress 服务观测。
    alt
  5. 系统自动检查开启观测所需的必要条件。包括:工作区配置、组件状态等。
    alt
  6. 单击 开启,开启 Ingress 服务监控。

步骤二:配置采集规则

监控开启后,您可以配置采集规则,选择需要采集的目标组件、具体指标项及采集间隔。可以根据实际需求丢弃一些不用的指标。

  1. 在集群管理页面的左侧导航栏中,单击 观测配置,并选择 基础观测 页签。
  2. 选择 Ingress 服务 卡片,单击 编辑配置 并选择 指标 页签,配置采集规则,并选择具体的采集指标。
    • 在组件列表 操作 列,单击开关,开启或关闭组件的采集规则。当关闭组件的采集规则时,系统不会采该集组件的所有指标。
      alt
    • 单击组件列表 操作 栏中的 alt,支持选择或丢弃组件的具体指标,并配置面向该组件的采集间隔。
      • 采集间隔 中,选择该组件指标的采集间隔。不同组件支持的采集间隔不同。
      • 指标列表 中,勾选指标,则采集该指标。取消勾选,则丢弃该指标。单击 全部基础指标其他指标 页签,允许基于指标类型对指标项进行筛选。
        alt

        说明

        • 减小指标采集间隔,会增加单位时间内上报的指标数量,可以提升监控精度。但会增加托管 Prometheus 标准版工作区的费用。增加指标采集间隔,会减少单位时间内上报的指标数量,可以减少托管 Prometheus 标准版工作区的费用,但会降低监控精度。请根据实际需要配置。
        • 云产品的指标类型分为 基础指标其他指标,不同类型指标的计费方式不同,详情请参见 托管 Prometheus 计费方式
  3. 单击 确认,完成配置。

步骤三:配置告警

Ingress 服务暂不支持告警规则模板。如需配置告警,请参见 创建告警规则

观测看板

您可以在容器服务控制台中,查看预置的监控大盘。包括:请求总数、连接数、请求成功率、配置重载次数、CPU 趋势图、内存趋势图等。

  1. 在集群管理页面的左侧导航栏中,选择 监控中心 > 监控看板
  2. 在左侧看板列表中选择 网络服务监控 > Ingress-nginx 监控,即可查看监控大盘。
    • Namespace 下拉菜单中,选择 ingress 所在的命名空间。
    • ingressClass 下拉菜单中,选择 ingress 的类型。包括系统默认 ingress-nginx 和自定义 Nginx Ingress Controller。
    • Pod 下拉菜单中,指定具体的 Pod。
      alt

      说明

      您也可以在集群中自建 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 pathsum(increase(nginx_ingress_controller_requests{cluster="$ClusterId",controller_class=~"$IngressClass",controller_namespace=~"$Namespace",controller_pod=~"$Pod"}[15s])) by(path)
错误数趋势图 by pathsum(increase(nginx_ingress_controller_requests{cluster="$ClusterId",status!~"2..",controller_class=~"$IngressClass",controller_namespace=~"$Namespace",controller_pod=~"$Pod"}[15s])) by(path)
错误数趋势图 by http codesum(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 功能来快速查询和展示指标数据。详情请参见 指标查询