2

Я пытаюсь использовать шаблон менеджера ресурсов Azure для создания предупреждения в Application Insights. Проблема, с которой я сталкиваюсь, - это то значение, которое я должен поставить для resourceUri. Я пробовал несколько разных значений, я не уверен, что это должен быть ресурс, который я контролирую, или что-то еще. Документация является наиболее бесполезной. Когда я пытаюсь со значением ниже, это дает мне ошибку проверки.Создание тревоги для менеджера Azure Resource

Также неясно, как я фактически связываю оповещение с компонентом. Предполагается ли он быть вложенным как ресурс в компоненте? У меня есть dependsOn, ссылающийся на компонент, но из того, что я понимаю, просто обеспечит создание первого ресурса.

{ 
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json", 
    "contentVersion": "1.0.0.0", 
    "resources": [ 
     { 
      "apiVersion": "2014-04-01", 
      "type": "Microsoft.Insights/components", 
      "name": "testmetrics", 
      "location": "Central US" 
     }, 
     { 
      "apiVersion": "2014-04-01", 
      "type": "Microsoft.Insights/alertrules", 
      "name": "testAlert1", 
      "dependsOn": [ 
       "[concat('Microsoft.Insights/components/', 'testmetrics')]" 
      ], 
      "location": "Central US", 
      "properties": { 
       "description": "Test description", 
       "action": { 
        "customEmails": [ "[email protected]" ] 
       }, 
       "condition": { 
        "failedLocationCount": "1", 
        "odata.type": "Microsoft.Azure.Management.Insights.Models.ThresholdRuleCondition", 
        "threshold": "0", 
        "dataSource": { 
         "metricName": "BackupFailed", 
         "odata.type": "Microsoft.Azure.Management.Insights.Models.RuleMetricDataSource", 
         "resourceUri": "/Microsoft.Web/sites/mytestsite" 
        }, 
        "operator": "GreaterThan", 
        "windowSize": "1" 
       } 
      } 
     } 
    ] 
} 
+0

Да, вы правы. dependsOn используется только для обеспечения того, чтобы ресурсы были созданы в первую очередь. В вашем случае правило предупреждения должно быть зависеть от сервиса приложений. –

ответ

0

Отличный способ, чтобы выяснить, как писать эти шаблоны правильно (если вы не можете найти ссылку в Репозиторий Github для ARM quickstart templates) состоит в том, чтобы создать группу ресурсов в Azure portal, настроить вашу систему и затем экспортировать в шаблон JSON (найденный в клике «Настройка» при нажатии на вашу группу ресурсов).

Я только что создал пример ресурса Application Insights с предупреждением и получил один ниже.

Вы можете видеть, как зависимость вложенна и правильный синтаксис. Также обратите внимание, что место для Центральных США предоставляются как "centralus"

{ 
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 
"contentVersion": "1.0.0.0", 
"parameters": { 
    "alertrules_analertname_name": { 
     "defaultValue": "analertname", 
     "type": "String" 
    }, 
    "components_appinsightname_name": { 
     "defaultValue": "appinsightname", 
     "type": "String" 
    } 
}, 
"variables": {}, 
"resources": [ 
    { 
     "comments": "Generalized from resource: '/subscriptions/SOME-SUBSCRIPTIN-GUID/resourceGroups/Default-ApplicationInsights-CentralUS/providers/microsoft.insights/alertrules/analertname'.", 
     "type": "microsoft.insights/alertrules", 
     "name": "[parameters('alertrules_analertname_name')]", 
     "apiVersion": "2014-04-01", 
     "location": "East US", 
     "tags": { 
      "hidden-link:/subscriptions/SOME-SUBSCRIPTIN-GUID/resourcegroups/Default-ApplicationInsights-CentralUS/providers/microsoft.insights/components/appinsightname": "Resource" 
     }, 
     "properties": { 
      "name": "[parameters('alertrules_analertname_name')]", 
      "description": "Some alert", 
      "isEnabled": true, 
      "condition": { 
       "odata.type": "Microsoft.Azure.Management.Insights.Models.ThresholdRuleCondition", 
       "dataSource": { 
        "odata.type": "Microsoft.Azure.Management.Insights.Models.RuleMetricDataSource", 
        "resourceUri": "[resourceId('microsoft.insights/components', parameters('components_appinsightname_name'))]", 
        "metricName": "availability.availabilityMetric.value" 
       }, 
       "threshold": 1, 
       "windowSize": "PT5M" 
      }, 
      "action": { 
       "odata.type": "Microsoft.Azure.Management.Insights.Models.RuleEmailAction", 
       "customEmails": [ 
        "[email protected]" 
       ] 
      } 
     }, 
     "dependsOn": [ 
      "[resourceId('microsoft.insights/components', parameters('components_appinsightname_name'))]" 
     ] 
    }, 
    { 
     "comments": "Generalized from resource: '/subscriptions/SOME-SUBSCRIPTIN-GUID/resourceGroups/Default-ApplicationInsights-CentralUS/providers/microsoft.insights/components/appinsightname'.", 
     "type": "microsoft.insights/components", 
     "kind": "web", 
     "name": "[parameters('components_appinsightname_name')]", 
     "apiVersion": "2014-04-01", 
     "location": "centralus", 
     "tags": {}, 
     "properties": { 
      "ApplicationId": "[parameters('components_appinsightname_name')]" 
     }, 
     "dependsOn": [] 
    } 
] 

}

Надеется, что это помогает.

+0

Определенно помогает! Это именно то, что я искал, но я не знал, где его найти на портале. Я пытался найти его в истории развертывания для группы ресурсов. Это упростит создание шаблонов писем. К сожалению, похоже, что не все ресурсы могут быть экспортированы таким образом (например, не удалось получить ресурсы типа «Microsoft.Scheduler/jobscollections». Ресурсы этого типа не будут экспортироваться. (Код: ExportTemplateProviderError)). Но это отдельная проблема из этого. –

2

resourceUrl следует обратиться к службе Application Insights в следующем формате:

"resourceUri": "[concat(resourceGroup().id, '/providers/Microsoft.Insights/components/', 'testmetrics')]" 
+0

Извините, должен был упомянуть, что я тоже это пробовал. Это дает мне эту ошибку: идентификатор целевого ресурса '/ subscriptions/<подписка-id>/resourceGroups/<группа ресурсов> /providers/Microsoft.Insights/components/testmetrics' не поддерживается. (Код: ResourceNotSupported) –

+2

'Central US' не является допустимым местом для правила предупреждения, вместо этого попробуйте использовать« East US ». http://stackoverflow.com/questions/36354057/alert-creation-for-appinsights-fails-with-coderesourcenotsupported/36647495#36647495 –

+0

Да, похоже, что это часть проблемы. Странно, что компонент App Insights будет находиться в одном регионе, а сигналы тревоги - в другом. –