(1)注册完成企业微信

步骤略

(2)创建应用

点击【应用管理】-【创建应用】

AlertManager配置企业微信告警-1

填写【应用名称】、【应用介绍(选填)】并上传应用Logo后,点击【创建应用】

AlertManager配置企业微信告警-2

(3)获取企业ID

点击【我的企业】即可查看企业ID

AlertManager配置企业微信告警-3

(4)获取部门ID

点击【通讯录】-【部门】即可查看部门ID

AlertManager配置企业微信告警-4

(5)获取应用AgentId和应用secret

点击【应用管理】-【prom监控告警】

AlertManager配置企业微信告警-5

查看AgentId和Secret,其中Secret需要到APP上方可查看

AlertManager配置企业微信告警-6

(6)添加可信域名

点击【应用管理】-【prom监控告警】-【网页授权及JS-SDK】

AlertManager配置企业微信告警-7

说明:这里没有可用域名,所以不多做说明

2、将Alertmanager的配置文件从configMap里导出来

$ kubectl get cm prometheus-alertmanager -o=yaml   > alertmanager_config.yaml

3、编辑配置文件

删除无用配置,要不然重新apply会报错

AlertManager配置企业微信告警-1

添加内容,模板如下

$ vi alertmanager_config.yaml

apiVersion: v1
data:
  alertmanager.yaml: |
    global:
      resolve_timeout: 5m
      wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/'
      wechat_api_corp_id: '企业ID'
    templates:
      - '/bitnami/alertmanager/data/template/weixin.tmpl'
    receivers:
      - name: 'wechat'
        wechat_configs:
        - corp_id: '企业ID'
          to_party: '部门ID'
          agent_id: '应用AgentId'
          api_secret: 'Secret信息'
          send_resolved: true
    route:
      group_wait: 10s
      group_interval: 5m
      repeat_interval: 3h
      receiver: 'wechat'
kind: ConfigMap
metadata:
  annotations:
    meta.helm.sh/release-name: prometheus
    meta.helm.sh/release-namespace: default
  labels:
    app.kubernetes.io/component: alertmanager
    app.kubernetes.io/instance: prometheus
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: prometheus
    app.kubernetes.io/part-of: prometheus
    app.kubernetes.io/version: 0.26.0
    helm.sh/chart: prometheus-0.3.2
  name: prometheus-alertmanager
  namespace: default

根据自己情况填写

$ vi alertmanager_config.yaml

apiVersion: v1
data:
  alertmanager.yaml: |
    global:
      resolve_timeout: 5m
      wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/'
      wechat_api_corp_id: 'wwe897498df31cc026'
    templates:
      - '/bitnami/alertmanager/data/template/weixin.tmpl'
    receivers:
      - name: 'wechat'
        wechat_configs:
        - corp_id: 'wwe897498df31cc026'
          to_party: '2'
          agent_id: '1000003'
          api_secret: 'UvuCd1WFrIB1ymPhy2b6m2sTOWnrblNtc1hGYA_DF8A'
          send_resolved: true
    route:
      group_wait: 10s
      group_interval: 5m
      repeat_interval: 3h
      receiver: 'wechat'
kind: ConfigMap
metadata:
  annotations:
    meta.helm.sh/release-name: prometheus
    meta.helm.sh/release-namespace: default
  labels:
    app.kubernetes.io/component: alertmanager
    app.kubernetes.io/instance: prometheus
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: prometheus
    app.kubernetes.io/part-of: prometheus
    app.kubernetes.io/version: 0.26.0
    helm.sh/chart: prometheus-0.3.2
  name: prometheus-alertmanager
  namespace: default

4、重新导入配置

$ kubectl delete cm prometheus-alertmanager; kubectl apply -f alertmanager_config.yaml

5、由于Alertmanager有挂载到nfs,所以/bitnami/alertmanager/data/目录对应到nfs里,所以在NFS服务端192.168.1.34上操作,编写模板文件

$ cd /data/nfs/default-data-prometheus-alertmanager-0-pvc-105e6608-d0e4-4304-af09-a93b124424fe/
$ mkdir template
$ cd template
$ vi weixin.tmpl

{{ define "wechat.default.message" }}
{{- if gt (len .Alerts.Firing) 0 -}}
{{- range $index, $alert := .Alerts -}}
{{- if eq $index 0 -}}
**********告警通知**********
告警类型: {{ $alert.Labels.alertname }}
告警级别: {{ $alert.Labels.severity }}
{{- end }}
=====================
告警主题: {{ $alert.Annotations.summary }}
告警详情: {{ $alert.Annotations.description }}
故障时间: {{ $alert.StartsAt.Format "2006-01-02 15:04:05" }}
{{ if gt (len $alert.Labels.instance) 0 -}}故障实例: {{ $alert.Labels.instance }}{{- end -}}
{{- end }}
{{- end }}

{{- if gt (len .Alerts.Resolved) 0 -}}
{{- range $index, $alert := .Alerts -}}
{{- if eq $index 0 -}}
**********恢复通知**********
告警类型: {{ $alert.Labels.alertname }}
告警级别: {{ $alert.Labels.severity }}
{{- end }}
=====================
告警主题: {{ $alert.Annotations.summary }}
告警详情: {{ $alert.Annotations.description }}
故障时间: {{ $alert.StartsAt.Format "2006-01-02 15:04:05" }}
恢复时间: {{ $alert.EndsAt.Format "2006-01-02 15:04:05" }}
{{ if gt (len $alert.Labels.instance) 0 -}}故障实例: {{ $alert.Labels.instance }}{{- end -}}
{{- end }}
{{- end }}
{{- end }}

6、在k8s-master01节点上重启Alertmanager服务

$ kubectl get po |grep 'prometheus-alertmanager'|awk '{print $1}' |xargs -i kubectl delete po {}

7、在192.168.1.35上模拟CPU使用偏高,需要执行两次

$ cat /dev/zero > /dev/null  &

8、打开浏览器输入http://192.168.1.31:31093访问Prometheus,到Prometheus页面下查看告警

AlertManager配置企业微信告警-2

9、登录企业微信查看告警信息