天天看點

DataDog告警資料還能這麼用-接入SLS開放告警

背景介紹

DataDog是一個用于雲上應用的監控和分析平台,可以自動采集和分析日志、名額和鍊路追蹤等資料,還可以用于基礎設施和雲服務的事件監控,對于伺服器、應用程式以及采集到的各種資料提供了很好的可觀測效果。但是DadaDog對于告警通知的管理功能比較缺乏,例如不支援短信、語音等通知管道,也不支援使用者組和值班組管理,還不具備動态發送告警通知的功能,是以不能覆寫使用者的部分使用場景。SLS的告警功能很好地彌補了DataDog的這些不足之處,通過SLS提供的開放告警功能,使用者也可以将DataDog的告警消息接入到SLS進行統一管理。本文将介紹如何快速建立DataDog的告警并将其告警消息接入到SLS中。

快速建立DataDog告警

在建立告警之前,首先需要為DataDog添加資料來源,常見的兩種添加資料來源的方式是通過Agent上報資料以及通過Integrations內建資料。Agent常用于上報基礎設施(例如主機、叢集和IoT裝置)的日志和名額等資料,Integrations常用于內建雲上服務或者其他資料平台(例如AWS CloudTrail和Splunk)的資料。本文的示例采用的資料來源為在主機上安裝Agent。如下圖所示為在兩台伺服器上安裝成功了Agent後,在DataDog的基礎設施清單裡檢視到的結果,安裝方法參考

Agent Usage

DataDog告警資料還能這麼用-接入SLS開放告警

添加了資料來源以後,就可以利用這些資料建立一個告警,用來監控你的設施或者服務。DataDog使用Monitor來管理告警,一條告警規則對應一個Monitor。點選Monitors->New Monitor,然後選擇螢幕類型就可以建立一個告警。如下圖所示為檢查主機是否向DataDog發送報告的螢幕的配置界面,選擇想要想要監控的主機,配置對應的參數,最後選擇好通知管道,對應的通知管道就可以在DataDog檢查不到主機發送的報告的時候收到告警消息了。

DataDog告警資料還能這麼用-接入SLS開放告警

接入SLS開放告警

SLS的告警中心提供了開放告警的功能,可以将第三方的告警消息接入進來,目前已經支援了很多常見的告警監控平台,未來開放告警将提供讓使用者自己開發然後将告警消息接入SLS的能力。在SLS的開放告警中接入DataDog的告警資料分為以下幾個步驟。

告警基礎配置

告警基礎主要是配置使用者管理和通知管理,使用者管理決定了您想指定誰接收到告警的消息,通知管理決定了消息通知的行為。通知管理主要包括内容模闆和行動政策。内容模闆決定了使用者最終最終收到的告警内容,該功能近期會釋出一個新版本,新版本支援使用者在内容模闆中使用處理函數、加入條件控制等強大的功能。行動政策可以參考

建立行動政策

,行動政策決定了在什麼情況下,發送什麼樣的内容到您指定的通知管道,使用者可以在行動政策中決定在某種條件下進行對應的通知行動,如下圖所示。

DataDog告警資料還能這麼用-接入SLS開放告警

擷取開放告警應用接口

在告警中心選擇開放告警,建立一個開放告警服務。選擇建立好的開放告警服務,添加一個開放告警應用,配置界面中的協定需要選擇DataDog,行動政策選擇上一步驟中配置好政策即可,其他的選項可以選擇預設的配置。最後在建立的開放告警應用操作欄中點選接口,擷取接口資訊。需要注意的是擷取的接口位址中,{ACCESS_KEY_ID}需要替換成使用者自己的通路ID,具體内容可以參考

配置開放告警對外接口

DataDog配置

DataDog的配置主要是配置Webhook內建,并将其設定為對應的螢幕的通知管道,具體包括以下步驟:

  1. 在導航欄中,選 Integrations。
  2. 在Integrations頁簽中,找到webhooks,單擊Install,安裝完成後,單擊Configure。
  3. 在Webhooks區域,單擊New,在New Webhook區域,配置如下參數,然後單擊Save。
DataDog告警資料還能這麼用-接入SLS開放告警

其中Name為webhook的名稱,URL為告警消息的接收端,此處配置為上一步驟擷取的開放接口資訊(完整URL),Payload為使用者自定義告警消息的内容,DataDog提供了幾十種告警消息變量,使用者可以在Payload進行使用,具體可以參考

DataDog官方文檔

,在配置Payload時,使用者需要按照SLS的要求進行,具體可以參考

接入DataDog告警
  1. 編輯目标Monitor,在配置通知管道的步驟中,選擇上一步配置的Webhook,最後進行儲存。

告警資料映射

使用者按照SLS的要求配置好了DataDog的告警消息後,SLS将收到如下示例消息

{

    "alert_instance_id": "123456",

    "alert_id": "123456",

    "alert_name": "STOP on host:abcdefgh",

    "alert_time": "1628647425",

    "fire_time": "1628647425",

    "resolve_time": "1627561306",

    "status": "Triggered",

    "labels": {

        "tags": "ali,host:abcdefgh,monitor"

    },

    "annotations": {

        "title": "[P1] [Triggered on {host:abcdefgh}] STOP",

        "event_msg": "%%%\nwarning\nhost stop\n @webhook-webhook-test-all\n\nThe monitor was last triggered at Thu Jul 29 2021 12:21:45 UTC.\n\n- - -\n\n[[Monitor Status](https://app.datadoghq.com/monitors/1234?to_ts=1234&group=host%3Aabcdefgh&from_ts=1627560405000)] \u00b7 [[Edit Monitor](https://app.datadoghq.com/monitors#1234/edit)] \u00b7 [[View abcdefgh](https://app.datadoghq.com/infrastructure?filter=abcdefgh)] \u00b7 [[Show Processes](https://app.datadoghq.com/process?sort=memory%2CASC&to_ts=1234&tags=host%abcdefgh&from_ts=1627560405000&live=false&showSummaryGraphs=true)]\n%%%",

        "text_only_msg": "\nwarning\nhost stop\n @webhook-webhook-test-all\n\nMetric Graph:

https://app.datadoghq.com/monitors/1234?to_ts=1627561365000&group=host%abcdefgh&from_ts=1627557705000

\u00b7 Monitor Status:

https://app.datadoghq.com/monitors/1234?group=host%abcdefgh

\u00b7 Edit Monitor:

https://app.datadoghq.com/monitors#42655965/edit

\u00b7 Event URL:

https://app.datadoghq.com/event/event?id=1234

\u00b7 View abcdefgh:

https://app.datadoghq.com/infrastructure?filter=abcdefgh

\u00b7 Show Processes:

https://app.datadoghq.com/process?sort=memory%2CASC&to_ts=None&tags=host%abcdefgh&from_ts=None&live=false&showSummaryGraphs=true",

        "alert_metric": "null",

        "alert_query": "\"datadog.agent.up\".over(\"host:abcdefgh\").by(\"host\").last(2).count_by_status()",

        "alert_scope": "host:abcdefgh",

        "alert_status": "",

        "alert_type": "error",

        "email": "",

        "event_type": "service_check",

        "hostname": "abcdefgh",

        "logs_sample": "null",

        "metric_namespace": "",

        "priority": "normal",

        "user": "null",

        "username": "",

        "__aggreg_key__": "a1b2c3",

        "__alert_cycle_key__": "123456789",

        "__incident_attachments__": "null",

        "__incident_commander__": "null",

        "__incident_customer_impact__": "null",

        "__incident_fildes__": "null",

        "__incident_public_id__": "null",

        "__incident_title": "null",

        "__incident_url__": "null",

        "__org_id__": "123",

        "__org_name__": "ali",

        "__security_rule_name__": "null",

        "__security_signal_id__": "null",

        "__security_signal_severity__": "null",

        "__security_signal_title__": "null",

        "__security_signal_msg__": "null",

        "__security_signal_attributes__": "null",

        "__security_rule_id__": "null",

        "__security_rule_query__": "$SECURITY_RULE_QUERY",

        "__security_rule_group_by_fields__": "null",

        "__security_rule_type__": "null",

        "__link_snapshot_url__": "null",

      "__synthetics_test_name__": "null",

        "__synthetics_first_failing_step_name__": "null"   

    "severity": "P1",

    "drill_down_query": "https://app.datadoghq.com/event/event?id=123456"     

}

上述消息與SLS的标準告警消息基本一緻,SLS隻需要去掉其中的空字段和無效字段,然後加入DataDog告警消息不具備的一些字段,最後在labels和annotations字段中再加入一些資訊,就可以将該消息轉為SLS的标準告警消息。

總結

将DataDog的告警消息接入SLS後,極大地拓展了告警消息的後續處理,不止豐富了通知管理部分的功能,還對後續告警資料的應用提供了平台,進而更全面地保證了系統服務的穩定性。

繼續閱讀