通过Webhook自定义告警通知人

创建通知策略时,您可以将告警通知发送到自定义的Webhook地址中。ARMS告警管理支持对飞书、微信、钉钉等群组发送Webhook告警,本文以飞书为例,介绍如何创建Webhook告警。

步骤一:获取Webhook地址

  1. 打开并登录飞书。

  2. 单击+图标,然后单击创建群组,新建一个用于发送告警的群组。

  3. 单击群组设置图标,然后单击群机器人页签。

  4. 群机器人页签单击添加机器人

    飞书添加机器人
  5. 添加机器人面板选择Custom Bot

    飞书-自定义机器人
  6. 在配置页设置显示名称描述,然后单击添加

    飞书-设置机器人
  7. 添加情况区域单击复制链接,然后单击完成

    飞书-Webhook

步骤二:创建Webhook联系人

  1. 登录EDAS控制台

  2. 在左侧导航栏,单击应用管理 > 应用列表,在顶部菜单栏选择地域并在页面上方选择所属微服务空间,在集群类型下拉列表,选择K8s集群,然后在页面单击具体的应用名称。

  3. 在左侧导航栏中选择告警管理 > 联系人

  4. 联系人页签上,单击右上角的新建webhook

  5. 创建Webhook对话框中输入配置信息。

    基本参数描述如下所示。

    参数

    说明

    Webhook名称

    必填,自定义Webhook名称。

    Post和Get

    必填,设置请求方法。URL不可超过100个字符。

    此例中选择Post,并将步骤一:获取Webhook地址中保存的Webhook地址粘贴至右侧文本框。

    Header和Param

    非必填,设置请求头,不可超过200个字符。 单击+添加,可以添加其他Header信息或Param信息。默认请求头为Content-Type: text/plain; charset=UTF-8,Header和Param个数总数不能超过6个。

    此例中设置以下两个Header

    • Arms-Content-Type : json

    • Content-Type : application/json

    通知模板

    告警触发时发送的通知模板,非必填,在Post方法下出现,可使用$content占位符输出通知内容,不可超过500个字符。通知模板如下:

    {
    "告警名称":"{{ .commonLabels.alertname }}{{if .commonLabels.clustername }}",
    "集群名称":"{{ .commonLabels.clustername }} {{ end }}{{if eq "app" .commonLabels._aliyun_arms_involvedObject_kind }}",
    "应用名称":"{{ .commonLabels._aliyun_arms_involvedObject_name }} {{ end }}",
    "通知策略":"{{ .dispatchRuleName }}",
    "告警时间":"{{ .startTime }}",
    "告警内容":"{{ for .alerts }} {{ .annotations.message }} {{ end }}"
    }

    此处以飞书为例可以设置如下文本格式:

    {
      "msg_type": "text",
      "content": {
        "text": "报警名称: {{ .commonLabels.alertname }}\n报警时间: {{ .startTime }}\n报警内容: {{ for .alerts }} {{ .annotations.message }}  {{if .generatorURL }} 详情链接: {{.generatorURL}} {{ end }} \n {{ end }}"
      }
    }

    恢复模板

    告警恢复时发送的通知模板,非必填,在Post方法下出现,可使用$content占位符输出通知内容,不可超过500个字符。恢复模板如下:

    {
    "告警名称":"{{ .commonLabels.alertname }}{{if .commonLabels.clustername }}",
    "集群名称":"{{ .commonLabels.clustername }} {{ end }}{{if eq "app" .commonLabels._aliyun_arms_involvedObject_kind }}",
    "应用名称":"{{ .commonLabels._aliyun_arms_involvedObject_name }} {{ end }}",
    "通知策略":"{{ .dispatchRuleName }}",
    "恢复时间":"{{ .endTime }}",
    "告警内容":"{{ for .alerts }} {{ .annotations.message }} {{ end }}"
    }

    此处以飞书为例可以设置如下文本格式:

    {
      "msg_type": "text",
      "content": {
        "text": "报警名称: {{ .commonLabels.alertname }}\n恢复时间: {{ .endTime }}\n报警内容: {{ for .alerts }} {{ .annotations.message }}  {{if .generatorURL }} 详情链接: {{.generatorURL}} {{ end }} \n {{ end }}"
      }
    }
  6. 可选:单击测试,验证配置是否成功。

  7. 单击创建

步骤三:设置通知策略

在通知策略中需要选择通知方式WebHook才能在自定义的Webhook中接收告警。

新建或编辑通知策略,选择通知人为Webhook联系人,在通知方式区域选中WebHook。具体操作,请参见通知策略

说明

Webhook告警的超时时间为5秒,如果发出请求后5秒内没有返回,即没有收到告警信息,则表示发送失败。