日志服务提供动态接收人功能,您可以通过Webhook服务设置告警通知的动态接收人。

使用场景

一般情况下,您在日志服务告警中创建用户或用户组后,可以在行动策略中选择对应的用户或用户组作为告警通知的接收人,但是此方式并不能满足特殊场景。例如:
  • 对接第三方的用户管理系统:某些企业拥有自建的用户管理系统,确保用户管理系统与日志服务告警用户实时同步存在较大困难。 并且企业拥有自己的组织架构,日志服务告警用户、用户组模型并不能完全适用。
  • 通知给动态联系人:当您的系统中存在很多服务,且每个服务的告警需要通知给不同的接收人时,如果使用行动策略的动态分派机制,需要配置很多分支,也会增加维护成本。

工作原理

针对上述特殊场景,您可以使用动态接收人完成告警通知的接收人设置。通过动态接收人方式,您只需提供一个Webhook服务,日志服务告警发送时,会调用该Webhook服务,然后由该服务返回需要通知的用户信息。您无需在日志服务告警中维护接收人。

  • 动态接收人动态接收人
  • 静态接收人静态接收人

配置说明

创建行动策略时,设置接收人类型动态接收人,然后配置如下参数。动态联系人
参数 说明
接收人类型 选择动态接收人
接收人回调地址 设置为Webhook服务地址。Webhook接口规范说明,请参见接口规范。相关限制说明如下:
  • 必须是公网可访问的地址。
  • 接口延迟不超过10秒。
  • 返回的数据不超过2 KB。
  • 返回的状态码必须是200。
  • 调用失败时,最多重试3次。
注意 调用动态联系人的Webhook与调用告警通知的Webhook类似,当您需要设置访问限制时,可以通过设置IP白名单或设置HTTP Header的方式。更多信息,请参见如何设置访问权限校验
请求头 在日志服务向接收人回调地址发送请求时,需要添加的请求头。

默认添加Content-Type: application/json请求头,因此设置Content-Type为其它值时不会生效。

接口规范

Request信息

  • 请求方法:POST
  • 请求头:
    • 您自定义设置的请求头。
    • 默认请求头Content-Type: application/json
  • 请求数据格式示例

    alerts为告警信息(数组类型),表示告警合并后的一个告警集合,最多包含10条告警。当您的Webhook服务接收到该数据后,会根据该数据判断告警通知接收人,并将接收人信息返回给日志服务。

    {
        "alerts": [{
            "alert_id": "test-alert-1",
            "alert_instance_id": "jid-2ed042ba079041c-a578-441e-8d25-42e92aef506c",
            "alert_name": "Test Alert 1",
            "alert_time": 1646808904,
            "alert_type": "sls_alert",
            "aliuid": "123****3424",
            "annotations": {
                "desc": "Test alert triggered",
                "title": "Test Title"
            },
            "fire_results": [{
                "message": "error occurs"
            }],
            "fire_results_count": 1,
            "fire_time": 1646808904,
            "labels": {
                "app": "nginx"
            },
            "next_eval_interval": 60,
            "project": "demo-alert",
            "region": "cn-hangzhou",
            "resolve_time": 0,
            "severity": 8,
            "status": "firing"
        }]
    }

Response信息

  • 状态码:200
  • 请求头:必须包含Content-Type: application/json
  • 返回数据格式示例:
    {
        "receivers": [{
            "code": "86",
            "phone": "137****34",
            "email": "****@example.com"
        }]
    }
    属性 数据类型 是否必须存在 说明
    code string 如果返回结果中无此字段,则日志服务默认code为86。
    phone string 对于短信、语音、钉钉和企业微信通知生效。如果为邮件通知,可忽略该字段。
    email string 仅对邮件通知渠道生效。如果为其它渠道,可忽略该字段。