Grafana提供丰富的可视化界面,同时具备告警功能。您可以在Grafana中,添加Notification channel配置。添加完成后,Grafana会将告警消息发送到日志服务告警系统中。由日志服务告警系统完成告警降噪、通知等处理。本文适用于Grafana 8.0以下版本。

前提条件

已创建开放告警应用。更多信息,请参见配置开放告警对外接口

Grafana配置

  1. 登录Grafana控制台。
  2. 在左侧导航栏中,选择Alerting > Notification channels,然后单击Add channel
  3. New Notification Channel页面中,配置如下参数,然后单击Save
    Grafana配置
    参数 说明
    Name 自定义Notification channel名称。
    Type Notification channel类型,此处配置为webhook
    Url Notification channel的URL,此处配置为您在日志服务中创建开放告警服务和应用后生成的接口信息(完整URL)。如何获取,请参见获取接口信息
    说明 如果您的Grafana运行在阿里云ECS上,则建议您在选择Grafana告警消息接入地域时,选择ECS所在地域,并使用局域网或VPC域名。否则您选择任一地域的公网接口即可。

Grafana告警消息

Grafana告警消息内容示例如下:

说明 如果Grafana告警消息中存在severity字段,则将Grafana告警消息发送到日志服务后,日志服务会根据该字段映射告警严重度。如果没有,则默认映射为中等。更多信息,请参见告警严重程度
{
    "dashboardId": 1,
    "evalMatches": [
        {
            "value": 173.14285714285714,
            "metric": "go_gc_duration_seconds_count{instance=\"localhost: 9090\", job=\"prometheus\"}",
            "tags": {
                "__name__": "go_gc_duration_seconds_count",
                "instance": "localhost:9090",
                "job": "prometheus"
            }
        }
    ],
    "message": "sadfasdf",
    "orgId": 1,
    "panelId": 4,
    "ruleId": 2,
    "ruleName": "fuxasdfasd",
    "ruleUrl": "http://localhost:3000/d/biSKHC8Mz/new-dashboard-copy?tab=alert&viewPanel=4&orgId=1",
    "state": "alerting",
    "tags": {
        "severity" : "crit",
        "xasdfasdf": "mveonasdf"
    },
    "title": "[Alerting] fuxasdfasd"
}

字段映射

Grafana告警消息被接入到日志服务后,映射为日志服务告警内容。示例如下:

{
    "aliuid": "{开放告警应用所属的阿里云账号ID}",
    "alert_instance_id": "{自动生成}",
    "project": "{告警中心所属的Project}",
    "region": "{告警中心Project所在的地域}",
    "alert_id": "2",
    "alert_type": "sls_pub",
    "alert_name": "sadfasdf",
    "next_eval_interval": 0,
    "alert_time": 1603859020,
    "fire_time": 1603859020,
    "resolve_time": 0,
    "status": "firing",
    "labels": {
        "xasdfasdf": "mveonasdf"
    },
    "annotations": {
        "__pub_alert_region__": "{接收告警消息的网络接口对应的地域}",
        "__config_app__": "sls_pub_alert",
        "__pub_alert_service__": "{开放告警服务ID}",
        "__pub_alert_app__": "{开放告警应用ID}",
        "__pub_alert_protocol__": "grafana",
        "severity" : "crit",
        "orgId": "1",
        "dashboardId": "1",
        "panelId": "4",
        "ruleUrl": "http://localhost:3000/d/biSKHC8Mz/new-dashboard-copy?tab=alert&viewPanel=4&orgId=1",
        "imageUrl": "",
        "desc": "sadfasdf",
        "title": "[Alerting] fuxasdfasd"
    },
    "severity": 10,
    "policy": {
        "alert_policy_id": "{开放告警应用中配置的告警策略}",
        "action_policy_id": "{开放告警应用中配置的行动策略}",
        "repeat_interval": "{开放告警应用中配置的重复等待时间}"
    },
    "drill_down_query": "http://localhost:3000/d/biSKHC8Mz/new-dashboard-copy?tab=alert&viewPanel=4&orgId=1",
    "results": [{
        "query": "go_gc_duration_seconds_count{instance=\"localhost: 9090\", job=\"prometheus\"}",
        "fire_result": {
            "__name__": "go_gc_duration_seconds_count",
            "instance": "localhost:9090",
            "job": "prometheus",
            "value": "173.142",
        }
    }]
}

日志服务告警内容中的字段与Grafana侧的映射关系如下:

日志服务 Grafana 说明
aliuid 用于接入告警的开放告警应用所属的阿里云账号ID
alert_id ruleId 告警监控规则ID
alert_type 告警类型,固定为sls_pub。
alert_name ruleName 告警监控规则名称
status state 告警状态。
  • 如果Grafana告警消息中的state值为ok,则对应日志服务中的status值为resolved。
  • 如果Grafana告警消息中的state值为其他值(例如alerting),则对应日志服务中的status值为firing。
next_eval_interval 告警评估时间间隔,固定为0。
alert_time 日志服务接收到Grafana告警消息的时间
fire_time 日志服务接收到Grafana告警消息的时间
resolve_time 告警恢复时间,固定为0。
labels tags 告警标签信息。
  • 如果Grafana告警消息的tags字段中存在severity字段,则被接入到日志服务后,severity字段将被添加日志服务告警的annotations字段中。
  • 如果您在创建开放告警应用时 ,在信息加工中添加了标签信息,则此标签信息将被添加到labels字段中。
    说明 当您在信息加工中配置的标签的Key与Grafana告警消息的tags字段中的子字段重复时,映射结果以您在信息加工中配置的为准。
annotations Grafana告警被接入到日志服务后,日志服务告警的annotations字段中将添加如下额外字段。
  • __config_app__: "sls_pub_alert"
  • __pub_alert_service__: {开放告警服务id}
  • __pub_alert_app__: {开放告警应用id}
  • __pub_alert_protocol__: "grafana"
  • __pub_alert_region__: {接收告警消息的网络接口对应的地域}
  • orgId : {grafana消息的orgId字段}
  • dashboardId: {grafana消息的dashboardId字段}
  • panelId: {grafana消息的panelId字段}
  • ruleUrl: {grafana消息的ruleUrl字段}
  • imageUrl: {grafana消息的imageUrl字段}
  • desc: {grafana消息的message字段}
  • title: {grafana消息的title字段}
如果您在创建开放告警应用时 ,在信息加工中添加了标注信息,则此标注信息将被添加到annotations字段中。
说明 当您在信息加工中配置的标注的Key与Grafana告警消息的tags字段中的子字段重复时,映射结果以您在信息加工中配置的为准。
severity severity 告警严重度。更多信息,请参见告警严重程度
policy 您在开放告警应用中配置的告警策略。更多信息,请参见Policy结构
project 告警中心所属的Project。更多信息,请参见项目(Project)
drill_down_query ruleUrl 展示Grafana告警消息中ruleUrl字段的值。
results evalMatches 结果集数据,evalMatches中的每一个对象,分别对应results中的一个QueryData结构。具体映射关系请参见表 1results字段的更多信息,请参见QueryData结构
表 1. 结果集映射
QueryData结构 evalMatches 说明
query metric 查询语句
fire_result tagsvalue Grafana告警中tags字段的内容展开为键值对格式,存入fire_result字段中。value字段直接存入fire_result字段中。

value字段的值只保留3位小数。