{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "hostingPlanName": { "type": "string", "minLength": 1 }, "skuName": { "type": "string", "defaultValue": "F1", "allowedValues": [ "F1", "D1", "B1", "B2", "B3", "S1", "S2", "S3", "P1", "P2", "P3", "P4" ], "metadata": { "description": "Describes plan's pricing tier and capacity. Check details at https://azure.microsoft.com/en-us/pricing/details/app-service/" } }, "skuCapacity": { "type": "int", "defaultValue": 1, "minValue": 1, "metadata": { "description": "Describes plan's instance count" } } }, "variables": { "webSiteName": "[concat('everythingAsCode-', uniqueString(resourceGroup().id))]" }, "resources": [ { "apiVersion": "2015-08-01", "name": "[parameters('hostingPlanName')]", "type": "Microsoft.Web/serverfarms", "location": "[resourceGroup().location]", "tags": { "displayName": "HostingPlan" }, "sku": { "name": "[parameters('skuName')]", "capacity": "[parameters('skuCapacity')]" }, "properties": { "name": "[parameters('hostingPlanName')]" } }, { "apiVersion": "2015-08-01", "name": "[variables('webSiteName')]", "type": "Microsoft.Web/sites", "location": "[resourceGroup().location]", "tags": { "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]": "Resource", "displayName": "Website" }, "dependsOn": [ "[resourceId('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]" ], "properties": { "name": "[variables('webSiteName')]", "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]" } }, { "apiVersion": "2014-04-01", "name": "[concat(parameters('hostingPlanName'), '-', resourceGroup().name)]", "type": "Microsoft.Insights/autoscalesettings", "location": "[resourceGroup().location]", "tags": { "[concat('hidden-link:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]": "Resource", "displayName": "AutoScaleSettings" }, "dependsOn": [ "[resourceId('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]" ], "properties": { "profiles": [ { "name": "Default", "capacity": { "minimum": 1, "maximum": 2, "default": 1 }, "rules": [ { "metricTrigger": { "metricName": "CpuPercentage", "metricResourceUri": "[concat(resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]", "timeGrain": "PT1M", "statistic": "Average", "timeWindow": "PT10M", "timeAggregation": "Average", "operator": "GreaterThan", "threshold": 80.0 }, "scaleAction": { "direction": "Increase", "type": "ChangeCount", "value": 1, "cooldown": "PT10M" } }, { "metricTrigger": { "metricName": "CpuPercentage", "metricResourceUri": "[concat(resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]", "timeGrain": "PT1M", "statistic": "Average", "timeWindow": "PT1H", "timeAggregation": "Average", "operator": "LessThan", "threshold": 60.0 }, "scaleAction": { "direction": "Decrease", "type": "ChangeCount", "value": 1, "cooldown": "PT1H" } } ] } ], "enabled": false, "name": "[concat(parameters('hostingPlanName'), '-', resourceGroup().name)]", "targetResourceUri": "[concat(resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]" } }, { "apiVersion": "2014-04-01", "name": "[concat('ServerErrors ', variables('webSiteName'))]", "type": "Microsoft.Insights/alertrules", "location": "[resourceGroup().location]", "dependsOn": [ "[resourceId('Microsoft.Web/sites/', variables('webSiteName'))]" ], "tags": { "[concat('hidden-link:', resourceGroup().id, '/providers/Microsoft.Web/sites/', variables('webSiteName'))]": "Resource", "displayName": "ServerErrorsAlertRule" }, "properties": { "name": "[concat('ServerErrors ', variables('webSiteName'))]", "description": "[concat(variables('webSiteName'), ' has some server errors, status code 5xx.')]", "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('webSiteName'))]", "metricName": "Http5xx" }, "operator": "GreaterThan", "threshold": 0.0, "windowSize": "PT5M" }, "action": { "odata.type": "Microsoft.Azure.Management.Insights.Models.RuleEmailAction", "sendToServiceOwners": true, "customEmails": [] } } }, { "apiVersion": "2014-04-01", "name": "[concat('ForbiddenRequests ', variables('webSiteName'))]", "type": "Microsoft.Insights/alertrules", "location": "[resourceGroup().location]", "dependsOn": [ "[resourceId('Microsoft.Web/sites/', variables('webSiteName'))]" ], "tags": { "[concat('hidden-link:', resourceGroup().id, '/providers/Microsoft.Web/sites/', variables('webSiteName'))]": "Resource", "displayName": "ForbiddenRequestsAlertRule" }, "properties": { "name": "[concat('ForbiddenRequests ', variables('webSiteName'))]", "description": "[concat(variables('webSiteName'), ' 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('webSiteName'))]", "metricName": "Http403" }, "operator": "GreaterThan", "threshold": 0, "windowSize": "PT5M" }, "action": { "odata.type": "Microsoft.Azure.Management.Insights.Models.RuleEmailAction", "sendToServiceOwners": true, "customEmails": [] } } }, { "apiVersion": "2014-04-01", "name": "[concat('CPUHigh ', parameters('hostingPlanName'))]", "type": "Microsoft.Insights/alertrules", "location": "[resourceGroup().location]", "dependsOn": [ "[resourceId('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]" ], "tags": { "[concat('hidden-link:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]": "Resource", "displayName": "CPUHighAlertRule" }, "properties": { "name": "[concat('CPUHigh ', parameters('hostingPlanName'))]", "description": "[concat('The average CPU is high across all the instances of ', parameters('hostingPlanName'))]", "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/serverfarms/', parameters('hostingPlanName'))]", "metricName": "CpuPercentage" }, "operator": "GreaterThan", "threshold": 90, "windowSize": "PT15M" }, "action": { "odata.type": "Microsoft.Azure.Management.Insights.Models.RuleEmailAction", "sendToServiceOwners": true, "customEmails": [] } } }, { "apiVersion": "2014-04-01", "name": "[concat('LongHttpQueue ', parameters('hostingPlanName'))]", "type": "Microsoft.Insights/alertrules", "location": "[resourceGroup().location]", "dependsOn": [ "[resourceId('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]" ], "tags": { "[concat('hidden-link:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]": "Resource", "displayName": "LongHttpQueueAlertRule" }, "properties": { "name": "[concat('LongHttpQueue ', parameters('hostingPlanName'))]", "description": "[concat('The HTTP queue for the instances of ', parameters('hostingPlanName'), ' has a large number of pending requests.')]", "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/serverfarms/', parameters('hostingPlanName'))]", "metricName": "HttpQueueLength" }, "operator": "GreaterThan", "threshold": 100.0, "windowSize": "PT5M" }, "action": { "odata.type": "Microsoft.Azure.Management.Insights.Models.RuleEmailAction", "sendToServiceOwners": true, "customEmails": [] } } }, { "apiVersion": "2014-04-01", "name": "[variables('webSiteName')]", "type": "Microsoft.Insights/components", "location": "[resourceGroup().location]", "dependsOn": [ "[resourceId('Microsoft.Web/sites/', variables('webSiteName'))]" ], "tags": { "[concat('hidden-link:', resourceGroup().id, '/providers/Microsoft.Web/sites/', variables('webSiteName'))]": "Resource", "displayName": "AppInsightsComponent" }, "properties": { "applicationId": "[variables('webSiteName')]" } } ] }