集群监控有哪些方式

云容器引擎CCE配合应用运维管理AOM对集群进行全方位的监控,在创建节点时会默认安装AOM的ICAgent(在集群kube-system命名空间下名为icagent的DaemonSet),ICAgent默认采集集群底层资源以及运行在集群上负载的监控数据;另外,ICAgent还能采集负载的自定义指标监控数据。

资源监控指标

资源基础监控包含CPU/内存/磁盘等,具体请参见资源监控指标。您可以在CCE控制台从集群、节点、工作负载等维度查看这些监控指标数据,也可以在AOM中查看。

自定义指标

ICAgent采集应用程序中的自定义指标并上传到AOM。

NPD监控

node-problem-detector(简称:npd)是一款监控集群节点异常事件的插件,以及对接第三方监控平台功能的组件。它是一个在每个节点上运行的守护程序,可从不同的守护进程中搜集节点问题并将其报告给apiserver。node-problem-detector可以作为DaemonSet运行, 也可以独立运行。

CCE在NPD 1.16.0版本起做了功能增强,支持检查节点常用资源、组件状态和事件,并提供故障隔离功能。

资源监控指标

监控指标
指标含义

CPU分配率

分配给工作负载使用的CPU占比。

内存分配率

分配给工作负载使用的内存占比。

CPU使用率

CPU使用率。

内存使用率

内存使用率。

磁盘使用率

磁盘使用率。

下行速率

一般指从网络下载数据到节点的速度,单位KB/s。

上行速率

一般指从节点上传网络的速度,单位KB/s。

磁盘读取速率

每秒从磁盘读出的数据量,单位KB/s。

磁盘写入速率

每秒写入磁盘的数据量,单位KB/s。

查看集群监控数据

在集群监控界面可查看集群所有节点(不含控制节点)近一小时的CPU指标和内存指标。

监控名词解释:

  • CPU分配率 = 集群下运行的Pod CPU配额申请值(Request)之和 / 集群下所有节点(不含控制节点)的CPU可分配量之和
  • 内存分配率 = 集群下运行的Pod 内存配额申请值(Request)之和 / 集群下所有节点(不含控制节点)的内存可分配量之和
  • CPU使用率 = 集群下所有节点(不含控制节点)上实际使用的CPU使用率的平均值。
  • 内存使用率 = 集群下所有节点(不含控制节点)上实际使用的内存使用率的平均值。

查看节点监控数据

除了在集群监控界面查看所有节点监控数据外,您还可以查看单个节点的监控数据。

监控数据来源于AOM,可查看节点的监控数据包括CPU、内存、磁盘、网络、GPU等。

查看工作负载的监控数据

工作负载的监控数据可以在工作负载详情的监控页面下查看。

监控数据来源与AOM,可查看工作负载的监控数据包括CPU、内存、网络、GPU等。

监控名词解释:

  • 工作负载CPU使用率 = 工作负载各个Pod中CPU使用率的最大值
  • 工作负载内存使用率 = 工作负载各个Pod中内存使用率的最大值

查看容器实例Pod的监控数据

在工作负载详情页面的实例列表页签中可以查看Pod的监控数据。

监控名词解释:

  • Pod CPU使用率 = Pod实际使用的CPU核数 / 业务容器CPU核数限制值之和(未配置限制值时采用节点总量)
  • Pod 内存使用率 = Pod实际使用的物理内存 / 业务容器物理内存限制值之和(未配置限制值时采用节点总量)

CCE支持上传自定义指标到AOM,节点上的ICAgent会定期调用负载中配置的监控指标接口读取监控数据,然后上传到AOM上。

约束与限制

  • ICAgent兼容Prometheus的监控数据规范,Pod提供的自定义指标必须满足Prometheus的监控数据规范才能够被ICAgent采集。
  • ICAgent仅支持上报Gauge指标类型的指标。
  • ICAgent调用自定义指标的接口周期为1分钟,不支持修改。

NPD检查项

NPD的检查项主要分为事件类检查项和状态类检查项。

事件类检查项

对于事件类检查项,当问题发生时,NPD会向APIServer上报一条事件,事件类型分为Normal(正常事件)和Warning(异常事件)

故障检查项
功能

OOMKilling

监控内核日志,检查OOM事件发生并上报

典型场景:容器内进程使用的内存超过了Limt,触发OOM并终止该进程

TaskHung

监控内核日志,检查taskHung事件发生并上报

典型场景:磁盘卡IO导致进程卡住

ReadonlyFilesystem

监控内核日志,检查系统内核是否有Remount root filesystem read-only错误

典型场景:用户从ECS侧误操作卸载节点数据盘,且应用程序对该数据盘的对应挂载点仍有持续写操作,触发内核产生IO错误将磁盘重挂载为只读磁盘。

状态类检查项

对于状态类检查项,当问题发生时,NPD会向APIServer上报一条事件,并同步修改节点状态,可配合Node-problem-controller故障隔离对节点进行隔离。

系统组件检查项

故障检查项
功能

容器网络组件异常

CNIProblem

检查CNI组件(容器网络组件)运行状态

容器运行时组件异常

CRIProblem

检查节点CRI组件(容器运行时组件)Docker和Containerd的运行状态

Kubelet频繁重启

FrequentKubeletRestart

通过定期回溯系统日志,检查关键组件Kubelet是否频繁重启

Docker频繁重启

FrequentDockerRestart

通过定期回溯系统日志,检查容器运行时Docker是否频繁重启

Containerd频繁重启

FrequentContainerdRestart

通过定期回溯系统日志,检查容器运行时Containerd是否频繁重启

Kubelet服务异常

KubeletProblem

检查关键组件Kubelet的运行状态

KubeProxy异常

KubeProxyProblem

检查关键组件KubeProxy的运行状态

告警配置流程

1.在SMN创建主题。

2.创建行动策略。

3.添加告警规则。

  • 事件类告警:根据集群上报到AOM的事件配置告警。
  • 阈值类告警:实时监控环境中主机、组件等资源使用情况,根据监控指标阈值告警。

在SMN创建主题

SMN(Simple Message Notification,消息通知服务)是向订阅者主动推送消息的服务,订阅者可以是电子邮件、短信、HTTP和HTTPS等。

主题是消息发布或客户端订阅通知的特定事件类型。它作为发送消息和订阅通知的信道,为发布者和订阅者提供一个可以相互交流的通道。

您需要创建一个主题,并订阅。具体方法请参见创建主题订阅主题

创建行动策略

AOM提供告警行动策略定制功能,您可以通过创建告警行动策略关联SMN主题与消息模板,通过创建消息模板,自定义通知消息配置。

具体方法请参见创建告警行动策略。创建时选择在SMN创建主题创建并订阅的主题。

添加事件类告警

此功能为AOM的功能,详细的参数说明请参见创建事件类告警规则

添加阈值类告警

此功能为AOM的功能,详细的参数说明请参见自定义静态阈值规则