添加接收人
监控中心支持添加接收人邮箱、企业微信及钉钉三种告警形式,请在 UK8S 控制台「监控中心」→「收发设置」进行配置。
1. 配置发件服务器
配置接收人前,需要先设置发件人邮箱信息。目前发送信息是通过邮箱发送。
不同的邮件服务提供商对于发件服务器的配置都有较为详细的说明;这里强调两点:
- 目前尚不支持TLS,因此请勿填写TLS端口;
- 密码建议为客户端密码,填写邮箱登录密码可能无法发送邮件。
2. 配置邮件接收人
支持添加多个邮件接收人
- 名称: 收件人名称
- 邮箱地址: 收件的邮箱地址
3. 配置企业微信接收人
注:企业微信机器人类型请参考 ‘配置webhook接收人(钉钉/企业微信机器人方式)’ 方式
在使用微信接收人之前,我们必须在微信管理后台创建一个应用并获取应用ID、企业ID、应用秘钥、部门ID、企业微信用户ID等信息,需要咨询您的企业微信负责人或者管理员方可获取相关信息。详细alertmanager配置的官方文档请参考这里
- 名称:为接收人定义的名称,用于alertmanager的配置
- 企业ID:企业微信唯一ID;管理员登录企业微信web页面,在我的企业->企业信息中查询;(企业微信只有一人时无法查询)
- 应用ID:管理员登录企业微信web页面,在应用管理查看自建应用详情,应用的AgentId就是此应用的ID; 如果没有自建应用,可以先新建一个应用;
- 应用密钥:这里同应用ID的查询一致,在应用详情页面有secret选项,就是应用的密钥;
- 接收人:
- 接收人标签:为接收人创建标签
- 接收人部门:接收人所在企业部门ID, 管理员进入通讯录,在通讯找到接收人所在部门,点击部门旁边三个点,然后查看部门ID
- 接收用户:接收人用户邮箱;
 
由于监控中心配置了一条watchdog告警规则,只要企业微信的信息填写正确,一般10分钟以内均可从企业微信中获取到告警信息。
企业微信如果收不到告警信息,还需要设置可信任IP,可参考企业微信官方文档 。管理员登录企业微信web页面,在“应用管理”中点击自建的应用进入详情页;找到“企业可信IP”进行配置。填写的IP为访问企业微信的IP(一般为集群关联的NAT网关的外网弹性IP)。
4. 配置webhook接收人(钉钉/企业微信机器人方式)
4.1 创建钉钉/企业微信机器人,获取 Webhook 地址
在使用webhook接收人(钉钉/企业微信机器人方式)之前,我们必须在钉钉/企业微信管理后台创建自定义机器人,并获取其 Webhook 地址,详情参考钉钉/企业微信相关文档。
4.2 部署配置文件
AlertManager 不支持直接接入钉钉/企业微信告警,需要进行适配转换,以下是参考社区的示例部署 yaml 文件。
请根据yaml中的提示,结合自身场景来替换yaml中的webhook地址以及image
apiVersion: v1
kind: ConfigMap
metadata:
  name: alertmanager-webhook
  namespace: uk8s-monitor
data:
  config.yaml: |-
     targets:
      webhook1:  
        # 请替换为您的钉钉/企业微信机器人 Webhook 地址
        url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxx
---
apiVersion: v1
kind: Service
metadata:
  name: alertmanager-webhook
  namespace: uk8s-monitor
spec:
  selector:
    k8s-app: webhook
  ports:
    - name: http
      port: 80
      targetPort: 8060
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: alertmanager-webhook
  namespace: uk8s-monitor
spec:
  replicas: 2
  selector:
    matchLabels:
      k8s-app: webhook
  template:
    metadata:
      labels:
        k8s-app: webhook
    spec:
      volumes:
        - name: config
          configMap:
            name: alertmanager-webhook
      containers:
        - name: alertmanager-webhook
          # 替换image值:
          # 企业微信机器人: uhub.tnqacloud.com/uk8s/prometheus-webhook-wechat:v2.0.0
          # 钉钉机器人: uhub.tnqacloud.com/uk8s/prometheus-webhook-dingtalk:v2.0.0
          image: xxx:xxx
          args:
            - --web.listen-address=:8060
            - --config.file=/config/config.yaml
          volumeMounts:
            - name: config
              mountPath: /config
          resources:
            limits:
              cpu: 100m
              memory: 100Mi
          ports:
            - name: http
              containerPort: 80604.3 添加接收人
在控制台「收发设置」页面「接收人」版面点击「添加」,根据类型在 Webhook 地址栏中填写
钉钉机器人: http://alertmanager-webhook.uk8s-monitor.svc/dingtalk/webhook1/send
企业微信机器人: http://alertmanager-webhook.uk8s-monitor.svc/wechat/webhook/send
5. 配置webhook接收人(微信公众号方式)
5.1 创建公众号以及模板,获取公众号的 appid、secret 以及模板的 templateid
该告警方式基于微信公众号的模板消息实现,使用时请遵守微信公众号模板消息运营规范
模板消息内容可参考如下(模板名称随意)
告警状态: {{ status.DATA }}
告警类型: {{ alertname.DATA }}
告警级别: {{ severity.DATA }}
告警实例: {{ instance.DATA }}
告警内容: {{ message.DATA }}
告警时间: {{ startsat.DATA }}5.2 部署配置文件
AlertManager 同样不支持直接接入微信公众号告警,需要进行适配转换
请根据yaml中的提示,结合自身场景来替换yaml中的配置
apiVersion: v1
kind: ConfigMap
metadata:
  name: alertmanager-webhook
  namespace: uk8s-monitor
data:
  config.yaml: |
    # 请替换为您的微信公众号的appid
    appid: "xxx"
    # 请替换为您的微信公众号的secret
    secret: "xxx"
    # 请替换为您的微信公众号模板的templateid
    templateid: "xxx"
    # 告警组 name为组名,chatids下为该告警组下的用户的openid
    chatgroups:
      - name: uk8s
        chatids:
          - "openid1"
      - name: all
        chatids:
          - "openid1"
          - "openid2"
---
apiVersion: v1
kind: Service
metadata:
  name: alertmanager-webhook
  namespace: uk8s-monitor
spec:
  selector:
    k8s-app: webhook
  ports:
    - name: http
      port: 80
      targetPort: 8060
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: alertmanager-webhook
  namespace: uk8s-monitor
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: webhook
  template:
    metadata:
      labels:
        k8s-app: webhook
    spec:
      volumes:
        - name: config
          configMap:
            name: alertmanager-webhook
      containers:
        - name: alertmanager-webhook
          image: uhub.tnqacloud.com/uk8s/prometheus-webhook-wechat-public:v2.0.0
          args:
            - --web.listen-address=:8060
            - --config.file=/config/config.yaml
          volumeMounts:
            - name: config
              mountPath: /config
          resources:
            limits:
              cpu: 100m
              memory: 100Mi
          ports:
            - name: http
              containerPort: 8060
 5.3 添加接收人
在控制台「收发设置」页面「接收人」版面点击「添加」,在 Webhook 地址栏中填写
http://alertmanager-webhook.uk8s-monitor.svc/wechat/{groupname}/send
其中{groupname}为config.yaml中对应的chatgroups.name的名称