胸怀万里世界, 放眼无限未来。这篇文章主要讲述kube-eventer事件监控相关的知识,希望能为你提供帮助。
文章链接
下载deployment我这里保存成kube-event.yaml
# cat kube-event.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
name: kube-eventer
name: kube-eventer
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
app: kube-eventer
template:
metadata:
labels:
app: kube-eventer
annotations:
scheduler.alpha.kubernetes.io/critical-pod: \'\'
spec:
dnsPolicy: ClusterFirstWithHostNet
serviceAccount: kube-eventer
containers:
- image: registry.aliyuncs.com/acs/kube-eventer-amd64:v1.2.0-484d9cd-aliyun
name: kube-eventer
command:
- "/kube-eventer"
- "--source=kubernetes:https://kubernetes.default"
## .e.g,dingtalk sink demo
#- --sink=dingtalk:[your_webhook_url]&
label=[your_cluster_id]&
level=[Normal or Warning(default)]
- --sink=dingtalk:https://oapi.dingtalk.com/robot/send?access_token=355cf0156xxxxxxxxxxxxxxxxxx&
level=Warning
env:
# If TZ is assigned, set the TZ value as the time zone
- name: TZ
value: "Asia/Shanghai"
volumeMounts:
- name: localtime
mountPath: /etc/localtime
readOnly: true
- name: zoneinfo
mountPath: /usr/share/zoneinfo
readOnly: true
resources:
requests:
cpu: 100m
memory: 100Mi
limits:
cpu: 500m
memory: 250Mi
volumes:
- name: localtime
hostPath:
path: /etc/localtime
- name: zoneinfo
hostPath:
path: /usr/share/zoneinfo
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: kube-eventer
rules:
- apiGroups:
- ""
resources:
- configmaps
- events
verbs:
- get
- list
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kube-eventer
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kube-eventer
subjects:
- kind: ServiceAccount
name: kube-eventer
namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: kube-eventer
namespace: kube-system
钉钉群里创建自定义webhook设置--智能群助手--添加机器人--选择WeebHook。定义机器人名称和安全设置
安全设置这里我定义了关键字,Waring。创建后复制webhook地址。然后更改上面deployment中的sink处。
我把上面的label删掉了,只留下了level=Waring,刚好对应了我关键字的Waring。只有带有关键字的才会触发告警。
测试告警然后创建一个测试的Tomcat的deployment,故意把image镜像的tag写错,让他无法拉取镜像
[root@master allenjol]# kubectl apply -f deploy-tomcat-test.yaml
deployment.apps/tomcat-deployment-allenjol created
service/tomcat-service-allenjol created[root@master allenjol]# kubectl get po
NAMEREADYSTATUSRESTARTSAGE
tomcat-deployment-allenjol-b6687f99-l5vj90/1ImagePullBackOff045s
部署kube-event.yaml并查看日志。可以看到隔30s去检测一次
]# kubectl apply -f kube-event.yaml
]# kubectl get po -n kube-system | grep kube-event[root@master allenjol]# kubectl logs -f kube-eventer-648f64c985-zfkkg -n kube-system
I0708 09:26:36.4090341 eventer.go:67] /kube-eventer --source=kubernetes:https://kubernetes.default --sink=dingtalk:https://oapi.dingtalk.com/robot/send?access_token=355cf01569aef206dc6c05681aaf3ed0ea19ed3597db4c26c565dbeb69ce1303&
level=Warning
I0708 09:26:36.4091911 eventer.go:68] kube-eventer version: v1.2.0 commit: 484d9cd
I0708 09:26:36.4115571 eventer.go:94] Starting with DingTalkSink sink
I0708 09:26:36.4115961 eventer.go:108] Starting eventer
I0708 09:26:36.4116781 eventer.go:116] Starting eventer http service
I0708 09:27:00.0001631 manager.go:102] Exporting 5 events
I0708 09:27:30.0001301 manager.go:102] Exporting 9 events
I0708 09:28:00.0001471 manager.go:102] Exporting 1 events
I0708 09:28:30.0001501 manager.go:102] Exporting 4 events
I0708 09:29:00.0001381 manager.go:102] Exporting 1 events
...
可以看到这里已经看到了钉钉的webhook地址了,并且还收集到了events。
查看钉钉群,就会看到已经出现了告警了。
文章图片
【kube-eventer事件监控】其实这个告警当前还存在点问题。个人认为不应该这么频繁发送,应该像prometheus一样可以配置抑制和静默。然后监控时间可以更改。当然熟悉go语言可以自己改源码然后构建成镜像。
文章链接
推荐阅读
- MongoDB认证与授权
- 你会用ES6,那倒是用啊!
- 想了解Xtrabackup备份原理和常见问题分析,看这篇就够了
- Dynamics 365层级数据的定义展示与查询
- 实体关联起来查询可以不通过关系(Lookup字段)吗()
- Flutter 多引擎支持 PlatformView 以及线程合并解决方案
- 深入 iOS 静态链接器— ld64
- SpringBoot技术专题「权限校验专区」Shiro整合JWT授权和认证实现
- Spring源码分析带你正视一下Spring祖容器之BeanFactory的原理与功能分析