当前位置:   article > 正文

alertmanager 配置钉钉告警以及模板(prometheus-webhook-dingtalk)基于 kube-prometheus

prometheus-webhook-dingtalk

alertmanager 的 receive 并不直接支持钉钉的 url,要部署插件容器 prometheus-webhook-dingtalk

并且有个需要注意的地方是,当 receives 为钉钉时 (webhook_configs),它的告警模板不是在 alertmanager 的配置文件中指定的,而是在钉钉插件 prometheus-webhook-dingtalk 中指定的。

编写 prometheus-webhook-dingtalk 配置文件和模板

vim dingtalk-configmap.yaml,这里记的替换你的钉钉 url token。

  1. apiVersion: v1
  2. kind: ConfigMap
  3. metadata:
  4. name: prometheus-webhook-dingtalk-config
  5. namespace: monitoring
  6. data:
  7. config.yml: |-
  8. templates:
  9. - /etc/prometheus-webhook-dingtalk/default.tmpl
  10. targets:
  11. webhook1:
  12. url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx #修改为钉钉机器人的webhook
  13. message:
  14. text: '{{ template "default.tmpl" . }}'
  15. default.tmpl: |
  16. {{ define "default.tmpl" }}
  17. {{- if gt (len .Alerts.Firing) 0 -}}
  18. {{- range $index, $alert := .Alerts -}}
  19. ============ = **<font color='#FF0000'>告警</font>** = ============= #红色字体
  20. **告警名称:** {{ $alert.Labels.alertname }}
  21. **告警级别:** {{ $alert.Labels.severity }} 级
  22. **告警状态:** {{ .Status }}
  23. **告警实例:** {{ $alert.Labels.instance }} {{ $alert.Labels.device }}
  24. **告警概要:** {{ .Annotations.summary }}
  25. **告警详情:** {{ $alert.Annotations.message }}{{ $alert.Annotations.description}}
  26. **故障时间:** {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
  27. ============ = end = =============
  28. {{- end }}
  29. {{- end }}
  30. {{- if gt (len .Alerts.Resolved) 0 -}}
  31. {{- range $index, $alert := .Alerts -}}
  32. ============ = <font color='#00FF00'>恢复</font> = ============= #绿色字体
  33. **告警实例:** {{ .Labels.instance }}
  34. **告警名称:** {{ .Labels.alertname }}
  35. **告警级别:** {{ $alert.Labels.severity }} 级
  36. **告警状态:** {{ .Status }}
  37. **告警概要:** {{ $alert.Annotations.summary }}
  38. **告警详情:** {{ $alert.Annotations.message }}{{ $alert.Annotations.description}}
  39. **故障时间:** {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
  40. **恢复时间:** {{ ($alert.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
  41. ============ = **end** = =============
  42. {{- end }}
  43. {{- end }}
  44. {{- end }}

然后创建 configmap,kubectl apply -f dingtalk-configmap.yaml

部署钉钉插件

不同版本的插件指定配置文件的参数也不一样,这里部署的是 v2.1.0

vim dingtalk-webhook-deploy.yaml,这个文件不需要修改

  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4. name: dingtalk
  5. namespace: monitoring
  6. labels:
  7. app: dingtalk
  8. spec:
  9. selector:
  10. app: dingtalk
  11. ports:
  12. - name: dingtalk
  13. port: 8060
  14. protocol: TCP
  15. targetPort: 8060
  16. ---
  17. apiVersion: apps/v1
  18. kind: Deployment
  19. metadata:
  20. name: dingtalk
  21. namespace: monitoring
  22. spec:
  23. replicas: 2
  24. selector:
  25. matchLabels:
  26. app: dingtalk
  27. template:
  28. metadata:
  29. name: dingtalk
  30. labels:
  31. app: dingtalk
  32. spec:
  33. containers:
  34. - name: dingtalk
  35. image: timonwong/prometheus-webhook-dingtalk:v2.1.0
  36. imagePullPolicy: IfNotPresent
  37. args:
  38. - --web.listen-address=:8060
  39. - --config.file=/etc/prometheus-webhook-dingtalk/config.yml
  40. ports:
  41. - containerPort: 8060
  42. volumeMounts:
  43. - name: config
  44. mountPath: /etc/prometheus-webhook-dingtalk
  45. volumes:
  46. - name: config
  47. configMap:
  48. name: prometheus-webhook-dingtalk-config

kubectl apply -f dingtalk-webhook-deploy.yaml

编写 alertmanager 的主配置文件

vim alertmanager.yaml,此文件需要自己添加一条路由或用默认路由,和相应的接收者。

这里的接收者 webhook,其实是上面部署的钉钉插件 service 的地址

  1. global:
  2. resolve_timeout: 5m
  3. wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/'
  4. wechat_api_secret: '*****'
  5. wechat_api_corp_id: '*******'
  6. smtp_smarthost: 'smtp.163.com:25'
  7. smtp_from: '你的邮箱'
  8. smtp_auth_username: '邮箱用户名'
  9. smtp_auth_password: '密码或授权码'
  10. smtp_require_tls: false
  11. route:
  12. group_by: ['alertname','job']
  13. group_wait: 30s
  14. group_interval: 1m
  15. repeat_interval: 30m
  16. receiver: 'wechat'
  17. routes:
  18. - match:
  19. job: 'prometheus'
  20. receiver: 'webhook'
  21. receivers:
  22. - name: 'email'
  23. email_configs:
  24. - to: '邮件接收人'
  25. - name: 'wechat'
  26. wechat_configs:
  27. - send_resolved: true
  28. to_party: '2'
  29. agent_id: '1'
  30. - name: 'webhook'
  31. webhook_configs:
  32. # 和插件不同 namespace 请填写 http://webhook-dingtalk.monitoring.svc.cluster.local:8060/dingtalk/webhook1/send
  33. - url: 'http://webhook-dingtalk:8060/dingtalk/webhook1/send'

先将之前的 secret 对象删除

kubectl delete secret alertmanager-main -n monitoring

secret "alertmanager-main" deleted

创建新的secret对象

kubectl create secret generic alertmanager-main --from-file=alertmanager.yaml -n monitoring

secret "alertmanager-main" created

配置钉钉告警和模板已完成,需要注意的是更新完 configmap,pod 中的配置是挂载的所以会更新,但是一般服务是不支持热加载配置的,所以需要重新创建pod。有问题可以在评论区留言

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/985293
推荐阅读
相关标签
  

闽ICP备14008679号