翼度科技»论坛 云主机 LINUX 查看内容

kube-promethues配置钉钉告警

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
kube-promethues配置钉钉告警

前置:k8s部署kube-promethues

一.配置钉钉机器人


  • 打开钉钉的智能群助手,点击添加机器人

  • 选择自定义机器人

  • 勾选加签,复制后保存

  • 复制webhook地址后点击保存

二.编写dingtalk的yaml部署文件
  1. vi dingtalk.yaml
复制代码
  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4.   name: dingtalk
  5.   namespace: monitoring
  6. spec:
  7.   selector:
  8.     app: dingtalk
  9.   ports:
  10.     - name: http
  11.       protocol: TCP
  12.       port: 8060
  13.       targetPort: 8060
  14. ---
  15. apiVersion: apps/v1
  16. kind: Deployment
  17. metadata:
  18.   name: dingtalk
  19.   namespace: monitoring
  20.   labels:
  21.     app: dingtalk
  22. spec:
  23.   replicas: 1
  24.   strategy:
  25.     rollingUpdate:
  26.       maxSurge: 25%
  27.       maxUnavailable: 25%
  28.     type: RollingUpdate
  29.   selector:
  30.     matchLabels:
  31.       app: dingtalk
  32.   template:
  33.     metadata:
  34.       labels:
  35.         app: dingtalk
  36.     spec:
  37.       restartPolicy: "Always"
  38.       containers:
  39.         - name: dingtalk
  40.           image: timonwong/prometheus-webhook-dingtalk:v2.1.0
  41.           imagePullPolicy: "IfNotPresent"
  42.           volumeMounts:
  43.             - name: dingtalk-conf
  44.               mountPath: /etc/prometheus-webhook-dingtalk/
  45.           resources:
  46.             limits:
  47.               cpu: "400m"
  48.               memory: "500Mi"
  49.             requests:
  50.               cpu: "100m"
  51.               memory: "100Mi"
  52.           ports:
  53.             - containerPort: 8060
  54.               name: http
  55.               protocol: TCP
  56.           readinessProbe:
  57.             failureThreshold: 3
  58.             periodSeconds: 5
  59.             initialDelaySeconds: 30
  60.             successThreshold: 1
  61.             tcpSocket:
  62.               port: 8060
  63.           livenessProbe:
  64.             tcpSocket:
  65.               port: 8060
  66.             initialDelaySeconds: 30
  67.             periodSeconds: 10
  68.       volumes:
  69.         - name: dingtalk-conf
  70.           configMap:
  71.             name: dingtalk-cm
复制代码
prometheus-webhook-dingtalk是一个开源的钉钉告警的插件,目前最新版停留于v2.1.0
三.编写钉钉告警模板dingtalk-configmap.yaml
  1. vi dingtalk-configmap.yaml
复制代码
  1. apiVersion: v1
  2. kind: ConfigMap
  3. metadata:
  4.   name: dingtalk-cm
  5.   namespace: monitoring
  6. data:
  7.   config.yml: |-
  8.     templates:
  9.       - /etc/prometheus-webhook-dingtalk/dingding.tmpl
  10.     targets:
  11.       webhook:
  12.         url: https://oapi.dingtalk.com/robot/send?access_token=<复制的webhook地址>
  13.         secret: "<加签的时候复制的secret>"
  14.         message:
  15.           text: '{{ template "dingtalk.to.message" . }}'
  16.   dingding.tmpl: |-
  17.     {{ define "dingtalk.to.message" }}
  18.     {{- if gt (len .Alerts.Firing) 0 -}}
  19.     {{- range $index, $alert := .Alerts -}}
  20.     =========  **监控告警** =========
  21.     **告警集群:**     k8s
  22.     **告警类型:**    {{ $alert.Labels.alertname }}
  23.     **告警级别:**    {{ $alert.Labels.severity }}
  24.     **告警状态:**    {{ .Status }}
  25.     **故障主机:**    {{ $alert.Labels.instance }} {{ $alert.Labels.device }}
  26.     **告警主题:**    {{ .Annotations.summary }}
  27.     **告警详情:**    {{ $alert.Annotations.message }}{{ $alert.Annotations.description}}
  28.     **主机标签:**    {{ range .Labels.SortedPairs  }}  </br> [{{ .Name }}: {{ .Value | markdown | html }} ]
  29.     {{- end }} </br>
  30.     **故障时间:**    {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
  31.     ========= = **end** =  =========
  32.     {{- end }}
  33.     {{- end }}
  34.     {{- if gt (len .Alerts.Resolved) 0 -}}
  35.     {{- range $index, $alert := .Alerts -}}
  36.     ========= **故障恢复** =========
  37.     **告警集群:**     k8s
  38.     **告警主题:**    {{ $alert.Annotations.summary }}
  39.     **告警主机:**    {{ .Labels.instance }}
  40.     **告警类型:**    {{ .Labels.alertname }}
  41.     **告警级别:**    {{ $alert.Labels.severity }}
  42.     **告警状态:**    {{ .Status }}
  43.     **告警详情:**    {{ $alert.Annotations.message }}{{ $alert.Annotations.description}}
  44.     **故障时间:**    {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
  45.     **恢复时间:**    {{ ($alert.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
  46.     ========= = **end** =  =========
  47.     {{- end }}
  48.     {{- end }}
  49.     {{- end }}
复制代码
四.编写文件alertmanager-secret.yaml

该文件是 用来顶替原本kube-promethues部署时的,alertmanager的配置文件
  1. vi alertmanager-secret.yaml
复制代码
  1. apiVersion: v1
  2. data: { }
  3. kind: Secret
  4. metadata:
  5.   name: alertmanager-main
  6.   namespace: monitoring
  7. stringData:
  8.   alertmanager.yaml: |-
  9.     global:
  10.       resolve_timeout: 5m
  11.     route:
  12.       group_by: ['alertname']
  13.       group_wait: 30s
  14.       group_interval: 5m
  15.       repeat_interval: 30m
  16.       receiver: 'webhook'
  17.       routes:
  18.       - match:
  19.           severity: 'info'
  20.         continue: true
  21.         receiver: 'null'
  22.       - match:
  23.           severity: 'none'
  24.         continue: true
  25.         receiver: 'null'
  26.     receivers:
  27.     - name: 'null'
  28.     - name: 'webhook'
  29.       webhook_configs:
  30.       - send_resolved: true
  31.         url: 'http://dingtalk:8060/dingtalk/webhook/send'
复制代码
五.部署并检查是否运行成功
  1. kubectl apply -f alertmanager-secret.yaml
  2. kubectl apply -f dingtalk-configmap.yaml
  3. kubectl apply -f dingtalk.yaml
  4. #查看是否部署成功
  5. kubectl get pods -n  monitoring | grep dingtalk
复制代码

dingtalk部署成功后,重新部署alertmanager就行了。


来源:https://www.cnblogs.com/blogof-fusu/p/17799518.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具