如果大家了解Azure的話,應該知道Azure的監控是有一個集中的Azure Monitor服務來管理,可以監控到Azure平臺上的方方面面,并且根據自己的需要還可以創建警告發送到短信或者Email,但是現在我們很多客戶運維小組會使用Teams或者Slack這樣的軟件來進行協作,這時候我們就需要讓警告能夠直接發送到寫作軟件的聊天頻道里。
Azure上我們有一個Logic Apps這樣的服務,能夠不用寫代碼無縫對接Monitor和Teams/Slack,輕松把Activity Log告警推送到協作頻道。
準備Logic Apps
首先按照如下圖創建Logic App
創建好了直接進入Designer,選擇When a HTTP request is received,這樣Monitor可以直接把消息推過去
首先需要定義傳進來的數據格式,點擊Use Sample Payload to Generate schema.
將下面的示例代碼復制文本框生成Schema(這是Activity Log的Schema,如果有Metric或者其他Alert的話,替換成相應的Schema
{
"schemaId": "Microsoft.Insights/activityLogs",
"data": {
"status": "Activated",
"context": {
"activityLog": {
"authorization": {
"action": "microsoft.insights/activityLogAlerts/write",
"scope": "/subscriptions/?"
},
"channels": "Operation",
"claims": "?",
"caller": "logicappdemo@contoso.com",
"correlationId": "91ad2bac-1afa-4932-a2ce-2f8efd6765a3",
"description": "",
"eventSource": "Administrative",
"eventTimestamp": "2018-04-03T22:33:11.762469+00:00",
"eventDataId": "ec74c4a2-d7ae-48c3-a4d0-2684a1611ca0",
"level": "Informational",
"operationName": "microsoft.insights/activityLogAlerts/write",
"operationId": "61f59fc8-1442-4c74-9f5f-937392a9723c",
"resourceId": "/subscriptions/?",
"resourceGroupName": "LOGICAPP-DEMO",
"resourceProviderName": "microsoft.insights",
"status": "Succeeded",
"subStatus": "",
"subscriptionId": "?",
"submissionTimestamp": "2018-04-03T22:33:36.1068742+00:00",
"resourceType": "microsoft.insights/activityLogAlerts"
}
},
"properties": {}
}
}
然后點擊 +New Step,搜索Microsoft Teams,添加Teams連接器
選擇Post a Message.
這時候會出現Sign In按鈕,點擊然后用相應的Teams賬號登陸,選擇對應的Team和Channel,Message Body里面按圖中填入,圖標部分可以在右邊的Dynamic Content選擇對應的參數
至此,Logic App就準備好了。點擊保存,運行,把他開啟。
接下來我們只要在Monitor里面把Alert創建好并且ActionGroup設置成我們剛創建好的Logic Apps.
創建Monitor Alert
創建Alert之前我們需要準備好一個ActionGroup。
新建Action Group,Action Type里選到剛創建的LogicApp
按照如下圖去創建Monitor Alert,選中資源,配置好觸發條件(這里配置的是監控虛機啟動),選中Action Group。這就大功告成了
接下來去啟動剛才監控的機器。很快Teams就能收到消息了。
全程只要手點,無需代碼。是不是還湊合。 :)