$ type в условии AlertRule в шаблоне ARM - PullRequest
0 голосов
/ 04 апреля 2019

Я новичок в шаблонах ARM и работаю над шаблоном для развертывания веб-теста и правила оповещения для экземпляра приложения. Информация о приложении создается и поддерживается с помощью Terraform, но правила оповещения и веб-тесты пока не поддерживаются в Terraform должным образом. Я использовал пример, взятый из этой проблемы Github , но теперь мы хотим разделить его на шаг ARM в конвейере DevOps Azure, так как нам нужно получить URL-адрес для предупреждения webhook, что мы не можем сделать легко внутри скрипта Terraform.

Я очищал то, что пришло из этого примера, и использовал этот шаблон быстрого запуска в качестве контрольной точки. Однако я заметил кое-что в примере быстрого запуска, которого у меня нет в моем примере, и я не могу найти какую-либо информацию по нему.

В объекте свойств определения правила оповещения у нас есть объект условия, который имеет odata.type, а связанный dataSource также имеет odata.type, например:

"properties": {
    "name": "[parameters('test').name]",
    "description": "[parameters('test').description]",
    "isEnabled": true,
    "condition": {
        "odata.type": "Microsoft.Azure.Management.Insights.Models.LocationThresholdRuleCondition",
        "dataSource": {
            "odata.type": "Microsoft.Azure.Management.Insights.Models.RuleMetricDataSource",
            "resourceUri": "[resourceId('microsoft.insights/webtests/', parameters('test').name)]",
            "metricName": "GSMT_AvRaW"
         },
         "windowSize": "PT5M",
         "failedLocationCount": "[parameters('test').failedLocationCount]"
},

Пример быстрого запуска почти идентичен, но перед записями odata.type есть запись $type, например:

"properties": {
    "name": "[parameters('tests')[copyIndex(1)].name]",
    "description": "[parameters('tests')[copyIndex(1)].description]",
    "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/', parameters('tests')[copyIndex()].name)]",
        "metricName": "GSMT_AvRaW"
      },
      "windowSize": "PT15M",
      "failedLocationCount": "[parameters('tests')[copyIndex(1)].failedLocationCount]"
    },

Тем не менее мой шаблон работает, но следует ли мне включить свойства $type? Или они зависят от варианта использования? У меня не было большого успеха в поиске какой-либо документации по этому вопросу.

1 Ответ

0 голосов
/ 09 апреля 2019

Я обнаружил возможную ошибку, если она не упоминает тип $ в действии и что-то вроде этого:

"condition": {
      "$type": "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.ThresholdRuleCondition, Microsoft.WindowsAzure.Management.Mon.Client",
      "odata.type": "Microsoft.Azure.Management.Insights.Models.ThresholdRuleCondition",
      "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/components', variables('appInsName'))]",
        "metricName": "request.duration"
      },
      "threshold": "[parameters('responseTime')]",
      "windowSize": "PT5M"
    },
    "actions": [
      {
        "$type": "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.RuleEmailAction, Microsoft.WindowsAzure.Management.Mon.Client",
        "odata.type": "Microsoft.Azure.Management.Insights.Models.RuleEmailAction",
        "sendToServiceOwners": true,
        "customEmails": []
      }

Ошибка при запуске этого сценария:

New-AzureRmResourceGroupDeployment -Verbose -ResourceGroupName rg.test.ARM -TemplateFile azuredeploy.json -TemplateParameterFile azuredeploy.parameters.json -DeploymentDebugLogLevel All

Сообщение об ошибке: Ошибка - нет целевого ресурса для этого оповещения. CPU default-app-name-plan.

Поэтому в идеале нужно указать $ type в условии и действии, чтобы избежать этой ошибки при развертывании из PowerShell./cli.

Существует также аналогичная проблема здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...