全部產品
Search
文件中心

:接入Grafana警示(Grafana 8.0及以上版本)

更新時間:Jan 14, 2025

Grafana提供豐富的可視化介面,同時具備警示功能。您可以在Grafana中,添加Contact point配置。添加完成後,Grafana會將警示訊息發送到Log Service警示系統中。由Log Service警示系統完成警示降噪、通知等處理。本文適用於Grafana 8.0及以上版本。

前提條件

已建立開放警示應用。更多資訊,請參見配置開放警示對外介面

Grafana配置

  1. 登入Grafana控制台。
  2. 建立Contact point。
    1. 在左側導覽列中,選擇Alerting > Contact points,然後單擊New contact point
    2. Create contact point頁面中,配置如下參數。
      Create contact point
      參數說明
      Name設定Contact point名稱。
      Contact point typeContact point的類型,此處配置為webhook
      UrlContact point的URL,此處配置為您在Log Service中建立開放警示服務和應用後產生的介面資訊(完整URL)。如何擷取,請參見擷取介面資訊
    3. 單擊Save contact point
  3. 為通知策略綁定Contact point。
    您可以通過修改通知策略的根策略或建立路由策略來綁定Contact point。此處以修改根策略為例。
    1. 單擊Notification policies
    2. Root policy - default for all alerts地區,單擊Edit
    3. Default contact point列表中選擇您在步驟2中建立的Contact Point。
      Notification policies
    4. 單擊Save

Grafana警示訊息

Grafana警示訊息內容樣本如下:

{
    "receiver": "http",
    "status": "firing",
    "alerts":
    [
        {
            "status": "firing",
            "labels":
            {
                "alertname": "test"
            },
            "annotations":
            {
                "description": "test alert",
            },
            "startsAt": "2022-02-17T21:44:07.106902+08:00",
            "endsAt": "0001-01-01T00:00:00Z",
            "generatorURL": "http://localhost:3000/alerting/abcd/edit",
            "fingerprint": "65d7bbdb01ce6c93",
            "silenceURL": "http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dtest",
            "dashboardURL": "",
            "panelURL": "",
            "valueString": "[ metric='go_threads{instance=\"prometheus\", job=\"prometheus\"}' labels={__name__=go_threads, instance=prometheus, job=prometheus} value=15 ]"
        }
    ],
    "groupLabels":
    {},
    "commonLabels":
    {
        "alertname": "test"
    },
    "commonAnnotations":
    {
        "description": "test alert",
    },
    "externalURL": "http://localhost:3000/",
    "version": "1",
    "groupKey": "{}/{alertname=\"test\"}:{}",
    "truncatedAlerts": 0,
    "orgId": 1,
    "title": "[FIRING:1]  (test)",
    "state": "alerting",
    "message": "**Firing**\n\nValue: [ metric='go_threads{instance=\"prometheus\", job=\"prometheus\"}' labels={__name__=go_threads, instance=prometheus, job=prometheus} value=15 ]\nLabels:\n - alertname = test\nAnnotations:\n - description = test alert\nSource: http://localhost:3000/alerting/abcd/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dtest\n"
}

欄位對應

Grafana警示訊息被接入到Log Service後,映射為Log Service警示內容。樣本如下:

{
    "aliuid": "{開放警示應用所屬的阿里雲帳號ID}",
    "alert_instance_id": "{自動產生}",
    "alert_id": "test",
    "alert_type": "sls_pub",
    "alert_name": "test",
    "region": "{警示中心Project所在的地區}",
    "project": "{警示中心所屬的Project}",
    "project_id": 0,
    "next_eval_interval": 0,
    "alert_time": 1645607565,
    "fire_time": 1645105447,
    "fire_results": null,
    "fire_results_count": 0,
    "resolve_time": 0,
    "status": "firing",
    "results": null,
    "labels":
    {},
    "annotations":
    {
        "__config_app__": "sls_pub_alert",
        "__pub_alert_app__": "{開放警示應用ID}",
        "__pub_alert_protocol__": "grafana8",
        "__pub_alert_region__": "{接收警示訊息的網路介面對應的地區}",
        "__pub_alert_service__": "{開放警示服務ID}",
        "desc": "test alert",
        "fingerprint": "65d7bbdb01ce6c93",
        "silenceURL": "http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dtest",
        "valueString": "[ metric='go_threads{instance=\"prometheus\", job=\"prometheus\"}' labels={__name__=go_threads, instance=prometheus, job=prometheus} value=15 ]"
    },
    "severity": 6,
    "policy":
    {
        "alert_policy_id": "{開放警示應用中配置的警示策略ID}",
        "action_policy_id": "{開放警示應用中配置的行動策略ID}",
        "use_default": false,
        "repeat_interval": "{開放警示應用中配置的重複等待時間}"
    },
    "template": null,
    "drill_down_query": "http://localhost:3000/alerting/abcd/edit",
}
Log Service警示內容與Grafana警示內容的映射關係如下:
Log ServiceGrafana說明
aliuid用於接入Grafana警示的開放警示應用所屬的阿里雲帳號ID。
alert_idalertname警示監控規則ID。

如果Grafana警示訊息的labels欄位中有alertname欄位,則alert_id的值為alertname欄位的值,否則為空白。

alert_type警示類型,固定為sls_pub。
alert_namealertname警示監控規則名稱。

如果Grafana警示訊息的labels欄位中有alertname欄位,則alert_name的值為alertname欄位的值,並刪除原始欄位。否則為空白。

statusstatus警示狀態。
next_eval_interval警示評估時間間隔,固定為0。
alert_time警示首次觸發時間,為Log Service接收到Grafana警示訊息的時間。
fire_timestartsAt警示觸發時間。
resolve_timeendsAt警示恢復。

如果Grafana警示訊息中的statusfiring,則resolve_time的值為0,否則為endsAt對應的時間戳記。

labelslabels警示標籤資訊。

如果您在建立開放警示應用時 ,在資訊加工中添加了標籤資訊,則此標籤資訊將被添加到labels欄位中。

annotationsannotations警示標註資訊。Log Service警示的annotations欄位中將添加如下額外欄位。
  • __config_app__: "sls_pub_alert"
  • __pub_alert_service__: {開放警示服務ID}
  • __pub_alert_app__: {開放警示應用ID}
  • __pub_alert_protocol__: "alert manager"
  • __pub_alert_region__: {接收警示訊息的網路介面對應的地區}
  • desc:

    如果Grafana警示訊息的annotations欄位中含有desc欄位、description欄位和summary欄位(優先順序按從左往右降低),則desc欄位的值為上述三個欄位值合并後的值,並刪除原始欄位。

  • fingerprint:對應Grafana警示訊息的annotations中的fingerprint欄位
  • silenceURL:對應Grafana警示訊息的annotations中的silenceURL欄位
  • dashboardURL:對應Grafana警示訊息的annotations中的dashboardURL欄位
  • panelURL:對應Grafana警示訊息的annotations中的panelURL欄位
  • valueString:對應Grafana警示訊息的annotations中的valueString欄位

如果您在建立開放警示應用時 ,在資訊加工中添加了標註資訊,則此標註資訊將被添加到annotations欄位中。

severityseverity警示嚴重度。
說明 如果Grafana警示訊息中的annotations欄位或labels欄位中包含severity欄位,則將Grafana警示訊息發送到Log Service後,Log Service會根據該欄位對應警示嚴重度。如果沒有,則預設映射為中等。更多資訊,請參見警示嚴重程度
policy您在開放警示應用中配置的警示策略。更多資訊,請參見Policy結構
project警示中心所屬的Project。更多資訊,請參見專案(Project)
drill_down_query
  • generatorURL
  • externalURLgroupLabels
Grafana警示訊息的URL。
  • 如果Grafana警示訊息中有generatorURL欄位,則drill_down_query欄位的值為generatorURL欄位的值。
  • 如果Grafana警示訊息中沒有generatorURL欄位且groupLabels欄位為空白,則drill_down_query欄位的值為externalURL欄位的值。
  • 如果Grafana警示訊息中沒有generatorURL欄位且groupLabels欄位不為空白,則drill_down_query欄位的值為groupLabels欄位和externalURL欄位的值。

單擊該URL將跳轉至Grafana警示管理頁面,並自動為您顯示符合groupLabels欄位內容的警示訊息。