如果大家了解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就能收到消息了。
全程只要手点,无需代码。是不是还凑合。 :)