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 Service | Alertmanager | 說明 |
| aliuid | 無 | 用於接入警示的開放警示應用所屬的阿里雲帳號ID。 |
| alert_id | alertname | 警示監控規則ID。 如果Alertmanager警示訊息的labels欄位中有alertname欄位,則alert_id的值為alertname欄位的值,否則為空白。 |
| alert_type | 無 | 警示類型,固定為sls_pub。 |
| alert_name | alertname | 警示監控規則名稱。 如果Alertmanager警示訊息的labels欄位中有alertname欄位,則alert_name的值為alertname欄位的值,否則為空白。 |
| status | status | 警示狀態。 |
| next_eval_interval | 無 | 警示評估時間間隔,固定為0。 |
| alert_time | 無 | 警示觸發時間,為Log Service接收到Alertmanager警示訊息的時間。 |
| fire_time | startsAt | 警示首次觸發時間。 |
| resolve_time | endsAt | 警示恢復。 如果Alertmanager警示訊息中的status為firing,則resolve_time的值為0,否則為endsAt對應的時間戳記。 |
| labels | labels | 警示標籤資訊。 如果您在建立開放警示應用時 ,在資訊加工中添加了標籤資訊,則此標籤資訊將被添加到labels欄位中。 |
| annotations | annotations | 警示標註資訊。Log Service警示的annotations欄位中將添加如下額外欄位。
如果您在建立開放警示應用時 ,在資訊加工中添加了標註資訊,則此標註資訊將被添加到annotations欄位中。 |
| severity | severity | 警示嚴重度。 說明 如果Alertmanager警示訊息中存在severity欄位,則將Alertmanager警示訊息發送到Log Service後,Log Service會根據該欄位對應警示嚴重度。如果沒有,則預設映射為中等。更多資訊,請參見警示嚴重程度。 |
| policy | 無 | 您在開放警示應用中配置的警示策略。更多資訊,請參見Policy結構。 |
| project | 無 | 警示中心所屬的Project。更多資訊,請參見專案(Project)。 |
| drill_down_query |
| Alertmanager警示訊息的URL。
單擊該URL,系統將跳轉至Alertmanager的Alert管理介面,並自動為您過濾顯示符合groupLabels欄位內容的警示訊息。 |