使用场景
Kubernetes 使用事件(Event)反馈集群中资源对象的状态,它通常表示系统中的一些状态变化。例如在安装或修改工作负载时,您可以通过事件信息判断当前资源对象是否存在异常,以及查看导致异常的原因。事件的保留时间有限,在 TKE 集群中事件可保留1小时。
Service/Ingress 作为 Kubernetes 中接入层的资源对象,其质量事关业务服务稳定性,因此,对 Service/Ingress 异常事件的监控告警成为了常见诉求。为此,TKE 也定义了常见的 Service/Ingress 异常事件错误码信息、异常原因和解决办法,更多请参考 Service&Ingress 常见报错和处理。本文提供集群里 Service/Ingress 异常事件的告警实践。
步骤1:打开集群的事件采集
1. 登录 容器服务控制台。
2. 在左侧导航栏中,选择运维功能管理。
3. 在功能管理页面上方选择地域和集群类型,单击需要开启事件存储的集群右侧的设置。
4. 在设置功能页面,单击事件存储右侧的编辑。勾选开启事件存储,并配置日志集和日志主题。操作详情见 开启事件存储。
注意
若您在同一个地域有多个 Kubernetes 集群,建议您可以打开多个集群的事件存储功能,并选择相同的日志主题和日志集。
步骤2:确定事件是否采集
1. 登录 日志服务控制台,进入检索分析页。
2. 在检索分析页,选择地域、已开启事件采集的集群日志集、日志主题。
3. 在“原始数据”中,查找字段
event.message
,该字段为集群中资源对象产生的事件信息。如下图所示:
步骤3:新建告警策略
以告警 Ingress 的事件为例,Service 类似。
1. 登录 日志服务控制台。选择监控告警 > 告警策略。
2. 在告警策略页,单击新建。如下图所示:
3. 在新建告警策略页,参考以下主要信息进行设置:
日志主题:选择您在 步骤1 中创建的主题。
执行语句:添加执行语句:
(event.message:"Ingress Sync ClientError." OR event.message:"Ingress Sync DependencyError." OR event.message:"IngressError. ErrorCode:") | SELECT count(*) as ErrCount
说明
表示获取所有的 Ingress 的事件信息。
触发条件:添加触发条件
$1.ErrCount > 0
。说明
表示一有事件信息就触发告警。
多维分析:选择自定义检索分析。
名称:您可以自定义名称。
检索分析语句:添加检索分析语句:
(event.message:"Ingress Sync ClientError." OR event.message:"Ingress Sync DependencyError." OR event.message:"IngressError. ErrorCode:") | SELECT clusterId, event.involvedObject.namespace, event.involvedObject.name, split(split(event.message, 'ErrorCode: ')[2], ' ')[1] as ErrorCode, count(*) as ErrCount group by (clusterId, event.involvedObject.namespace, event.involvedObject.name, ErrorCode)
通知内容:添加通知内容“Ingress 使用告警,以下集群资源同步出现异常:”