You need to enable JavaScript to run this app.
导航

容器服务观测

最近更新时间2024.02.28 20:05:05

首次发布时间2024.02.28 20:05:05

容器服务观测允许您监控容器服务集群的基础资源和工作状态。本文为您介绍如何配置容器服务观测功能。

说明

邀测·申请试用】:该功能目前处于 邀测 阶段,如需使用,请提交申请。

前提条件

已开启云原生观测功能,详情请参见 开启云原生观测

操作步骤

步骤一:开启观测

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

步骤二:配置采集规则

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

  1. 在集群管理页面的左侧导航栏中,单击 观测配置
  2. 选择 容器服务 卡片,单击 编辑配置 并选择 指标 页签,配置采集规则,并选择具体的采集指标。
    • 在组件列表 操作 列,单击开关,开启或关闭组件的采集规则。当关闭组件的采集规则时,系统不会采该集组件的所有指标。
      alt

      说明

      仅支持管理系统默认的采集规则和指标项。不支持管理使用 ServiceMonitor/PodMonitor 等方式配置的自定义采集规则和指标项。

    • 单击组件列表 操作 栏中的 alt,支持选择或丢弃组件的具体指标,并配置面向该组件的采集间隔。
      • 采集间隔 中,选择该组件指标的采集间隔。不同组件支持的采集间隔不同。
      • 指标列表 中,勾选指标,则采集该指标。取消勾选,则丢弃该指标。单击 全部基础指标其他指标 页签,允许基于指标类型对指标项进行筛选。
        alt

        说明

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

步骤三:配置告警

您可以基于系统预置的告警模板,快速完成容器服务集群观测的告警配置。

  1. 在集群管理页面的左侧导航栏中,单击 观测配置
  2. 选择 容器服务 卡片,单击 编辑配置 并选择 告警 页签,配置告警的相关参数。
    alt
    配置项说明
    告警模版勾选需要的告警模版,允许多选。
    告警聚合策略在下拉菜单中选择告警聚合策略。详情请参见 创建告警聚合策略
    告警通知策略在下拉菜单中选择告警通知策略。系统会使用通知策略中配置的告警等级和联系人组,将告警发送给指定的联系人。详情请参见 创建告警通知策略
  3. 单击 确定,完成配置。

说明

如果告警模板无法满足您的要求,也可以在托管 Prometheus 的告警中心配置自定义告警,详情请参见 创建告警规则

观测看板

开启集群观测并配置采集规则后,您可以查看系统预置的观测看板。

集群监控

该看板用于查看集群整体的监控信息,包括:集群节点信息(节点数量、未就绪节点数)、集群内存信息(内存使用量、内存使用率)、集群 CPU 信息(CPU 使用量、CPU 使用率)等。支持设置查询的时间段,并指定刷新方式(手动刷新、自动刷新)。

  1. 在集群管理页面的左侧导航栏中,选择 监控中心 > 监控看板
  2. 在左侧看板列表中选择 集群监控 > 集群监控概览,即可查看监控看板。

alt

该看板的指标清单如下表所示。

看板名称PromQL 语句
节点数量count(kube_node_info{cluster="$ClusterId",kernel_version!=""})
PIDPressure 节点数量count(kube_node_status_condition{cluster="$ClusterId",status="true",condition="PIDPressure"}==1) or vector(0)
MemoryPressure 节点数量count(kube_node_status_condition{cluster="$ClusterId",status="true",condition="MemoryPressure"}==1) or vector(0)
Not Ready 节点数量count(kube_node_info{cluster="$ClusterId",kernel_version!=""})-count(kube_node_status_condition{cluster="$ClusterId",condition="Ready", status="true",node!~"vci.*"} == 1)
DiskPressure 节点数量count(kube_node_status_condition{cluster="$ClusterId",status="true",condition="DiskPressure"}==1) or vector(0)
NetworkUnavailable 节点数量count(kube_node_status_condition{cluster="$ClusterId",status="true",condition="NetworkUnavailable"}==1) or vector(0)
集群内存使用sum(kube_pod_container_resource_requests{cluster="$ClusterId",resource="memory"})by(cluster)
sum(kube_pod_container_resource_limits{cluster="$ClusterId",resource="memory"})by(cluster)
sum(kube_node_status_capacity{cluster="$ClusterId",resource="memory",node!~"vci.*"})
sum(node_memory_MemTotal_bytes{cluster="$ClusterId"}-node_memory_MemAvailable_bytes{cluster="$ClusterId"})by(cluster)
集群 CPU 使用sum(kube_pod_container_resource_requests{cluster="$ClusterId",resource="cpu"})by(cluster)
sum(kube_pod_container_resource_limits{cluster="$ClusterId",resource="cpu"})by(cluster)
sum (irate(node_cpu_seconds_total{cluster="$ClusterId",mode="user"}[5m])) by(cluster)
节点内存使用率 Top 10topk(10,(node_memory_MemTotal_bytes{cluster="$ClusterId"}-node_memory_MemAvailable_bytes{cluster="$ClusterId"})/node_memory_MemTotal_bytes{cluster="$ClusterId"})*100
节点 CPU 使用率 Top 10topk(10,sum(irate(node_cpu_seconds_total{cluster="$ClusterId",mode="user"}[5m]))by(node)/count(count(node_cpu_seconds_total{cluster="$ClusterId"})by(cpu,node))by(node)*100)
节点磁盘使用率 Top 10topk(10,sum(node_filesystem_size_bytes{cluster=~"$ClusterId",device!~'rootfs'}-node_filesystem_avail_bytes{cluster=~"$ClusterId",device!~'rootfs',fstype!~'tmpfs'})by(node)/sum(node_filesystem_size_bytes{cluster=~"$ClusterId",device!~'rootfs'})by(node)*100)
节点磁盘 Read 速率 Top 10topk(10,sum(rate(node_disk_read_bytes_total{cluster=~"$ClusterId",device=~"[a-z]*[a-z]"}[5m]))by(node))
节点磁盘 Write 速率 Top 10topk(10,sum(rate(node_disk_written_bytes_total{cluster=~"$ClusterId",device=~"[a-z]*[a-z]"}[5m]))by(node))
节点网络流量(In)Top 10topk(10,sum(rate(node_network_receive_bytes_total{cluster=~"$ClusterId"}[5m]))by(node))
节点网络流量(Out)Top 10topk(10,sum(rate(node_network_transmit_bytes_total{cluster=~"$ClusterId"}[5m]))by(node))
节点 Socket 数 Top 10topk(10,node_sockstat_TCP_alloc{cluster=~"$ClusterId"})
容器组 CPU 使用 Top 10topk(10,sum(rate(container_cpu_usage_seconds_total{cluster="$ClusterId",container!=""}[5m]))by(pod))
容器组 CPU 使用率 Top 10(占 requests)topk(10,sum(rate(container_cpu_usage_seconds_total{cluster="$ClusterId",container!=""}[5m]))by(pod)/sum(kube_pod_container_resource_requests{cluster="$ClusterId",resource="cpu"})by(pod)*100)
容器组 CPU 使用率 Top 10(占 limits)topk(10,sum(rate(container_cpu_usage_seconds_total{cluster="$ClusterId",container!=""}[5m]))by(pod)/sum(kube_pod_container_resource_limits{cluster="$ClusterId",resource="cpu"})by(pod)*100)
容器组内存使用 Top 10topk(10,sum(container_memory_working_set_bytes{cluster="$ClusterId",container!=""})by (pod))
容器组内存使用率 Top 10(占 requests)topk(10,sum(container_memory_working_set_bytes{cluster="$ClusterId",container!=""})by(pod)*100/sum(kube_pod_container_resource_requests{cluster="$ClusterId",container!="",resource="memory",unit="byte"})by(pod))
容器组内存使用率 Top 10(占 limits)topk(10,sum(container_memory_working_set_bytes{cluster="$ClusterId",container!=""})by(pod)*100/sum(kube_pod_container_resource_limits{cluster="$ClusterId",container!="",resource="memory",unit="byte"})by(pod))
容器组网络流量(In)Top 10topk(10,sum(rate(container_network_receive_packets_total{cluster=~"$ClusterId",pod!=""}[5m]))by(pod))
容器组网络流量(Out)Top 10topk(10,sum(rate(container_network_transmit_packets_total{cluster=~"$ClusterId",pod!=""}[5m]))by(pod))
容器组 Socket 连接数 Top 10topk(10,sum(container_sockets{cluster="$ClusterId",pod!=""})by(pod))

说明

如果您需要在托管 Prometheus 中的 Explore 功能或告警中心使用上述 PromQL 语句查看具体的指标或配置告警,请修改或删除语句中关于集群、节点、容器组的变量。例如:将 cluster=~"$Cluster"参数中的$Cluster变量修改为具体的集群 ID ,或直接删除该参数。

集群 Namespace 监控

该看板用于查看集群命名空间维度的监控信息,包括:命名空间内 NotReady 状态的 Deploment、Statefulset、DaemonSet 数量,命名空间内的内存使用、CPU 使用和 PVC 使用信息。支持设置查询的时间段,并指定刷新方式(手动刷新、自动刷新)。

  1. 在集群管理页面的左侧导航栏中,选择 监控中心 > 监控看板
  2. 在左侧看板列表中选择 集群监控 > 集群 Namespace 监控,即可查看监控看板。

alt

该看板的指标清单如下表所示。

看板名称PromQL 语句
NotReady Deploymentcount(sum(kube_deployment_spec_replicas{cluster="$ClusterId",namespace="$Namespace"}-kube_deployment_status_replicas_ready{cluster="$ClusterId",namespace="$Namespace"} )by(deployment) !=0)or vector(0)
NotReady Statefulsetcount(sum(kube_statefulset_replicas{cluster="$ClusterId",namespace="$Namespace"}-kube_statefulset_status_replicas_ready{cluster="$ClusterId",namespace="$Namespace"} )by(statefulset)!=0)or vector(0)
NotReady DaemonSetcount(sum(kube_daemonset_status_number_unavailable{cluster="$ClusterId",namespace="$Namespace"})by(daemonset)!=0)or vector(0)
内存使用sum(kube_pod_container_resource_requests{resource="memory",cluster="$ClusterId",namespace=~"$Namespace"})by(namespace)
sum(kube_pod_container_resource_limits{resource="memory",cluster="$ClusterId",namespace=~"$Namespace"})by(namespace)
sum(rate(container_memory_working_set_bytes{cluster="$ClusterId",namespace=~"$Namespace"}[5m]))by(namespace)
CPU 使用sum(kube_pod_container_resource_requests{resource="cpu",cluster="$ClusterId",namespace=~"$Namespace"})by(namespace)
sum(kube_pod_container_resource_limits{resource="cpu",cluster="$ClusterId",namespace=~"$Namespace"})by(namespace)
sum(rate(container_cpu_usage_seconds_total{cluster="$ClusterId",namespace=~"$Namespace"}[5m]))by(namespace)
PVC 使用sum(kube_persistentvolumeclaim_resource_requests_storage_bytes{cluster="$ClusterId",namespace="$Namespace"})by(namespace)

说明

如果您需要在托管 Prometheus 中的 Explore 功能或告警中心使用上述 PromQL 语句查看具体的指标或配置告警,请修改或删除语句中关于集群、节点、容器组的变量。例如:将 cluster=~"$Cluster"参数中的$Cluster变量修改为具体的集群 ID ,或直接删除该参数。

节点概览

该看板用于查看节点的概览信息,包括:节点内存使用率、节点 CPU 使用率、节点磁盘使用率等。支持同时选择多个节点,满足节点资源使用情况对比。支持设置查询的时间段,并指定刷新方式(手动刷新、自动刷新)。

  1. 在集群管理页面的左侧导航栏中,选择 监控中心 > 监控看板
  2. 在左侧看板列表中选择 节点监控 > 节点概览,即可查看监控大盘。

alt

该看板的指标清单如下表所示。

看板名称PromQL 语句
节点内存使用率(node_memory_MemTotal_bytes{cluster="$ClusterId",node=~"$Node"}-node_memory_MemAvailable_bytes{cluster="$ClusterId",node=~"$Node"})/node_memory_MemTotal_bytes{cluster="$ClusterId",node=~"$Node"}*100
节点 CPU 使用率sum(irate(node_cpu_seconds_total{cluster="$ClusterId",node=~"$Node",mode="user"}[5m]))by(node)/count(count(node_cpu_seconds_total{cluster="$ClusterId",node=~"$Node"})by(cpu,node))by(node)*100
节点磁盘使用率sum(node_filesystem_size_bytes{cluster=~"$ClusterId",node=~"$Node",device!~'rootfs'}-node_filesystem_avail_bytes{cluster=~"$ClusterId",node=~"$Node",device!~'rootfs',fstype!~'tmpfs'})by(node)/sum(node_filesystem_size_bytes{cluster=~"$ClusterId",node=~"$Node",device!~'rootfs'})by(node)*100
节点磁盘 Read 速率sum(rate(node_disk_read_bytes_total{cluster=~"$ClusterId",node=~"$Node",device=~"[a-z]*[a-z]"}[5m]))by(node)
节点磁盘 Write 速率sum(rate(node_disk_written_bytes_total{cluster=~"$ClusterId",node=~"$Node",device=~"[a-z]*[a-z]"}[5m]))by(node)
节点网络流量(In)sum(rate(node_network_receive_bytes_total{cluster=~"$ClusterId",node=~"$Node"}[5m]))by(node)
节点网络流量(Out)sum(rate(node_network_transmit_bytes_total{cluster=~"$ClusterId",node=~"$Node"}[5m]))by(node)
节点 Socket 数node_sockstat_TCP_alloc{cluster=~"$ClusterId",node=~"$Node"}

节点详情监控

该看板用于查看指定节点的监控信息,包括:节点内存信息(内存使用量、内存使用率)、节点 CPU 信息(CPU 使用量、CPU 使用率、CPU 负载)、磁盘信息(磁盘使用率、磁盘读写 IOPS)等。支持设置查询的时间段,并指定刷新方式(手动刷新、自动刷新)。

  1. 在集群管理页面的左侧导航栏中,选择 监控中心 > 监控看板
  2. 在左侧看板列表中选择 节点监控 > 节点详情监控,即可查看监控看板。

alt

该看板的指标清单如下表所示。

看板名称PromQL 语句
内存总量kube_node_status_capacity{cluster=~"$ClusterId",node=~"$Node",resource="memory"}
CPU 总数kube_node_status_capacity{cluster=~"$ClusterId",node=~"$Node",resource="cpu"}
Pod Capacitykube_node_status_capacity{cluster=~"$ClusterId",node=~"$Node",resource="pods"}
CPU Requestssum(kube_pod_container_resource_requests{cluster="$ClusterId",resource="cpu",node=~"$Node"})by(node)
内存 Requestssum(kube_pod_container_resource_requests{cluster="$ClusterId",resource="memory",node="$Node"})by(node)
Pod 数量count(kube_pod_info{cluster="$ClusterId",node="$Node"})
节点内存使用sum(kube_pod_container_resource_requests{cluster="$ClusterId",resource="memory",node="$Node"})by(node)
sum(kube_pod_container_resource_limits{cluster="$ClusterId",resource="memory",node="$Node"})by(node)
kube_node_status_capacity{cluster="$ClusterId",resource="memory",node="$Node"}
sum(node_memory_MemTotal_bytes{cluster="$ClusterId",node="$Node"}-node_memory_MemAvailable_bytes{cluster="$ClusterId",node="$Node"})by(node)
节点 CPU 使用sum(kube_pod_container_resource_requests{cluster="$ClusterId",resource="cpu",node="$Node"})by(node)
sum(kube_pod_container_resource_limits{cluster="$ClusterId",resource="cpu",node="$Node"})by(node)
sum(kube_node_status_capacity{cluster="$ClusterId",resource="cpu",node="$Node"})by(node)
sum (irate(node_cpu_seconds_total{cluster="$ClusterId",mode="user",node="$Node"}[5m])) by(node)
节点 CPU 负载(1m、5m、15m)node_load1{cluster="$ClusterId",node="$Node"}
node_load5{cluster="$ClusterId",node="$Node"}
node_load15{cluster="$ClusterId",node="$Node"}
磁盘使用率avg((node_filesystem_size_bytes{cluster=~"$ClusterId",instance=~"$Node",device!~'rootfs'}-(node_filesystem_avail_bytes{cluster=~"$ClusterId",instance=~"$Node",device!~'rootfs',fstype!~'tmpfs'}))/node_filesystem_size_bytes{cluster=~"$ClusterId",instance=~"$Node",device!~'rootfs'}*100)by(device)
磁盘读写流量rate(node_disk_read_bytes_total{cluster=~"$ClusterId",node=~"$Node",device=~"[a-z]*[a-z]"}[5m])
rate(node_disk_written_bytes_total{cluster=~"$ClusterId",instance=~"$Node",device=~"[a-z]*[a-z]"}[5m])
磁盘 inode 使用率(node_filesystem_files{cluster=~"$ClusterId",node="$Node",device!~'rootfs',fstype!~'tmpfs'}-node_filesystem_files_free{cluster=~"$ClusterId",instance="$Node",device!~'rootfs',fstype!~'tmpfs'})/node_filesystem_files{cluster=~"$ClusterId",instance="$Node",device!~'rootfs',fstype!~'tmpfs'}*100
磁盘读写 IOPSrate(node_disk_writes_completed_total{cluster=~"$ClusterId",node=~"$Node",device=~"[a-z]*[a-z]"}[5m])
rate(node_disk_reads_completed_total{cluster=~"$ClusterId",node=~"$Node",device=~"[a-z]*[a-z]"}[5m])
TCP 连接node_sockstat_TCP_inuse{cluster="$ClusterId",node="$Node"}
node_sockstat_TCP_alloc{cluster="$ClusterId",node="$Node"}
node_sockstat_TCP_tw{cluster="$ClusterId",node="$Node"}
node_netstat_TcpExt_ListenDrops{cluster="$ClusterId",node="$Node"}
node_netstat_Tcp_ActiveOpens{cluster="$ClusterId",node="$Node"}
node_netstat_Tcp_PassiveOpens{cluster="$ClusterId",node="$Node"}
网络流入流出包速率rate(node_network_receive_packets_total{cluster=~"$ClusterId",node=~"$Node"}[5m])
rate(node_network_transmit_packets_total{cluster=~"$ClusterId",node=~"$Node"}[5m])
网络流入流出流量速率rate(node_network_receive_bytes_total{cluster=~"$ClusterId",node=~"$Node"}[5m])
rate(node_network_transmit_bytes_total{cluster=~"$ClusterId",node=~"$Node"}[5m])
网络流入流出丢包率100* sum(rate(container_network_transmit_packets_dropped_total{cluster=~"$ClusterId",node=~"$Node",pod!=""}[5m]))by(node)/sum(rate(container_network_transmit_packets_total{cluster=~"$ClusterId",node="$Node",pod!=""}[5m]))by(node)
100* sum(rate(container_network_receive_packets_dropped_total{cluster=~"$ClusterId",node=~"$Node",pod!=""}[5m]))by(node)/sum(rate(container_network_receive_packets_total{cluster=~"$ClusterId",node="$Node",pod!=""}[5m]))by(node)

说明

如果您需要在托管 Prometheus 中的 Explore 功能或告警中心使用上述 PromQL 语句查看具体的指标或配置告警,请修改或删除语句中关于集群、节点、容器组的变量。例如:将 cluster=~"$Cluster"参数中的$Cluster变量修改为具体的集群 ID ,或直接删除该参数。

无状态负载监控

该看板用于查看指定命名空间下无状态负载的监控信息,包括:实例信息(期望实例数、就绪实例数、就绪比例)、CPU 信息(CPU Request、CPU Limits)、内存信息(内存 Request、内存 Limits)、网络信息、磁盘信息等。支持设置查询的时间段,并指定刷新方式(手动刷新、自动刷新)。

  1. 在集群管理页面的左侧导航栏中,选择 监控中心 > 监控看板
  2. 在左侧看板列表中选择 工作负载监控 > 无状态负载监控,即可查看监控大盘。

alt

该看板的指标清单如下表所示。

看板名称PromQL 语句
Desired Replicasmax(kube_deployment_spec_replicas{deployment="$Deployment",namespace=~"$Namespace",cluster="$ClusterId"})
Ready Replicasmax(kube_deployment_status_replicas_available{deployment="$Deployment",namespace=~"$Namespace",cluster="$ClusterId"})
Ready Percentmax(kube_deployment_status_replicas_ready{deployment="$Deployment",namespace=~"$Namespace",cluster="$ClusterId"}) / max(kube_deployment_spec_replicas{deployment="$Deployment",namespace=~"$Namespace",cluster="$ClusterId"})
Replicasmax(kube_deployment_status_replicas{deployment="$Deployment",namespace=~"$Namespace",cluster="$ClusterId"}) without (instance, pod)
max(kube_deployment_spec_replicas{deployment="$Deployment",namespace=~"$Namespace",cluster="$ClusterId"}) without (instance, pod)
min(kube_deployment_status_replicas_ready{deployment="$Deployment",namespace=~"$Namespace",cluster="$ClusterId"}) without (instance, pod)
min(kube_deployment_status_replicas_available{deployment="$Deployment",namespace=~"$Namespace",cluster="$ClusterId"}) without (instance, pod)
min(kube_deployment_status_replicas_updated{deployment="$Deployment",namespace=~"$Namespace",cluster="$ClusterId"}) without (instance, pod)
min(kube_deployment_status_replicas_unavailable{deployment="$Deployment",namespace=~"$Namespace",cluster="$ClusterId"}) without (instance, pod)
CPU requests (Total)sum(kube_pod_container_resource_requests{namespace=~"$Namespace",cluster="$ClusterId",resource="cpu",container!=""} and ON(namespace, pod) label_join( kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="ReplicaSet"}, "replicaset", "", "owner_name") * on(replicaset, namespace) group_left(owner_name) kube_replicaset_owner{namespace=~"$Namespace",cluster="$ClusterId",owner_name="$Deployment"})
CPU limits(Total)sum(kube_pod_container_resource_limits{namespace=~"$Namespace",cluster="$ClusterId",resource="cpu",container!=""} and ON(namespace, pod) label_join( kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="ReplicaSet"}, "replicaset", "", "owner_name") * on(replicaset, namespace) group_left(owner_name) kube_replicaset_owner{namespace=~"$Namespace",cluster="$ClusterId",owner_name="$Deployment"})
内存 requests(Total)sum(kube_pod_container_resource_requests{namespace=~"$Namespace",cluster="$ClusterId",resource="memory",container!=""} and ON(namespace, pod) label_join(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="ReplicaSet"}, "replicaset", "", "owner_name") * on(replicaset, namespace) group_left(owner_name) kube_replicaset_owner{namespace=~"$Namespace",cluster="$ClusterId",owner_name="$Deployment"})
内存 limits(Total)sum(kube_pod_container_resource_limits{namespace=~"$Namespace",cluster="$ClusterId",resource="memory",container!=""} and ON(namespace, pod) label_join(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="ReplicaSet"}, "replicaset", "", "owner_name") * on(replicaset, namespace) group_left(owner_name) kube_replicaset_owner{namespace=~"$Namespace",cluster="$ClusterId",owner_name="$Deployment"})
CPU requests (Single Pod)avg(kube_pod_container_resource_requests{namespace=~"$Namespace",cluster="$ClusterId",resource="cpu",container!=""} * ON(pod, namespace) group_left avg(label_join(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="ReplicaSet"}, "replicaset", "", "owner_name") * on(replicaset, namespace) group_left(owner_name) kube_replicaset_owner{namespace=~"$Namespace",cluster="$ClusterId",owner_name="$Deployment"}) by (pod, namespace)) by (resource)
CPU limits(Single Pod)avg(kube_pod_container_resource_limits{namespace=~"$Namespace",cluster="$ClusterId",resource="cpu",container!=""} * ON(pod, namespace) group_left avg(label_join(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="ReplicaSet"}, "replicaset", "", "owner_name") * on(replicaset, namespace) group_left(owner_name) kube_replicaset_owner{namespace=~"$Namespace",cluster="$ClusterId",owner_name="$Deployment"}) by (pod, namespace)) by (resource)
CPU 用量max(rate(container_cpu_usage_seconds_total{namespace=~"$Namespace",cluster="$ClusterId", container!="", image!="" }[5m])) by (pod, container, namespace) * ON(pod, namespace) group_left avg(label_join(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="ReplicaSet"}, "replicaset", "", "owner_name") * on(replicaset, namespace) group_left(owner_name) kube_replicaset_owner{namespace=~"$Namespace",cluster="$ClusterId",owner_name="$Deployment"}) by (pod, namespace)
内存 requests(Single Pod)avg(kube_pod_container_resource_requests{namespace=~"$Namespace",cluster="$ClusterId",resource="memory",container!=""} * ON(pod, namespace) group_left avg(label_join(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="ReplicaSet"}, "replicaset", "", "owner_name") * on(replicaset, namespace) group_left(owner_name) kube_replicaset_owner{namespace=~"$Namespace",cluster="$ClusterId",owner_name="$Deployment"}) by (pod, namespace)) by (resource)
内存 limits(Single Pod)avg(kube_pod_container_resource_limits{namespace=~"$Namespace",cluster="$ClusterId",resource="memory",container!=""} * ON(pod, namespace) group_left avg(label_join(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="ReplicaSet"}, "replicaset", "", "owner_name") * on(replicaset, namespace) group_left(owner_name) kube_replicaset_owner{namespace=~"$Namespace",cluster="$ClusterId",owner_name="$Deployment"}) by (pod, namespace)) by (resource)
内存用量max by(container, pod, namespace) (container_memory_working_set_bytes{namespace=~"$Namespace",cluster="$ClusterId", container!="", image!="" }) * ON(pod, namespace) group_left avg(label_join(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="ReplicaSet"}, "replicaset", "", "owner_name") * on(replicaset, namespace) group_left(owner_name) kube_replicaset_owner{namespace=~"$Namespace",cluster="$ClusterId",owner_name="$Deployment"}) by (pod, namespace)
CPU 使用百分比(max(rate(container_cpu_usage_seconds_total{namespace=~"$Namespace",cluster="$ClusterId", container!="", image!="" }[5m])) by(container, pod, namespace)/max by(container, pod, namespace) (kube_pod_container_resource_limits{resource="cpu", namespace=~"$Namespace",cluster="$ClusterId"})) * ON(pod, namespace) group_left avg(label_join(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="ReplicaSet"}, "replicaset", "", "owner_name") * on(replicaset, namespace) group_left(owner_name) kube_replicaset_owner{namespace=~"$Namespace",cluster="$ClusterId",owner_name="$Deployment"}) by (pod, namespace)
(max(rate(container_cpu_usage_seconds_total{namespace=~"$Namespace",cluster="$ClusterId", container!="", image!="" }[5m])) by(container, pod, namespace)/max by(container, pod, namespace) (kube_pod_container_resource_requests{resource="cpu", namespace=~"$Namespace",cluster="$ClusterId"})) * ON(pod, namespace) group_left avg(label_join(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="ReplicaSet"}, "replicaset", "", "owner_name") * on(replicaset, namespace) group_left(owner_name) kube_replicaset_owner{namespace=~"$Namespace",cluster="$ClusterId",owner_name="$Deployment"}) by (pod, namespace)
内存使用百分比(max by(container, pod, namespace) (container_memory_working_set_bytes{namespace=~"$Namespace",cluster="$ClusterId", container!="", image!="" })/max by(container, pod, namespace) (kube_pod_container_resource_limits{resource="memory", namespace=~"$Namespace",cluster="$ClusterId"})) * ON(pod, namespace) group_left avg(label_join(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="ReplicaSet"}, "replicaset", "", "owner_name") * on(replicaset, namespace) group_left(owner_name) kube_replicaset_owner{namespace=~"$Namespace",cluster="$ClusterId",owner_name="$Deployment"}) by (pod, namespace)
(max by(container, pod, namespace) (container_memory_working_set_bytes{namespace=~"$Namespace",cluster="$ClusterId", container!="", image!="" })/max by(container, pod, namespace) (kube_pod_container_resource_requests{resource="memory", namespace=~"$Namespace",cluster="$ClusterId"})) * ON(pod, namespace) group_left avg(label_join(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="ReplicaSet"}, "replicaset", "", "owner_name") * on(replicaset, namespace) group_left(owner_name) kube_replicaset_owner{namespace=~"$Namespace",cluster="$ClusterId",owner_name="$Deployment"}) by (pod, namespace)
网络流量sum(rate(container_network_receive_bytes_total{namespace=~"$Namespace",cluster="$ClusterId"}[5m])) by (pod, namespace) * ON(pod, namespace) group_left avg(label_join(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="ReplicaSet"}, "replicaset", "", "owner_name") * on(replicaset, namespace) group_left(owner_name) kube_replicaset_owner{namespace=~"$Namespace",cluster="$ClusterId",owner_name="$Deployment"}) by (pod, namespace)
sum(rate(container_network_transmit_bytes_total{namespace=~"$Namespace",cluster="$ClusterId"}[5m])) by (pod, namespace) * ON(pod, namespace) group_left avg(label_join(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="ReplicaSet"}, "replicaset", "", "owner_name") * on(replicaset, namespace) group_left(owner_name) kube_replicaset_owner{namespace=~"$Namespace",cluster="$ClusterId",owner_name="$Deployment"}) by (pod, namespace)
磁盘 IOmax(rate(container_fs_reads_bytes_total{namespace=~"$Namespace",cluster="$ClusterId", container!=""}[5m])) by (pod,container, namespace) * ON(pod, namespace) group_left avg(label_join(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="ReplicaSet"}, "replicaset", "", "owner_name") * on(replicaset, namespace) group_left(owner_name) kube_replicaset_owner{namespace=~"$Namespace",cluster="$ClusterId",owner_name="$Deployment"}) by (pod, namespace)
max(rate(container_fs_writes_bytes_total{namespace=~"$Namespace",cluster="$ClusterId", container!=""}[5m])) by (pod,container, namespace) * ON(pod, namespace) group_left avg(label_join(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="ReplicaSet"}, "replicaset", "", "owner_name") * on(replicaset, namespace) group_left(owner_name) kube_replicaset_owner{namespace=~"$Namespace",cluster="$ClusterId",owner_name="$Deployment"}) by (pod, namespace)

有状态负载监控

该看板用于查看指定命名空间下有状态负载的监控信息,包括:实例信息(期望实例数、就绪实例数、就绪比例)、CPU 信息(CPU Request、CPU Limits)、内存信息(内存 Request、内存 Limits)、网络信息、磁盘信息等。支持设置查询的时间段,并指定刷新方式(手动刷新、自动刷新)。

  1. 在集群管理页面的左侧导航栏中,选择 监控中心 > 监控看板
  2. 在左侧看板列表中选择 工作负载监控 > 有状态负载监控,即可查看监控大盘。

alt

该看板的指标清单如下表所示。

看板名称PromQL 语句
Desired Replicasmax(kube_statefulset_replicas{statefulset="$StatefulSet",namespace=~"$Namespace",cluster="$ClusterId"})
Ready Replicasmax(kube_statefulset_status_replicas_ready{statefulset="$StatefulSet",namespace=~"$Namespace",cluster="$ClusterId"})
Ready Percentmax(kube_statefulset_status_replicas_ready{statefulset="$StatefulSet",namespace=~"$Namespace",cluster="$ClusterId"}) / max(kube_statefulset_replicas{statefulset="$StatefulSet",namespace=~"$Namespace",cluster="$ClusterId"})
Replicasmax(kube_statefulset_replicas{statefulset="$StatefulSet",namespace=~"$Namespace",cluster="$ClusterId"}) without (instance, pod)
max(kube_statefulset_status_replicas{statefulset="$StatefulSet",namespace=~"$Namespace",cluster="$ClusterId"}) without (instance, pod)
min(kube_statefulset_status_replicas_ready{statefulset="$StatefulSet",namespace=~"$Namespace",cluster="$ClusterId"}) without (instance, pod)
min(kube_statefulset_status_replicas_available{statefulset="$StatefulSet",namespace=~"$Namespace",cluster="$ClusterId"}) without (instance, pod)
min(kube_statefulset_status_replicas_updated{statefulset="$StatefulSet",namespace=~"$Namespace",cluster="$ClusterId"}) without (instance, pod)
CPU requests (Total)sum(kube_pod_container_resource_requests{namespace=~"$Namespace",cluster="$ClusterId",resource="cpu",container!=""} and ON(namespace, pod) kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="StatefulSet", owner_name="$StatefulSet"})
CPU limits(Total)sum(kube_pod_container_resource_limits{namespace=~"$Namespace",cluster="$ClusterId",resource="cpu",container!=""} and ON(namespace, pod) kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="StatefulSet", owner_name="$StatefulSet"})
内存 requests(Total)sum(kube_pod_container_resource_requests{namespace=~"$Namespace",cluster="$ClusterId",resource="memory",container!=""} and ON(namespace, pod) kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="StatefulSet", owner_name="$StatefulSet"})
内存 limits(Total)sum(kube_pod_container_resource_limits{namespace=~"$Namespace",cluster="$ClusterId",resource="memory",container!=""} and ON(namespace, pod) kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="StatefulSet", owner_name="$StatefulSet"})
CPU requests (Single Pod)avg(kube_pod_container_resource_requests{namespace=~"$Namespace",cluster="$ClusterId",resource="cpu",container!=""} * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="StatefulSet", owner_name="$StatefulSet"}) by (pod, namespace)) by (resource)
CPU limits(Single Pod)avg(kube_pod_container_resource_limits{namespace=~"$Namespace",cluster="$ClusterId",resource="cpu",container!=""} * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="StatefulSet", owner_name="$StatefulSet"}) by (pod, namespace)) by (resource)
CPU 用量max(rate(container_cpu_usage_seconds_total{namespace=~"$Namespace",cluster="$ClusterId", container!="", image!="" }[5m])) by (pod, container, namespace) * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="StatefulSet", owner_name="$StatefulSet"}) by (pod, namespace)
内存 requests(Single Pod)avg(kube_pod_container_resource_requests{namespace=~"$Namespace",cluster="$ClusterId",resource="memory",container!=""} * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="StatefulSet", owner_name="$StatefulSet"}) by (pod, namespace)) by (resource)
内存 limits(Single Pod)avg(kube_pod_container_resource_limits{namespace=~"$Namespace",cluster="$ClusterId",resource="memory",container!=""} * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="StatefulSet", owner_name="$StatefulSet"}) by (pod, namespace)) by (resource)
内存用量max by(container, pod, namespace) (container_memory_working_set_bytes{namespace=~"$Namespace",cluster="$ClusterId", container!="", image!="" }) * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="StatefulSet", owner_name="$StatefulSet"}) by (pod, namespace)
CPU 使用百分比(max(rate(container_cpu_usage_seconds_total{namespace=~"$Namespace",cluster="$ClusterId", container!="", image!="" }[5m])) by(container, pod, namespace)/max by(container, pod, namespace) (kube_pod_container_resource_limits{resource="cpu", namespace=~"$Namespace",cluster="$ClusterId"})) * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="StatefulSet", owner_name="$StatefulSet"}) by (pod, namespace)
(max(rate(container_cpu_usage_seconds_total{namespace=~"$Namespace",cluster="$ClusterId", container!="", image!="" }[5m])) by(container, pod, namespace)/max by(container, pod, namespace) (kube_pod_container_resource_requests{resource="cpu", namespace=~"$Namespace",cluster="$ClusterId"})) * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="StatefulSet", owner_name="$StatefulSet"}) by (pod, namespace)
内存使用百分比(max by(container, pod, namespace) (container_memory_working_set_bytes{namespace=~"$Namespace",cluster="$ClusterId", container!="", image!="" })/max by(container, pod, namespace) (kube_pod_container_resource_limits{resource="memory", namespace=~"$Namespace",cluster="$ClusterId"})) * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="StatefulSet", owner_name="$StatefulSet"}) by (pod, namespace)
(max by(container, pod, namespace) (container_memory_working_set_bytes{namespace=~"$Namespace",cluster="$ClusterId", container!="", image!="" })/max by(container, pod, namespace) (kube_pod_container_resource_requests{resource="memory", namespace=~"$Namespace",cluster="$ClusterId"})) * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="StatefulSet", owner_name="$StatefulSet"}) by (pod, namespace)
网络流量sum(rate(container_network_receive_bytes_total{namespace=~"$Namespace",cluster="$ClusterId"}[5m])) by (pod, namespace) * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="StatefulSet", owner_name="$StatefulSet"}) by (pod, namespace)
sum(rate(container_network_transmit_bytes_total{namespace=~"$Namespace",cluster="$ClusterId"}[5m])) by (pod, namespace) * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="StatefulSet", owner_name="$StatefulSet"}) by (pod, namespace)
磁盘 IOmax(rate(container_fs_reads_bytes_total{namespace=~"$Namespace",cluster="$ClusterId", container!=""}[5m])) by (pod,container, namespace) * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="StatefulSet", owner_name="$StatefulSet"}) by (pod, namespace)
max(rate(container_fs_writes_bytes_total{namespace=~"$Namespace",cluster="$ClusterId", container!=""}[5m])) by (pod,container, namespace) * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="StatefulSet", owner_name="$StatefulSet"}) by (pod, namespace)

守护进程监控

该看板用于查看指定命名空间下守护进程的监控信息,包括:CPU 信息(CPU Request、CPU Limits)、内存信息(内存 Request、内存 Limits)、网络信息、磁盘信息等。支持设置查询的时间段,并指定刷新方式(手动刷新、自动刷新)。

  1. 在集群管理页面的左侧导航栏中,选择 监控中心 > 监控看板
  2. 在左侧看板列表中选择 工作负载监控 > 有状态负载监控,即可查看监控大盘。

alt

该看板的指标清单如下表所示。

看板名称PromQL 语句
CPU requests (Total)sum(kube_pod_container_resource_requests{namespace=~"$Namespace",cluster="$ClusterId",resource="cpu",container!=""} and ON(namespace, pod) kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="DaemonSet", owner_name="$DaemonSet"})
CPU limits(Total)sum(kube_pod_container_resource_limits{namespace=~"$Namespace",cluster="$ClusterId",resource="cpu",container!=""} and ON(namespace, pod) kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="DaemonSet", owner_name="$DaemonSet"})
内存 requests(Total)sum(kube_pod_container_resource_requests{namespace=~"$Namespace",cluster="$ClusterId",resource="memory",container!=""} and ON(namespace, pod) kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="DaemonSet", owner_name="$DaemonSet"})
内存 limits(Total)sum(kube_pod_container_resource_limits{namespace=~"$Namespace",cluster="$ClusterId",resource="memory",container!=""} and ON(namespace, pod) kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="DaemonSet", owner_name="$DaemonSet"})
CPU requests (Single Pod)avg(kube_pod_container_resource_requests{namespace=~"$Namespace",cluster="$ClusterId",resource="cpu",container!=""} * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="DaemonSet", owner_name="$DaemonSet"}) by (pod, namespace)) by (resource)
CPU limits(Single Pod)avg(kube_pod_container_resource_limits{namespace=~"$Namespace",cluster="$ClusterId",resource="cpu",container!=""} * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="DaemonSet", owner_name="$DaemonSet"}) by (pod, namespace)) by (resource)
CPU 用量max(rate(container_cpu_usage_seconds_total{namespace=~"$Namespace",cluster="$ClusterId", container!="", image!="" }[5m])) by (pod, container, namespace) * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="DaemonSet", owner_name="$DaemonSet"}) by (pod, namespace)
内存 requests(Single Pod)avg(kube_pod_container_resource_requests{namespace=~"$Namespace",cluster="$ClusterId",resource="memory",container!=""} * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="DaemonSet", owner_name="$DaemonSet"}) by (pod, namespace)) by (resource)
内存 limits(Single Pod)avg(kube_pod_container_resource_limits{namespace=~"$Namespace",cluster="$ClusterId",resource="memory",container!=""} * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="DaemonSet", owner_name="$DaemonSet"}) by (pod, namespace)) by (resource)
内存用量max by(container, pod, namespace) (container_memory_working_set_bytes{namespace=~"$Namespace",cluster="$ClusterId", container!="", image!="" }) * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="DaemonSet", owner_name="$DaemonSet"}) by (pod, namespace)
CPU 使用百分比(max(rate(container_cpu_usage_seconds_total{namespace=~"$Namespace",cluster="$ClusterId", container!="", image!="" }[5m])) by(container, pod, namespace)/max by(container, pod, namespace) (kube_pod_container_resource_limits{resource="cpu", namespace=~"$Namespace",cluster="$ClusterId"})) * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="DaemonSet", owner_name="$DaemonSet"}) by (pod, namespace)
(max(rate(container_cpu_usage_seconds_total{namespace=~"$Namespace",cluster="$ClusterId", container!="", image!="" }[5m])) by(container, pod, namespace)/max by(container, pod, namespace) (kube_pod_container_resource_requests{resource="cpu", namespace=~"$Namespace",cluster="$ClusterId"})) * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="DaemonSet", owner_name="$DaemonSet"}) by (pod, namespace)
内存使用百分比(max by(container, pod, namespace) (container_memory_working_set_bytes{namespace=~"$Namespace",cluster="$ClusterId", container!="", image!="" })/max by(container, pod, namespace) (kube_pod_container_resource_limits{resource="memory", namespace=~"$Namespace",cluster="$ClusterId"})) * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="DaemonSet", owner_name="$DaemonSet"}) by (pod, namespace)
(max by(container, pod, namespace) (container_memory_working_set_bytes{namespace=~"$Namespace",cluster="$ClusterId", container!="", image!="" })/max by(container, pod, namespace) (kube_pod_container_resource_requests{resource="memory", namespace=~"$Namespace",cluster="$ClusterId"})) * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="DaemonSet", owner_name="$DaemonSet"}) by (pod, namespace)
网络流量sum(rate(container_network_receive_bytes_total{namespace=~"$Namespace",cluster="$ClusterId"}[5m])) by (pod, namespace) * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="DaemonSet", owner_name="$DaemonSet"}) by (pod, namespace)
sum(rate(container_network_transmit_bytes_total{namespace=~"$Namespace",cluster="$ClusterId"}[5m])) by (pod, namespace) * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="DaemonSet", owner_name="$DaemonSet"}) by (pod, namespace)
磁盘 IOmax(rate(container_fs_reads_bytes_total{namespace=~"$Namespace",cluster="$ClusterId" , container!=""}[5m])) by (pod,container, namespace) * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="DaemonSet", owner_name="$DaemonSet"}) by (pod, namespace)
max(rate(container_fs_writes_bytes_total{namespace=~"$Namespace",cluster="$ClusterId" , container!=""}[5m])) by (pod,container, namespace) * ON(pod, namespace) group_left avg(kube_pod_owner{namespace=~"$Namespace",cluster="$ClusterId", owner_kind="DaemonSet", owner_name="$DaemonSet"}) by (pod, namespace)

容器组监控

该看板用于查看指定命名空间下容器组(Pod)的监控信息,包括:Pod 内存信息(内存使用量、内存使用率)、Pod CPU 信息(CPU 使用量、CPU 使用率)、Pod 网络信息(流入速率、流出速率)等。支持设置查询的时间段,并指定刷新方式(手动刷新、自动刷新)。

  1. 在集群管理页面的左侧导航栏中,选择 监控中心 > 监控看板
  2. 在左侧看板列表中选择 工作负载监控 > 容器组监控,即可查看监控看板。

alt

说明

您可以查看单个容器组的监控信息,也可以选择 All,查看全部容器组的监控信息。

该看板的指标清单如下表所示。

看板名称PromQL 语句
CPU requestssum(kube_pod_container_resource_requests{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod",resource="cpu"})
CPU limitssum(kube_pod_container_resource_limits{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod",resource="cpu"})
内存 requestssum(kube_pod_container_resource_requests{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod",resource="memory"})
内存使用 Top 10topk(10,sum(container_memory_working_set_bytes{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod",container!=""})by (pod))
内存使用率 Top 10(占 limits)topk(10,sum(container_memory_working_set_bytes{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod",container!=""})by(pod)*100/sum(kube_pod_container_resource_limits{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod",container!="",resource="memory",unit="byte"})by(pod))
内存 limitssum(kube_pod_container_resource_limits{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod",resource="memory"})
CPU 使用 Top 10topk(10,sum(rate(container_cpu_usage_seconds_total{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod",container!=""}[5m]))by(pod))
CPU 使用率 Top 10(占 limits)(sum(rate(container_cpu_usage_seconds_total{cluster="$ClusterId",namespace="$Namespace",pod=~"$Pod",container!=""}[5m]))by(pod)/sum(kube_pod_container_resource_limits{cluster="$ClusterId",namespace="$Namespace",pod=~"$Pod",resource="cpu",container!=""})by(pod))*100
内存错误数sum(container_memory_failcnt{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod"})by(pod)
网络 IO Top 10topk(10,sum(rate(container_network_receive_bytes_total{cluster=~"$ClusterId",pod=~"$Pod",namespace=~"$Namespace"}[5m]))by (pod))
topk(10,sum(rate(container_network_transmit_bytes_total{cluster=~"$ClusterId",pod=~"$Pod",namespace=~"$Namespace"}[5m]))by (pod))
CPU 负载 Top 10(10s)sum(container_cpu_load_average_10s{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod"})by(pod)
网络错误数 Top 10topk(10,sum(rate(container_network_receive_errors_total{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod"}[5m]))by(pod))
topk(10,sum(rate(container_network_transmit_errors_total{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod"}[5m]))by(pod))
Socket 连接数 Top 10topk(10,sum(container_sockets{cluster=~"$ClusterId",pod=~"$Pod",namespace=~"$Namespace"})by(pod))
网络丢包 Top 10topk(10,sum(rate(container_network_receive_packets_dropped_total{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod"}[5m]))by(pod))
topk(10,sum(rate(container_network_transmit_packets_dropped_total{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod"}[5m]))by(pod))
磁盘读写 IO Top 10topk(10,sum(rate(container_fs_reads_bytes_total{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod"}[5m]))by(pod))
topk(10,sum(rate(container_fs_writes_bytes_total{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod"}[5m]))by(pod))
进程数 Top 10topk(10,sum(container_processes{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod"}) by(pod))

说明

如果您需要在托管 Prometheus 中的 Explore 功能或告警中心使用上述 PromQL 语句查看具体的指标或配置告警,请修改或删除语句中关于集群、节点、容器组的变量。例如:将 cluster=~"$Cluster"参数中的$Cluster变量修改为具体的集群 ID ,或直接删除该参数。

容器监控

该看板用于查看指定命名空间下容器(Container)的监控信息,包括:Container 内存信息(内存使用量、内存使用率)、Container CPU 信息(CPU 使用量、CPU 使用率)等。支持设置查询的时间段,并指定刷新方式(手动刷新、自动刷新)。

  1. 在集群管理页面的左侧导航栏中,选择 监控中心 > 监控看板
  2. 在左侧看板列表中选择 工作负载监控 > 容器监控,即可查看监控看板。

alt

说明

您可以查看单个 Container 的监控信息,也可以选择 All,查看所有 Container 的监控信息。

该看板的指标清单如下表所示。

看板名称PromQL 语句
容器内存使用kube_pod_container_resource_requests{resource="memory",cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod",container=~"$Container",container!=""}
kube_pod_container_resource_limits{resource="memory",cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod",container=~"$Container",container!=""}
sum(container_memory_working_set_bytes{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod",container=~"$Container",container!=""})by(container)
容器 CPU 使用kube_pod_container_resource_requests{resource="cpu",cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod",container=~"$Container",container!=""}
kube_pod_container_resource_limits{resource="cpu",cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod",container=~"$Container",container!=""}
irate(container_cpu_usage_seconds_total{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod",container=~"$Container",container!=""}[5m])
容器进程container_processes{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod",container=~"$Container",container!=""}
打开文件数container_file_descriptors{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod",container=~"$Container",container!=""}
重启次数kube_pod_container_status_restarts_total{cluster="$ClusterId",namespace=~"$Namespace",pod=~"$Pod",container=~"$Container",container!=""}

说明

如果您需要在托管 Prometheus 中的 Explore 功能或告警中心使用上述 PromQL 语句查看具体的指标或配置告警,请修改或删除语句中关于集群、节点、容器组的变量。例如:将 cluster=~"$Cluster"参数中的$Cluster变量修改为具体的集群 ID ,或直接删除该参数。

存储监控

您可以查看命名空间下所有或指定 PVC 的监控信息,包括:容量使用率和 inode 使用率。支持设置查询的时间段,并指定刷新方式(手动刷新、自动刷新)。

  1. 在集群管理页面的左侧导航栏中,选择 监控中心 > 监控看板
  2. 在左侧看板列表中选择 存储服务监控 > 存储卷声明监控,即可查看监控大盘。

alt

该看板的指标清单如下表所示。

看板名称指标单位PromQL 语句
容量使用率%(kubelet_volume_stats_used_bytes{cluster="$clusterId",namespace="$namespace",persistentvolumeclaim=~"$pvc"}/kubelet_volume_stats_capacity_bytes{cluster="$clusterId",namespace="$namespace",persistentvolumeclaim=~"$pvc"})*100
inode 使用率%(kubelet_volume_stats_inodes_used{cluster="$clusterId",namespace="$namespace",persistentvolumeclaim=~"$pvc"}/(kubelet_volume_stats_inodes{cluster="$clusterId",namespace="$namespace",persistentvolumeclaim=~"$pvc"}))*100

说明

如果您需要在托管 Prometheus 中的 Explore 功能或告警中心使用上述 PromQL 语句查看具体的指标或配置告警,请修改或删除语句中关于集群、节点、容器组的变量。例如:将 cluster=~"$Cluster"参数中的$Cluster变量修改为具体的集群 ID ,或直接删除该参数。

查看指标

您可以使用托管 Prometheus 的 Explore 功能来快速查询和展示指标数据。详情请参见 指标查询