事件监控是Kubernetes中的另一种监控方式,可以弥补资源监控在实时性、准确性和场景上的缺欠。Kubernetes的架构设计是基于状态机的,不同的状态之间进行转换则会生成相应的事件,正常的状态之间转换会生成Normal等级的事件,正常状态与异常状态之间的转换会生成Warning等级的事件。开发者可以通过获取事件,实时诊断集群的异常与问题。
背景信息
kube-eventer是阿里云容器服务维护的开源Kubernetes事件离线工具,可以将集群的事件离线到钉钉、SLS等系统,并提供不同等级的过滤条件,实现事件的实时采集、定向告警、异步归档。更多内容请参见kube-eventer。
通过以下三种场景为您介绍事件监控。
场景1:使用钉钉实现Kubernetes监控告警
使用钉钉机器人监控并告警Kubernetes的事件是一个非常典型的ChatOps实现。具体的操作步骤如下:
- 单击钉钉群右上角图标,进入群设置页面。
- 单击群机器人,进入群机器人页面,选择需要添加的机器人。此处选择自定义机器人。
- 在机器人详情页面,单击添加,进入添加机器人页面。
- 根据如下信息配置群机器人后,单击完成添加。
配置 | 说明 |
编辑头像 |
(可选)为群机器人设置头像。 |
机器人名字 |
添加的机器人名称。 |
添加到群组 |
添加机器人的群组。 |
是否开启Outgoing机制 |
(可选)通过@群机器人,将消息发送到指定外部服务,还可以将外部服务的响应结果返回到群组。
|
POST 地址 |
接收消息的HTTP服务地址。
说明 当选择开启Outgoing机制时,此项可配置。
|
Token |
用于验证请求来自钉钉的密钥。
说明 当选择开启Outgoing机制时,此项可配置。
|
- 单击复制,复制webhook地址。
说明 在
群机器人页面,选择目标群机器人,单击右侧图标可以:
- 修改群机器人的头像及机器人名字。
- 开启或关闭消息推送。
- 重置webhook地址。
- 删除群机器人。
- 登录容器服务管理控制台。
- 在Kubernetes菜单下,单击左侧导航栏中的
- 选择目标集群,命名空间选为kube-system,单击右上角使用模板创建。
- 根据以下信息配置模板,完成后单击创建。
配置 | 说明 |
集群 |
选择目标集群。 |
命名空间 |
选择资源对象所属的命名空间,默认是 default。此处选择kube-system。 |
示例模板 |
阿里云容器服务提供了多种资源类型的 Kubernetes yaml 示例模板,让您快速部署资源对象。您可以根据 Kubernetes Yaml 编排的格式要求自主编写,来描述您想定义的资源类型。此处选择自定义。 |
模板 |
填写以下自定义内容:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: eventer
namespace: kube-system
spec:
replicas: 1
template:
metadata:
labels:
task: monitoring
k8s-app: eventer
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ''
spec:
serviceAccount: admin
containers:
- name: eventer
image: registry.cn-hangzhou.aliyuncs.com/acs/eventer:v1.6.0
imagePullPolicy: IfNotPresent
command:
- /eventer
- --source=kubernetes:https://kubernetes.default
- --sink=dingtalk:[your_webhook_url]&label=[your_cluster_id]&level=[可选参数:Normal或者Warning,默认值为:Warning] #level可配置为:Normal或Warning,默认值为:Warning。当配置Normal时,会在钉钉群收到Normal和Warning级别的告警;不配置或配置为Warning时,钉钉群仅收到Warning级别的告警。
|
在
集群列表页面选择目标集群,单击操作列控制台,进入Kubernetes 控制台,选择命名空间为kube-system,单击左侧导航栏部署,可查看到eventer已部署成功。
预期结果:
部署成功后30s,eventer生效,当事件等级超过阈值等级时,即可在钉钉群收到如下告警。