Search code examples
azureautomationmetricsazure-rm-template

Internal server error while deploying an arm template to azure


I am deploying an new metric alert to Azure with an ARM template. I am following the exact same way of Microsoft doc. With the only change that I deploy just 1 metric to an Automation account and not to an storage account

Template file

  "variables": {
    "criterion1": "[array(parameters('criterion1'))]",
    "criteria": "[concat(variables('criterion1'))]"
 
  
},
"resources": [
    {
        "name": "[parameters('alertName')]",
        "type": "Microsoft.Insights/metricAlerts",
        "location": "global",
        "apiVersion": "2018-03-01",
        "tags": {},
        "properties": {
            "description": "[parameters('alertDescription')]",
            "severity": "[parameters('alertSeverity')]",
            "enabled": "[parameters('isEnabled')]",
            "scopes": [
                "[parameters('resourceId')]"
            ],
            "evaluationFrequency": "[parameters('evaluationFrequency')]",
            "windowSize": "[parameters('windowSize')]",
            "criteria": {
                "odata.type": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria",
                "allOf": "[variables('criteria')]"
            },
            "actions": [
                {}
            ]
        }
    }
]

parameter file

  "criterion1": {
            "value": {
                "name": "1st criterion",
                "metricName": "TotalJob",
                "dimensions": [
                    {
                        "name": "Status",
                        "operator": "Include",
                        "values": [
                            "Failed"
                        ]
                    },
                    {
                        "name": "Status",
                        "operator": "Include",
                        "values": [
                            "Completed"
                        ]
                    }
                ],
                "operator": "GreaterThan",
                "threshold": "5",
                "timeAggregation": "Total"
            }
        }

But when i deploy this to Azure my Powershell command get stuck without giving any errors even with -DeploymentDebugLogLevel All parameter on it. In Azure portal I got the error "Internal server error" without any context. The json log gives me following logs:

{
"authorization": {
    "action": "Microsoft.Insights/metricAlerts/write",
    "scope": "/subscriptions/xxxxxx/resourcegroups/bilalachahbar/providers/Microsoft.Insights/metricAlerts/New Metric Alert"
},
"caller": "xxxx",
"channels": "Operation",
"claims": {
    "aud": "https://management.azure.com/",
    "iss": "https://sts.windows.net/17b5a1d-057c-4ac-a15a-08758f7a7064/",
    "iat": "15596014",
    "nbf": "15596014",
    "exp": "15599914",
    "aio": "42RgYDgypS7rfe/Of0l1R+q3TbCgA=",
    "appid": "0e4a093a-c6fd-4fba-b4e5-f07ba479f203",
    "appidacr": "1",
    "http://schemas.microsoft.com/identity/claims/identityprovider": "https://sts.windows.net/17xxxxxc5-a15a-08758f7a7064/",
    "http://schemas.microsoft.com/identity/claims/objectidentifier": "a3db39bf-8c65-4b84-b049-d7af99bfb3e",
    "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier": "a3db39bf-8c65-4b84-b049-d7af99bfb3e",
    "http://schemas.microsoft.com/identity/claims/tenantid": "1xxxxxx057c-4ac5-a15a-087f7a7064",
    "uti": "SCkIk235EScz0Hst20AA",
    "ver": "1.0"
},
"correlationId": "8013b5-9788-41ed-afcf-0dbd8276349c",
"description": "",
"eventDataId": "e39509-0837-4435-af7a-02ba1462055f",
"eventName": {
    "value": "EndRequest",
    "localizedValue": "End request"
},
"category": {
    "value": "Administrative",
    "localizedValue": "Administrative"
},
"eventTimestamp": "2018-12-27T14:11:48.1462445Z",
"id": "/subscriptions/xxxxx/resourcegroups/xxxxxx/providers/Microsoft.Insights/metricAlerts/New+Metric+Alert/events/e39509-0837-4435-af7a-02ba1462055f/ticks/815167081462445",
"level": "Error",
"operationId": "e390389-ecc1-4a2-8c2-d94ea635cb",
"operationName": {
    "value": "Microsoft.Insights/metricAlerts/write",
    "localizedValue": "Create or update metric alert"
},
"resourceGroupName": "xxxxx",
"resourceProviderName": {
    "value": "Microsoft.Insights",
    "localizedValue": "Microsoft Insights"
},
"resourceType": {
    "value": "Microsoft.Insights/metricAlerts",
    "localizedValue": "Microsoft.Insights/metricAlerts"
},
"resourceId": "/subscriptions/xxxxxx/resourcegroups/bilalachahbar/providers/Microsoft.Insights/metricAlerts/New Metric Alert",
"status": {
    "value": "Failed",
    "localizedValue": "Failed"
},
"subStatus": {
    "value": "InternalServerError",
    "localizedValue": "Internal Server Error (HTTP Status Code: 500)"
},
"submissionTimestamp": "2018-12-27T14:12:05.0719055Z",
"subscriptionId": "xxxxxx",
"properties": {
    "statusCode": "InternalServerError",
    "serviceRequestId": "8613b5-9788-41d-afcf-0dbd27639c",
    "statusMessage": "{\"error\":{\"code\":\"InternalServerError\",\"message\":\"The server encountered an internal error, please retry. If the problem persists, contact support.\"}}"
},
"relatedEvents": []

}

An other stack overflow question got an sort of same question. He got the problem when using an resource that is not supported anymore but I guess that is not the case with me because the official MS documentation is from september this year. I got the same issues when I use the exact same arm template that is provided in the documentation


Solution

  • I found my own error Action groups are required when you want to deploy metric alerts. As you can see in the documentation they provide an action ID, and I didn't. As I thought that it wasn't necessary it actually is. I know this is obvious but unfortunately I did not saw this in the documentation or in the error. After some debugging and looking in the Resource Explorer I've noticed this. SO future reader I hope this will solve your issue

    One little feedback is that there is no depends on value ATM so I can not create an action group resource first in the same arm template