点击【Settings】

AlertManager配置邮件告警-1

点击【服务】

AlertManager配置邮件告警-2

按照提示发送短信,获取授权码bcreknhkuijidifd

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: 1h
      smtp_smarthost: 'smtp.qq.com:465'
      smtp_from: '发邮件的邮箱'
      smtp_auth_username: '发邮件的邮箱'
      smtp_auth_password: '你的授权码或者密码'
      smtp_require_tls: false
    templates:
      - '/bitnami/alertmanager/data/template/email.tmpl'
    receivers:
      - name: default-receiver
        email_configs:
        - to: '接收邮件的邮箱'
          html: '{{ template "email.html" . }}'
          send_resolved: true
    route:
      group_wait: 10s
      group_interval: 5m
      receiver: default-receiver
      repeat_interval: 3h
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: 1h
      smtp_smarthost: 'smtp.qq.com:465'
      smtp_from: '1904763431@qq.com'
      smtp_auth_username: '1904763431@qq.com'
      smtp_auth_password: 'bcreknhkuijidifd'
      smtp_require_tls: false
    templates:
      - '/bitnami/alertmanager/data/template/email.tmpl'
    receivers:
      - name: default-receiver
        email_configs:
        - to: 'xiaozhang_vip123@163.com'
          html: '{{ template "email.html" . }}'
          send_resolved: true
    route:
      group_wait: 10s
      group_interval: 5m
      receiver: default-receiver
      repeat_interval: 3h
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 email.tmpl

{{ define "email.html" }}
{{- if gt (len .Alerts.Firing) 0 -}}
{{- range $index, $alert := .Alerts -}}
========= 告警通知  ==========
告警名称:{{ .Labels.alertname }}
告警级别:{{ .Labels.severity }}
告警机器:{{ .Labels.instance }} {{ .Labels.device }}
告警详情:{{ .Annotations.summary }}
告警时间:{{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
========= END ==========
{{- end }}
{{- end }}
{{- if gt (len .Alerts.Resolved) 0 -}}
{{- range $index, $alert := .Alerts -}}
========= 恢复通知 ==========
告警名称:{{ .Labels.alertname }}
告警级别:{{ .Labels.severity }}
告警机器:{{ .Labels.instance }}
告警详情:{{ .Annotations.summary }}
告警时间:{{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
恢复时间:{{ (.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
========= 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、登录163邮箱,查看报警信息即可

AlertManager配置邮件告警-3