一、使用场景
如果事件信息包含异常,则需要集群管理员及时关注。TKE 支持为你的所有集群配置事件持久化功能,开启该功能后,TKE 会将你的集群事件实时导出至配置的存储端。更多请参考 事件日志。
Service/Ingress 作为 Kubernetes 中接入层的资源对象,其质量事关业务服务稳定性,因此,对 Service/Ingress 异常事件的监控告警成为了常见诉求。为此,TKE 也定义了常见的 Service/Ingress 异常事件错误码信息、异常原因和解决办法,更多请参考 Service&Ingress 常见报错和处理。这篇提供集群里 Service/Ingress 异常事件的告警实践。
二、步骤1:打开集群的事件采集
1. 登录 容器服务控制台,在左侧导航栏中选择集群。
2. 在集群列表中,单击目标集群 ID,进入集群详情页。
3. 选择左侧导航栏中的日志,在日志采集页签中单击事件日志右侧的开启。如下:
4. 在开启事件日志对话框中,选择日志所在地域,并配置日志集和日志主题。如下:
·日志所在地域:CLS 支持跨地域日志投递,你可通过单击修改选择日志投递的目标地域。
·日志集:根据日志所在地域展示你已经创建的日志集,若现有日志集不合适,你可以在 日志服务控制台 新建日志集。操作详情见 创建日志集。
注意:每个日志集下最多可以创建500个日志主题及指标主题。
·日志主题:选择日志集下对应的日志主题,支持“自动创建”和“选择已有”日志主题两种模式。
5. 单击确定,即可开启事件日志。
注意:若你在同一个地域有多个 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 使用告警,以下集群资源同步出现异常:”
完整参数配置方式请参考 配置告警策略。
五、步骤4:查看告警
确保 步骤2 中有新的事件产生,且 步骤2 中告警策略的执行周期、告警通知频率合适(例如测试时可以设置为1分钟一次),就可以查看告警通知渠道中的告警内容了。这篇示例设置为通过邮件进行告警,因此可参考邮件的告警内容: