在此之前我们需要点击163邮箱注册一下,下面进行163邮箱告警操作:

1.开启SMTP协议

点击【设置】-【POP3/SMTP/IMAP】

邮箱通知-1

点击【开启】

邮箱通知-2

点击【继续开启】

邮箱通知-3

扫码后,根据提示发送短信后,点击【我已发送】

邮箱通知-4

复制授权码后,点击【确定】

邮箱通知-5

2.配置告警模板

进入工作目录,修改配置文件

[root@k8s-master01 ~]# cd /root/kube-prometheus/manifests
[root@k8s-master01 manifests]# vim alertmanager-secret.yaml

(1)添加SMTP相关配置

      smtp_from: "your-alert@163.com"
      smtp_smarthost: "smtp.163.com:465"
      smtp_hello: "163.com"
      smtp_auth_username: "your-alert@163.com"
      smtp_auth_password: "YOUR_SMTP_AUTH_CODE"
      smtp_require_tls: false

上面参数说明:

  • smtp_from: 邮件的发送者地址
  • smtp_smarthost: SMTP 服务器的地址和端口,这里设置为 "smtp.163.com:465",表示将使用 163.com 的 SMTP 服务器,并连接到端口 465。
  • smtp_hello: 发送 HELO/EHLO 命令时使用的域名,这里设置为 "163.com",通常与 SMTP 服务器地址的域名一致
  • smtp_auth_username: SMTP 服务器的用户名,用于身份验证
  • smtp_auth_password: SMTP 服务器的密码,用于身份验证
  • smtp_require_tls: 是否要求使用 TLS 加密传输邮件,这里设置为 false,表示不要求使用 TLS

(2)添加recivers配置

    "receivers":
    - "name": "Default"
      email_configs: #代表使用邮件通知
      - to: "your-alert@163.com" #收件人可以配置多个逗号隔开
        send_resolved: true #告警如果被解决是否发送解决通知

上面参数说明:

  • name: 接收者的名称,这里设置为 "Default",可以根据实际需求自定义名称。
  • email_configs: 该接收者使用邮件通知方式,这是一个列表,可以配置多个邮件通知。
  • to: 收件人的电子邮件地址,表示将警报通知发送到这个地址。如果需要将通知发送到多个地址,可以用逗号隔开。
  • send_resolved: 告警是否被解决后也发送通知,这里设置为 true,表示在警报解决后发送解决通知。如果设置为 false,则警报解决后不发送通知。

(3)添加分组job和alertname

    "route":
      "group_by":
      - "namespace"
      - job
      - alertname

(4)路由规则分析

    "route":
      "group_by":
      - "namespace"
      "group_interval": "5m"
      "group_wait": "30s"
      "receiver": "Default"
      "repeat_interval": "12h"
      "routes":
      - "matchers":
        - "alertname = Watchdog"
        "receiver": "Watchdog"
      - "matchers":
        - "alertname = InfoInhibitor"
        "receiver": "null"
      - "matchers":
        - "severity = critical"
        "receiver": "Critical"

该告警规则对namespace标签进行分组(group_by字段),没有匹配到子路由的告警默认发送给名为Default的receiver(receiver字段)。如果匹配到alertname=Watchdog的告警,则将通知发送给Watchdog,如果匹配到severity=critical的告警,则将通知发送给Critical。

以上添加完配置文件总体如下:

[root@k8s-master01 ~]# cd /root/kube-prometheus/manifests
[root@k8s-master01 manifests]# vim alertmanager-secret.yaml
apiVersion: v1
kind: Secret
metadata:
  labels:
    app.kubernetes.io/component: alert-router
    app.kubernetes.io/instance: main
    app.kubernetes.io/name: alertmanager
    app.kubernetes.io/part-of: kube-prometheus
    app.kubernetes.io/version: 0.25.0
  name: alertmanager-main
  namespace: monitoring
stringData:
  alertmanager.yaml: |-
    "global":
      "resolve_timeout": "5m"
      smtp_from: "your-alert@163.com"
      smtp_smarthost: "smtp.163.com:465"
      smtp_hello: "163.com"
      smtp_auth_username: "your-alert@163.com"
      smtp_auth_password: "YOUR_SMTP_AUTH_CODE"
      smtp_require_tls: false
    "inhibit_rules":
    - "equal":
      - "namespace"
      - "alertname"
      "source_matchers":
      - "severity = critical"
      "target_matchers":
      - "severity =~ warning|info"
    - "equal":
      - "namespace"
      - "alertname"
      "source_matchers":
      - "severity = warning"
      "target_matchers":
      - "severity = info"
    - "equal":
      - "namespace"
      "source_matchers":
      - "alertname = InfoInhibitor"
      "target_matchers":
      - "severity = info"
    "receivers":
    - "name": "Default"
      email_configs:
      - to: "your-alert@163.com"
        send_resolved: true
    - "name": "Watchdog"
    - "name": "Critical"
    - "name": "null"
    "route":
      "group_by":
      - "namespace"
      - job
      - alertname
      "group_interval": "5m"
      "group_wait": "30s"
      "receiver": "Default"
      "repeat_interval": "12h"
      "routes":
      - "matchers":
        - "alertname = Watchdog"
        "receiver": "Watchdog"
      - "matchers":
        - "alertname = InfoInhibitor"
        "receiver": "null"
      - "matchers":
        - "severity = critical"
        "receiver": "Critical"
type: Opaque

3.将更改好的Alertmanager配置加载到Alertmanager

[root@k8s-master01 manifests]# kubectl replace -f alertmanager-secret.yaml

4.浏览器输入192.168.1.31:30966,打开alertmanager界面

点击【Status】即可查看配置文件,观察到配置已经生效

邮箱通知-6

点击【Alerts】即可查看分组信息,观察到配置已经生效

邮箱通知-7

5.登录163邮箱查看,观察到已存在告警邮件

邮箱通知-8