集群监控有哪些方式
云容器引擎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的功能,详细的参数说明请参见自定义静态阈值规则。