阿里云Prometheus监控全面对接开源Prometheus生态,支持类型丰富的组件监控,提供多种开箱即用的预置监控大盘,且提供全面托管的Prometheus服务。您通过简单的配置,即可将阿里云Prometheus监控的告警消息发送到日志服务告警系统中,由日志服务告警系统完成告警降噪、通知等处理。

前提条件

操作步骤

  1. 登录Prometheus控制台
  2. 添加联系人。
    1. 在左侧导航栏中,选择告警管理 > 联系人
    2. 联系人页签中,单击新建webhook
    3. 创建Webhook对话框中,配置如下参数。
      参数 说明
      Webhook名称 设置Webhook名称。
      PostGet 设置请求方法。此处需选择Post,并设置地址为您在日志服务中创建开放告警服务和应用后生成的公网接口信息(完整的公网URL)。如何获取,请参见获取接口信息
      HeaderParam 设置请求头。此处需选择Header,并添加如下两个Header键值对:
      • Arms-Content-Type : json
      • Content-Type : application/json
      通知模板 告警通知的模板。此处需设置为$alertmanager_content
      恢复模板 告警恢复的通知模板。此处需设置为$alertmanager_content
    4. 可选:单击测试,验证配置是否正确。
    5. 验证成功后,单击创建
  3. 在通知策略中添加您所创建的联系人。
    1. 在左侧导航栏中,选择告警管理 > 通知策略
    2. 通知策略页面中,单击新增策略
    3. 设置通知策略。
      其中,在告警生成时区域,设置通知人/排班为您所创建的联系人。其他参数说明,请参见通知策略
    4. 单击完成图标。
    设置完成后,Prometheus监控的告警消息将发送到日志服务告警系统中,由日志服务告警系统完成降噪、通知等操作。

Prometheus监控的告警消息解析

Prometheus监控的告警消息示例如下:
说明 如果alerts字段中包含多条告警消息(一组{}代表一条告警消息),则将映射为多条日志服务告警消息。
{
  "version": "4",
  "groupKey": "alertname,job",
  "truncatedAlerts": 0,
  "status": "firing",
  "receiver": "webhook",
  "groupLabels": {
    "alertname": "Alert",
    "job": "promethueus"
  },
  "commonLabels": {
    "instance": "localhost:9090"
  },
  "commonAnnotations": {},
  "externalURL": "http://example.com/#/alerts",
  "alerts": [
    {
      "annotations": {
        "description": "description info",
        "summary": "High request latency"
      },
      "endsAt": "2020-10-28T12:28:52.710Z",
      "startsAt": "2020-10-28T12:23:37.710Z",
      "generatorURL": "",
      "labels": {
        "alertname": "Alert",
        "instance": "localhost:9090",
        "job": "prometheus",
        "severity": "page"
      }
    },
    ...
  ]
}

字段映射

Prometheus监控的告警消息被接入到日志服务后,映射为日志服务告警消息。示例如下:

{
  "aliuid": "{开放告警应用所属的阿里云账号ID}",
  "alert_instance_id": "{自动生成}",
  "project": "{告警中心所属的Project}",
  "region": "{告警中心Project所在地域}",
  "alert_id": "Alert",
  "alert_type": "sls_pub",
  "alert_name": "Alert",
  "next_eval_interval": 0,
  "alert_time": 1603859020,
  "fire_time": 1603859017,
  "resolve_time": 0,
  "status": "firing",
  "labels": {
    "instance": "localhost:9090",
    "job": "prometheus"
  },
  "annotations": {
    "__pub_alert_region__": "{接收告警消息的网络接口对应的地域}",
    "__config_app__": "sls_pub_alert",
    "__pub_alert_service__": "{开放告警服务ID}",
    "__pub_alert_app__": "{开放告警应用ID}",
    "__pub_alert_protocol__": "alert_manager",
    "desc": "description info",
    "summary": "High request latency"
  },
  "severity": 2,
  "policy": {
    "alert_policy_id": "{开放告警应用中配置的告警策略}",
    "action_policy_id": "{开放告警应用中配置的行动策略}",
    "repeat_interval": "{开放告警应用中配置的重复等待时间}"
  },
...
日志服务告警消息与Prometheus监控的告警消息的映射关系如下:
日志服务 Prometheus监控 说明
aliuid 用于接入告警的开放告警应用所属的阿里云账号ID。
alert_id alertname 告警监控规则ID。

如果Prometheus监控的告警消息中的labels字段中有alertname字段,则alert_id的值为alertname字段的值,否则为空。

alert_type 告警类型,固定为sls_pub。
alert_name alertname 告警监控规则名称。

如果Prometheus监控的告警消息中的labels字段中有alertname字段,则alert_name的值为alertname字段的值,否则为空。

status status 告警状态。
next_eval_interval 告警评估时间间隔,固定为0。
alert_time 告警触发时间。此处为日志服务接收到Prometheus监控的告警消息的时间。
fire_time startsAt 告警首次触发时间。
resolve_time endsAt 告警恢复时间。

如果Prometheus监控的告警消息中的statusfiring,则resolve_time的值为0,否则为endsAt对应的时间戳。

labels labels 告警标签信息。

如果您在创建开放告警应用时 ,在信息加工中添加了标签信息,则此标签信息将被添加到labels字段中。

annotations annotations 告警标注信息。日志服务告警的annotations字段中将添加如下额外字段。
  • __config_app__: "sls_pub_alert"
  • __pub_alert_service__: {开放告警服务ID}
  • __pub_alert_app__: {开放告警应用ID}
  • __pub_alert_protocol__: "alert manager"
  • __pub_alert_region__: {接收告警消息的网络接口对应的地域}
  • desc:

    如果Prometheus监控的告警消息中的annotations字段中含有desc字段、description字段和summary字段,则desc字段的值为上述三个字段值合并后的值。

如果您在创建开放告警应用时 ,在信息加工中添加了标注信息,则此标注信息将被添加到annotations字段中。

severity severity 告警严重度。
说明 如果Prometheus监控的告警消息中存在severity字段,则将Prometheus监控的告警消息发送到日志服务后,日志服务会根据该字段映射告警严重度。如果没有,则默认映射为中等。更多信息,请参见告警严重程度
policy 您在开放告警应用中配置的告警策略。更多信息,请参见Policy结构
project 告警中心所属的Project。更多信息,请参见项目(Project)
drill_down_query
  • generatorURL
  • externalURLgroupLabels
Prometheus监控的告警消息的URL。
  • 如果Prometheus监控的告警消息中有generatorURL字段,则drill_down_query字段的值为generatorURL字段的值。
  • 如果Prometheus监控的告警消息中没有generatorURL字段且groupLabels字段值为空,则drill_down_query字段的值为externalURL字段的值。
  • 如果Prometheus监控的告警消息中没有generatorURL字段且groupLabels字段值不为空,则drill_down_query字段的值为externalURL字段值和groupLabels字段值合并后的值。

单击该URL,系统将跳转至Prometheus监控的告警管理界面,并自动为您过滤显示符合groupLabels字段的告警消息。