6
votes

I have a Azure Resource Manager Template that is part of a set of nested templates. It creates a App Insights component, an alert rule against the website for forbidden requests, a multistep web test, and an alert rule against the web test. All the resources except the alert rule against the web test deploy successfully. I can go into the portal and create the alert against the test without issue after the deployment fails.

{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
    "company": {
        "type": "string"
    },
    "region": {
        "type": "string"
    },
    "retailerAPIKey": {
        "type": "string"
    },
    "deviceID": {
        "type": "string"
    },
    "lumicastVersion": {
        "type": "string"
    }
},
"variables": {
    "frameworkWebSite": "[concat(parameters('company'),'-BLS-FRAMEWORK-',parameters('region'))]"
},
"resources": [
    {
        "name": "[concat('ForbiddenRequests ', variables('frameworkWebSite'))]",
        "type": "Microsoft.Insights/alertrules",
        "location": "[parameters('region')]",
        "apiVersion": "2014-04-01",
        "tags": {
            "displayName": "ForbiddenRequests frameworkWebSite"
        },
        "properties": {
            "name": "[concat('ForbiddenRequests ', variables('frameworkWebSite'))]",
            "description": "[concat(variables('frameworkWebSite'), ' has some requests that are forbidden, status code 403.')]",
            "isEnabled": false,
            "condition": {
                "odata.type": "Microsoft.Azure.Management.Insights.Models.ThresholdRuleCondition",
                "dataSource": {
                    "odata.type": "Microsoft.Azure.Management.Insights.Models.RuleMetricDataSource",
                    "resourceUri": "[concat(resourceGroup().id, '/providers/Microsoft.Web/sites/', variables('frameworkWebSite'))]",
                    "metricName": "Http403"
                },
                "operator": "GreaterThan",
                "threshold": 0,
                "windowSize": "PT5M"
            },
            "action": {
                "odata.type": "Microsoft.Azure.Management.Insights.Models.RuleEmailAction",
                "sendToServiceOwners": true,
                "customEmails": [ ]
            }
        }
    },
    {
        "name": "[variables('frameworkWebSite')]",
        "type": "Microsoft.Insights/components",
        "location": "Central US",
        "apiVersion": "2014-04-01",
        "tags": {
            "displayName": "Component frameworkWebSite",
            "[concat('hidden-link:',resourceGroup().id,'/providers/Microsoft.Web/sites/',variables('frameworkWebSite'))]": "Resource"
        },
        "properties": {
            "applicationId": "[variables('frameworkWebSite')]"
        }
    },
    {
        "name": "[concat('siteinit-', variables('frameworkWebSite'))]",
        "apiVersion": "2015-05-01",
        "type": "Microsoft.Insights/webtests",
        "location": "Central US",
        "tags": {
            "displayName": "WebtestL ABL BSL Init frameworkWebSite",
            "[concat('hidden-link:', resourceId('microsoft.insights/components/', variables('frameworkWebSite')))]": "Resource"
        },
        "dependsOn": [
            "[concat('microsoft.insights/components/', variables('frameworkWebSite'))]"
        ],
        "properties": {
            "Name": "[concat('GETBytelightInit-',parameters('region'))]",
            "Description": "[concat('GETBytelightInit-',parameters('region'),'.webtest')]",
            "Enabled": true,
            "Frequency": 600,
            "Timeout": 120,
            "Kind": "multistep",
            "Locations": [
                { "Id": "us-il-ch1-azr" },
                { "Id": "us-ca-sjc-azr" },
                { "Id": "us-tx-sn1-azr" }
            ],
            "Configuration": {
                "WebTest": "[concat('<workingwebtest goes here>','<ends here>')]"
            },
            "SyntheticMonitorId": "[concat('siteinit-', variables('frameworkWebSite'))]"
        }
    },
    {
        "name": "[concat('siteinit-', variables('frameworkWebSite'), '-alert')]",
        "type": "Microsoft.Insights/alertrules",
        "apiVersion": "2015-04-01",
        "location": "[parameters('region')]",
        "tags": {
            "displayName": "Alert webtest site  Init frameworkWebSite",
            "[concat('hidden-link:', resourceId('microsoft.insights/components/', variables('frameworkWebSite')))]": "Resource",
            "[concat('hidden-link:', resourceId('microsoft.insights/webtests/', concat('siteinit-', variables('frameworkWebSite'))))]": "Resource"
        },
        "dependsOn": [
            "[concat('microsoft.insights/components/', variables('frameworkWebSite'))]",
            "[concat('microsoft.insights/webtests/siteinit-', variables('frameworkWebSite'))]"
        ],
        "properties": {
            "name": "[concat('siteinit-', variables('frameworkWebSite'), '-alert')]",
            "description": "Alert for site Initialize",
            "isEnabled": true,
            "condition": {
                "$type": "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.LocationThresholdRuleCondition, Microsoft.WindowsAzure.Management.Mon.Client",
                "odata.type": "Microsoft.Azure.Management.Insights.Models.LocationThresholdRuleCondition",
                "dataSource": {
                    "$type": "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.RuleMetricDataSource, Microsoft.WindowsAzure.Management.Mon.Client",
                    "odata.type": "Microsoft.Azure.Management.Insights.Models.RuleMetricDataSource",
                    "resourceUri": "[resourceId('microsoft.insights/webtests/', concat('siteinit-', variables('frameworkWebSite')))]",
                    "metricName": "GSMT_AvRaW"
                },
                "windowSize": "PT15M",
                "failedLocationCount": 2
            },
            "action": {
                "$type": "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.RuleEmailAction, Microsoft.WindowsAzure.Management.Mon.Client",
                "odata.type": "Microsoft.Azure.Management.Insights.Models.RuleEmailAction",
                "sendToServiceOwners": true,
                "customEmails": [ ]
            }
        }
    }

],
"outputs": {
    "TestLink": {
        "type": "string",
        "value": "[resourceId('microsoft.insights/webtests/', concat('siteinit-', variables('frameworkWebSite')))]"
    }
}

}

The deployment fails with:

"statusMessage": {
  "Code": "ResourceNotFound",
  "Message": "Exception of type 'Microsoft.WindowsAzure.Management.Monitoring.MonitoringServiceException' was thrown."
},

This is just the first of many test that will go in this template and each deployment has 2 copies of the site. So manual alert rule creation isn't an option.

1

1 Answers

0
votes

I think there is a problem with your resourceUri:

"resourceUri": "[concat(resourceGroup().id, '/providers/Microsoft.Web/sites/', variables('frameworkWebSite'))]",

Give it a try with the resourceId() function:

"resourceUri": "[resourceId(resourceGroup().name, 'Microsoft.Web/sites', variables('frameworkWebSite'))]",

See resourceId() reference here.

Hope this helps.