如何推送Azure Monitor报警到Teams

如果大家了解Azure的话,应该知道Azure的监控是有一个集中的Azure Monitor服务来管理,可以监控到Azure平台上的方方面面,并且根据自己的需要还可以创建警告发送到短信或者Email,但是现在我们很多客户运维小组会使用Teams或者Slack这样的软件来进行协作,这时候我们就需要让警告能够直接发送到写作软件的聊天频道里。
Azure上我们有一个Logic Apps这样的服务,能够不用写代码无缝对接Monitor和Teams/Slack,轻松把Activity Log告警推送到协作频道。

准备Logic Apps

首先按照如下图创建Logic App


创建Logic App

创建好了直接进入Designer,选择When a HTTP request is received,这样Monitor可以直接把消息推过去


首先需要定义传进来的数据格式,点击Use Sample Payload to Generate schema.


定义JSON格式

将下面的示例代码复制文本框生成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": "[email protected]",
                "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连接器


添加Teams Action

选择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就能收到消息了。


全程只要手点,无需代码。是不是还凑合。 :)

你可能感兴趣的:(如何推送Azure Monitor报警到Teams)