全部產品
Search
文件中心

:接入Alertmanager警示

更新時間:Jan 14, 2025

Alertmanager是開源監控系統Prometheus中用於處理警示資訊的服務,通過將Log Service開放警示配置為Alertmanager中的一個Receiver,可以將Alertmanager產生的警示訊息發送到Log Service。

前提條件

已建立協議Alertmanager的開放警示應用。具體操作,請參見配置開放警示對外介面

Alertmanager配置

在Alertmanager設定檔的route配置項下添加一個receiver配置,然後在receivers配置項下配置通知渠道。配置內容範本如下:
route:
  receiver: '{RECIEVER_NAME}'
  ...
  
...

receivers:
- name: '{RECIEVER_NAME}'
  webhook_configs:
  - url: 'http://{ALIYUN_SLS_ENDPOINT}/event/webhook/RAMAK_{ACCESS_KEY_ID}/{WEBHOOK_APP_ID}'
  
- name: ...
參數說明
receiver自訂的receiver名稱。
name自訂的receiver名稱,需與receiver參數中配置的receiver名稱相同。
url警示訊息的接收端,此處配置為您在Log Service中建立開放警示服務和應用後產生的介面資訊(完整URL)。如何擷取,請參見擷取介面資訊
說明 如果您的Alertmanager運行在阿里雲ECS上,則建議您在選擇Alertmanager警示訊息接入地區時,選擇ECS所在地區,並使用區域網路或VPC網域名稱。否則您選擇任一地區的公網介面即可。

Alertmanager警示訊息解析

Alertmanager警示訊息內容樣本如下:
說明 如果alerts欄位中包含多條警示訊息(一組{}代表一條警示訊息),則將映射為多條Log Service警示訊息。
{
  "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"
      }
    },
    ...
  ]
}

欄位對應

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

{
  "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": "{開放警示應用中配置的重複等待時間}"
  },
...
Log Service警示內容與Alertmanager警示內容的映射關係如下:
Log ServiceAlertmanager說明
aliuid用於接入警示的開放警示應用所屬的阿里雲帳號ID。
alert_idalertname警示監控規則ID。

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

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

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

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

如果Alertmanager警示訊息中的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:

    如果Alertmanager警示訊息的annotations欄位中含有desc欄位、description欄位和summary欄位,則desc欄位的值為上述三個欄位值合并後的值。

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

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

單擊該URL,系統將跳轉至Alertmanager的Alert管理介面,並自動為您過濾顯示符合groupLabels欄位內容的警示訊息。