文档首页/ 云容器引擎 CCE/ 用户指南/ 可观测性/ 告警中心/ 通过告警中心一键配置告警
更新时间:2024-09-04 GMT+08:00
分享

通过告警中心一键配置告警

告警中心基于AOM告警功能,提供集群内置告警一键开启能力,在集群发生故障时能够及时发现并预警,协助您维护业务稳定性。智能告警中心可有效节省您在AOM侧手动配置告警规则的工作量,并且内置的告警规则基于华为云容器团队大规模集群运维经验,能够满足您的日常运维所需,覆盖容器服务异常事件告警、集群相关基础资源的关键指标告警及集群中应用的指标告警。

约束与限制

  • 集群版本仅支持v1.17及以上。
  • 仅华为云/华为账号,或者拥有CCE Administrator权限或CCE FullAccess权限的IAM用户可进行告警中心所有操作。CCE ReadOnlyAccess权限的IAM用户可以查看所有资源信息,但是无法进行任何操作。

开启告警中心

CCE Standard集群和CCE Turbo集群均支持开启告警中心。

  1. 在目标集群左侧导航栏选择“告警中心”。
  2. 选择“告警规则”页签,单击“开启告警中心”,在弹出的页面中选择一个或多个联系组,以便分组管理订阅终端并接收告警消息。如果当前还没有联系组,请参考配置告警通知人进行创建。
  3. 单击“确认”完成功能开启。

    告警中心中的指标类告警规则依赖云原生监控插件上报指标数据到AOM Prometheus实例,需要开通监控中心。当您的集群未安装插件或者在安装插件时未对接AOM Prometheus实例,告警中心将不会创建指标类告警规则。开通监控中心请参考开通监控中心

    表1中使用problem_gauge指标的指标类告警规则依赖CCE节点故障检测插件(NPD)。如需要使用相关的告警规则,请确保节点故障检测插件(NPD)已安装且正常运行。

    表1中的事件类告警依赖日志中心开启收集Kubernetes事件的能力,详情请参见采集Kubernetes事件

配置告警规则

CCE Standard集群、CCE Turbo集群开启智能告警中心后,可以进行告警规则的配置和管理。

  1. 登录CCE控制台。
  2. 在集群列表页面,单击目标集群名称进入详情页。
  3. 在左侧导航栏选择“告警中心”,选择“告警规则”页签,在此处进行告警规则的配置和管理。

    智能告警中心功能会默认生成容器场景下的告警规则模板(包含异常事件告警、异常指标告警)。告警规则被分类为若干个告警规则集,您可以为告警规则集关联多个联系组,并开启或关闭告警项。告警规则集中包含多个告警规则,一个告警规则对应单个异常的检查项。关于默认告警规则模板,请参见表1

表1 默认告警规则

告警规则类型

告警项

告警说明

告警类型

依赖项

PromQL/事件名称

负载规则集

Pod状态异常

检查Pod状态是否异常

指标类

云原生监控插件

sum(min_over_time(kube_pod_status_phase{phase=~"Pending|Unknown|Failed"}[10m]) and count_over_time(kube_pod_status_phase{phase=~"Pending|Unknown|Failed"}[10m]) > 18 )by (namespace,pod, phase, cluster_name, cluster) > 0

Pod频繁重启

检查Pod是否频繁重启

指标类

云原生监控插件

increase(kube_pod_container_status_restarts_total[5m]) > 3

Deployment副本数不匹配

检查无状态负载的副本数是否匹配

指标类

云原生监控插件

(kube_deployment_spec_replicas != kube_deployment_status_replicas_available ) and ( changes(kube_deployment_status_replicas_updated[5m]) == 0)

Statefulset副本数不匹配

检查有状态负载的副本数是否匹配

指标类

云原生监控插件

(kube_statefulset_status_replicas_ready != kube_statefulset_status_replicas) and (changes(kube_statefulset_status_replicas_updated[5m]) == 0)

容器CPU使用率大于百分之八十

检查容器CPU使用率是否大于80%

指标类

云原生监控插件

100 * (sum(rate(container_cpu_usage_seconds_total{image!="", container!="POD"}[1m])) by (cluster_name,pod,node,namespace,container, cluster) / sum(kube_pod_container_resource_limits{resource="cpu"}) by (cluster_name,pod,node,namespace,container, cluster)) > 80

容器内存使用率大于百分之八十

检查容器内存使用率是否大于80%

指标类

云原生监控插件

(sum(container_memory_working_set_bytes{image!="", container!="POD"}) BY (cluster_name, node,container, pod , namespace, cluster) / sum(container_spec_memory_limit_bytes > 0) BY (cluster_name, node, container, pod , namespace, cluster) * 100) > 80

容器状态异常

检查容器状态是否异常

指标类

云原生监控插件

sum by (namespace, pod, container, cluster_name, cluster) (kube_pod_container_status_waiting_reason) > 0

更新负载均衡失败

检查更新负载均衡是否成功

事件类

云原生日志采集插件

不涉及

Pod内存不足OOM

检查Pod是否OOM

事件类

节点故障检测插件(1.18.41及以上版本)

云原生日志采集插件(1.3.2及以上版本)

PodOOMKilling

节点资源规则集

Kube持久卷使用率高

检查节点上持久卷使用率是否过高

指标类

云原生监控插件

(kubelet_volume_stats_available_bytes{job="kubelet"} / kubelet_volume_stats_capacity_bytes{job="kubelet"}) < 0.03 and kubelet_volume_stats_used_bytes{job="kubelet"} > 0

Kube持久卷声明状态异常

检查持久卷声明状态是否异常

指标类

云原生监控插件

kube_persistentvolumeclaim_status_phase{phase=~"Failed|Pending|Lost"} > 0

Kube持久卷状态异常

检查持久卷状态是否异常

指标类

云原生监控插件

kube_persistentvolume_status_phase{phase=~"Failed|Pending"} > 0

节点CPU使用率超过百分之八十

检查节点CPU使用率是否大于80%

指标类

云原生监控插件

100 - (avg by(node, cluster_name, cluster) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) > 80

节点内存可用率不足百分之十

检查节点可用内存是否不足10%

指标类

云原生监控插件

node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 10

节点磁盘可用率不足百分之十

检查节点可用磁盘是否不足10%

指标类

云原生监控插件

avg((node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes) by (device, node, cluster_name, cluster) < 10

节点磁盘空间不足

检查节点磁盘空间是否充足

事件类

云原生日志采集插件

不涉及

节点EmptyDir存储池异常

检查节点临时卷存储池是否异常

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="EmptyDirVolumeGroupStatusError"} >= 1

节点内存资源不足

检查节点整体内存是否充足

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="MemoryProblem"} >= 1

节点持久卷存储池异常

检查节点上持久卷存储池是否异常

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="LocalPvVolumeGroupStatusError"} >= 1

节点挂载点异常

检查节点上的挂载点是否异常

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="MountPointProblem"} >= 1

节点文件句柄数不足

检查系统关键资源FD文件句柄数是否充足

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="FDProblem"} >= 1

节点磁盘卡IO

检查节点磁盘是否存在卡IO故障

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="DiskHung"} >= 1

节点磁盘只读

检查节点磁盘是否只读

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="DiskReadonly"} >= 1

节点磁盘异常

检查节点系统盘、CCE数据盘(包含Docker逻辑盘与Kubelet逻辑盘)的磁盘使用情况

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="DiskProblem"} >= 1

节点磁盘慢IO

检测节点磁盘是否存在慢IO故障

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="DiskSlow"} >= 1

节点进程资源不足

检查系统关键资源PID进程资源是否充足

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="PIDProblem"} >= 1

节点链接跟踪表不足

检查节点链接跟踪表是否充足

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="ConntrackFullProblem"} >= 1

节点状态规则集

ResolvConf配置文件异常

检查ResolvConf配置文件是否异常

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="ResolvConfFileProblem"} >= 1

节点CNI组件异常

检查节点CNI(容器网络)组件是否正常运行

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="CNIProblem"} >= 1

节点CRI组件异常

检查关键组件CRI(容器运行时组件)Docker或Containerd的运行状态

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="CRIProblem"} >= 1

节点Kube-proxy故障

检查Kube-proxy是否正常运行

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="KUBEPROXYProblem"} >= 1

节点Kubelet异常

检查Kubelet状态是否异常

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="KUBELETProblem"} >= 1

节点存在计划事件

检查节点是否存在主机计划事件

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="ScheduledEvent"} >= 1

Node状态抖动

检查节点状态是否在正常和异常之间抖动

指标类

云原生监控插件

节点故障检测插件

sum(changes(kube_node_status_condition{status="true",condition="Ready"}[15m])) by (cluster_name, node, cluster) > 2

节点Containerd频繁重启

检查Containerd是否频繁重启

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="FrequentContainerdRestart"} >= 1

节点任务夯住

检查节点是否存在任务夯住

事件类

云原生日志采集插件

TaskHung

节点存储池配置有误

检查节点临时卷及持久卷存储池配置是否异常

事件类

云原生日志采集插件

InvalidStoragePool

节点状态异常

检查节点状态是否异常

事件类

云原生日志采集插件

NodeNotReady

节点进程D异常

检查节点是否存在D进程

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="ProcessD"} >= 1

节点进程Z异常

检查节点是否存在Z进程

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="ProcessZ"} >= 1

节点CRI频繁重启

检查CRI是否频繁重启

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="FrequentCRIRestart"} >= 1

节点Docker频繁重启

检查Docker是否频繁重启

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="FrequentDockerRestart"} >= 1

节点Kubelet频繁重启

检查Kubelet是否频繁重启

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="FrequentKubeletRestart"} >= 1

节点NTP服务故障

检查关键系统服务节点时钟同步服务ntpd或chronyd是否正常运行

指标类

云原生监控插件

节点故障检测插件

problem_gauge{type="NTPProblem"} >= 1

节点内存不足强杀进程

检查节点是否存在OOM事件

事件类

节点故障检测插件

OOMKilling

节点扩缩容规则集

节点池资源售罄

检查节点池资源是否充足

事件类

云原生日志采集插件

NodePoolSoldOut

扩容节点超时

检查节点池扩容节点是否超时

事件类

云原生日志采集插件

ScaleUpTimedOut

节点池扩容节点失败

检查节点池扩容节点是否异常

事件类

云原生日志采集插件

FailedToScaleUpGroup

节点池缩容节点失败

检查节点池缩容节点是否异常

事件类

云原生日志采集插件

ScaleDownFailed

集群状态规则集

集群状态不可用

检查集群状态是否可用

事件类

云原生日志采集插件

不涉及

配置告警通知人

联系组是基于消息通知服务 SMN的主题功能实现的,目的是为消息发布者和订阅者提供一个可以相互交流的通道。联系组包含一个或多个订阅终端,您可以通过配置告警联系组,分组管理订阅终端,接收告警信息。联系组创建完成后,需要绑定至告警规则集,这样,当有告警触发时,联系组中的订阅终端就可以收到告警消息了。

  1. 登录CCE控制台。
  2. 在集群列表页面,单击目标集群名称进入详情页。
  3. 在左侧导航栏选择“告警中心”,选择“默认联系组”页签。
  4. 单击“新建联系组”,在弹出的页面中输入联系组参数。

    • 联系组名称:输入联系组名称,创建后不可修改。名称只能包含大写字母、小写字母、数字、-和_,且必须由大写字母、小写字母或数字开头,名称长度为1~255字符。
    • 告警消息显示名:即订阅终端接收消息的标题名称。假设订阅终端为邮件,推送邮件消息时,若已设置告警消息显示名,发件人则呈现为“显示名”,若未设置告警消息显示名,发件人呈现为“username@example.com”。支持在联系组创建完成后修改告警消息显示名。
    • 添加订阅终端:您需要添加一个或多个订阅终端来接收告警消息。终端类型包括短信和邮件,选择“短信”时,请输入有效的手机号码;选择“邮件”时,请输入有效的电子邮件地址。

  5. 单击“确定”完成联系组的创建。

    返回联系组列表,订阅终端状态为“未确认”,您需要继续执行后续操作,向该终端发送订阅请求,以验证终端有效性。

  6. 单击操作列“请求订阅”,向该终端发送订阅请求。若终端收到请求,请按照提示进行确认,确认完成后订阅终端状态将变为“已确认”。
  7. 联系组创建并确认后,单击图标启用联系组,实现联系组和告警规则集的绑定。

    告警规则集最多支持绑定5个联系组。

查看告警列表

您可以在“告警列表”页面查看最近发送的历史记录。

  1. 登录CCE控制台。
  2. 在集群列表页面,单击目标集群名称进入详情页。
  3. 在左侧导航栏选择“告警中心”,选择“告警列表”页签。

    列表中默认展示全部待解决告警,支持按照告警关键字、告警等级,以及告警发生的时间范围筛选。同时支持查看指定筛选条件的告警在不同时间段的分布情况。

    待解决告警若十分钟内不再触发,则会默认已解决并转换为历史告警。如果提前确认某条告警已解决,也可以单击操作列的“清除”,清除后的告警可在历史告警中查询。

    图1 告警列表

相关文档