1
votes

I've created an Alert in my App Service that sends an Alert to a logic app, the logic app is then posting a message to Microsoft Teams. https://docs.microsoft.com/en-us/azure/azure-monitor/platform/action-groups-logic-app

Everything is working as expected accept that i can get the data out of the individual into my Message.

I've used the following in schema in my logic App

{
    "schemaId": "azureMonitorCommonAlertSchema",
    "data": {
        "essentials": {
            "alertId": "/subscriptions/MyAlert",
            "alertRule": "Web - Test teams",
            "severity": "Sev1",
            "signalType": "Metric",
            "monitorCondition": "Fired",
            "monitoringService": "Platform",
            "alertTargetIDs": [
                "/subscriptions/MySub"
            ],
            "originAlertId": "bd40051b-35fa-,
            "firedDateTime": "2020-06-03T14:53:34.0942607Z",
            "description": "",
            "essentialsVersion": "1.0",
            "alertContextVersion": "1.0"
        },
        "alertContext": {
            "properties": null,
            "conditionType": "SingleResourceMultipleMetricCriteria",
            "condition": {
                "windowSize": "PT5M",
                "allOf": [
                    {
                        "metricName": "Http2xx",
                        "metricNamespace": "Microsoft.Web/sites",
                        "operator": "GreaterThan",
                        "threshold": "5",
                        "timeAggregation": "Total",
                        "dimensions": [
                            {
                                "name": "ResourceId",
                                "value": "MyWebs.com"
                            }
                        ],
                        "metricValue": 24,
                        "webTestName": null
                    }
                ],
                "windowStartTime": "2020-06-03T14:45:23.095Z",
                "windowEndTime": "2020-06-03T14:50:23.095Z"
            }
        }
    }
}

Then in the designer added the fields Logic App designer

Here is the details from the Logic code view for the message body "content": "

Your Azure Monitor alert was triggered
\nAzure monitor alert rule Web - Test teams was triggered at @{triggerBody()?['body']?['data']?['alertContext']?['condition']?['windowEndTime']}
\n
\nRule: @{triggerBody()?['body']?['data']?['essentials']?['alertRule']}
\nBody:@{triggerBody()}
\nHeader:@{triggerOutputs()['headers']}
\nheaders:@{triggerBody()?['headers']}
\nessentials:@{triggerBody()?['body']?['data']?['essentials']}
\ndata:@{triggerBody()?['body']?['data']}
\nbody:@{triggerBody()?['body']}

"

The only field that gets populated is the body and none of the specific fields

Your Azure Monitor alert was triggered Azure monitor alert rule Web - Test teams was triggered at

Rule: Body:{"schemaId":"azureMonitorCommonAlertSchema","data":{"essentials":{"alertId":"/subscriptions/bresourceGroups/Microsoft.AlertsManagement/alerts","alertRule":"Web - Test Alert","severity":"Sev0","signalType":"Metric","monitorCondition":"Fired","monitoringService":"Platform","alertTargetIDs":[""],"originAlertId":"":"2020-06-03T15:49:20.1712118Z","description":"","essentialsVersion":"1.0","alertContextVersion":"1.0"},"alertContext":{"properties":null,"conditionType":"SingleResourceMultipleMetricCriteria","condition":{"windowSize":"PT5M","allOf":[{"metricName":"Http2xx","metricNamespace":"Microsoft.Web/sites","operator":"GreaterThan","threshold":"3","timeAggregation":"Count","dimensions":[{"name":"ResourceId","value":""}],"metricValue":7.0,"webTestName":null}],"windowStartTime":"2020-06-03T15:41:05.994Z","windowEndTime":"2020-06-03T15:46:05.994Z"}}}} Header:{"Connection":"Keep-Alive","Expect":"100-continue","Host":"prod-06.uksouth.logic.azure.com","User-Agent":"IcMBroadcaster/1.0","X-CorrelationContext":"RkkKACgAAAACAAAAEABEgMLahbH0Sqw1EVoRy7Y8AQAQANlpmHhZlSRMkU6bLTb+DSk=","Content-Length":"1254","Content-Type":"application/json; charset=utf-8"} headers: essentials: data: body:

1
You can also use "Parse JSON" action to parse the Body from the trigger and use the fields from "Parse JSON" in your "Post a message" action.Hury Shen

1 Answers

0
votes

I had to manually update the Logic Code and remove the additional body tag

original

@{triggerBody()?['body']?['data']?['alertContext']?['condition']?['windowEndTime']}

to this

@{triggerBody()?['data']?['alertContext']?['condition']?['windowEndTime']}