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

节点监控

最近更新时间2024.02.28 20:04:51

首次发布时间2023.11.16 18:54:08

容器服务支持监控集群节点的资源状态。本文为您介绍如何配置和查看节点监控信息。

前提条件

容器服务集群已接入托管 Prometheus,并同步安装了 node-exporter 组件。详情请参见 接入托管 Prometheus

操作步骤

当您将容器服务集群正确接入托管 Prometheus,并安装了对应的组件后,需要配置对应的采集规则,才能正确采集指标。

  1. 登录 容器服务控制台
  2. 在左侧导航栏中选择 集群
  3. 在集群列表页面,单击目标集群。
  4. 在集群管理页面的左侧导航栏中,选择 监控中心 > 监控看板
  5. 在配置页面右上角,单击 指标采集配置
  6. 选择 数据面组件 页签,在组件列表 是否采集 列,单击开关,开启 node-exporter 组件的采集规则。
    alt
  7. (可选)单击组件列表 操作 栏中的 编辑指标,支持选择或丢弃组件的具体指标,并配置面向该组件的采集间隔。
    • 在 采集间隔 下拉菜单中,选择该组件指标的采集间隔。不同组件支持的采集间隔不同。
    • 在指标列表中,勾选指标,则采集该指标。取消勾选,则丢弃该指标。单击 指标类型 表头,允许基于指标类型对指标项进行筛选。
      alt

      说明

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

查看大盘

节点概览

您可以查看节点的概览信息,包括:节点内存使用率、节点 CPU 使用率、节点磁盘使用率等。支持设置查询的时间段,并指定刷新方式(手动刷新、自动刷新)。

  1. 登录 容器服务控制台
  2. 在左侧导航栏中选择 集群
  3. 在集群列表页面,单击目标集群。
  4. 在集群管理页面的左侧导航栏中,选择 监控中心 > 监控看板
  5. 在左侧看板列表中选择 节点监控 > 节点概览,即可查看监控大盘。

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. 在左侧导航栏中选择 集群
  3. 在集群列表页面,单击目标集群。
  4. 在集群管理页面的左侧导航栏中,选择 监控中心 > 监控看板
  5. 在左侧看板列表中选择 节点监控 > 节点详情监控,即可查看监控大盘。

alt

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

大盘名称PromQL 语句
节点详情监控内存总量
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 ,或直接删除该参数。

查看指标

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

配置告警

您可以在托管 Prometheus 的告警中心配置集群相关告警,包括:

  • 使用指标清单中的 PromQL 语句,配置手工告警规则,详情请参见 创建告警规则
  • 使用预置告警模版,配置告警规则组,详情请参见 创建告警规则组