文章链接

下载deployment

我这里保留成kube-event.yaml

# cat kube-event.yaml---apiVersion: apps/v1kind: Deploymentmetadata:  labels:    name: kube-eventer  name: kube-eventer  namespace: kube-systemspec:  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/v1kind: ClusterRolemetadata:  name: kube-eventerrules:  - apiGroups:      - ""    resources:      - configmaps      - events    verbs:      - get      - list      - watch---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata:  name: kube-eventerroleRef:  apiGroup: rbac.authorization.k8s.io  kind: ClusterRole  name: kube-eventersubjects:  - kind: ServiceAccount    name: kube-eventer    namespace: kube-system---apiVersion: v1kind: ServiceAccountmetadata:  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.yamldeployment.apps/tomcat-deployment-allenjol createdservice/tomcat-service-allenjol created[root@master allenjol]# kubectl get poNAME                                        READY   STATUS             RESTARTS   AGEtomcat-deployment-allenjol-b6687f99-l5vj9   0/1     ImagePullBackOff   0          45s

部署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-systemI0708 09:26:36.409034       1 eventer.go:67] /kube-eventer --source=kubernetes:https://kubernetes.default --sink=dingtalk:https://oapi.dingtalk.com/robot/send?access_token=355cf01569aef206dc6c05681aaf3ed0ea19ed3597db4c26c565dbeb69ce1303&level=WarningI0708 09:26:36.409191       1 eventer.go:68] kube-eventer version: v1.2.0 commit: 484d9cdI0708 09:26:36.411557       1 eventer.go:94] Starting with DingTalkSink sinkI0708 09:26:36.411596       1 eventer.go:108] Starting eventerI0708 09:26:36.411678       1 eventer.go:116] Starting eventer http serviceI0708 09:27:00.000163       1 manager.go:102] Exporting 5 eventsI0708 09:27:30.000130       1 manager.go:102] Exporting 9 eventsI0708 09:28:00.000147       1 manager.go:102] Exporting 1 eventsI0708 09:28:30.000150       1 manager.go:102] Exporting 4 eventsI0708 09:29:00.000138       1 manager.go:102] Exporting 1 events...

能够看到这里曾经看到了钉钉的webhook地址了,并且还收集到了events。
查看钉钉群,就会看到曾经呈现了告警了。

其实这个告警以后还存在点问题。集体认为不应该这么频繁发送,应该像prometheus一样能够配置克制和静默。而后监控工夫能够更改。当然相熟go语言能够本人改源码而后构建成镜像。
文章链接