$在ARM模板中的AlertRule条件中输入

问题描述 投票:0回答:1

我是ARM模板的新手,我正在使用模板将Web测试和警报规则部署到应用程序洞察实例。使用Terraform创建和维护应用程序洞察,但Terraform尚未正确支持警报规则和Web测试。我使用的是来自this Github issue的示例,但我们现在想要将它分离到Azure DevOps管道中的ARM步骤,因为我们需要获取webhook警报的URL,这是我们在Terraform脚本中无法轻松完成的。

我一直在清理这个例子中的内容并使用this quickstart template作为参考点。但是我在快速启动示例中注意到了一些我在我的示例中没有的内容,而且我似乎无法找到有关它的任何信息。

在警报规则定义属性对象中,我们有条件对象,它有一个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属性吗?或者他们是否依赖于用例?我在寻找任何相关文档方面都没有取得多大成功。

azure templates azure-application-insights azure-resource-manager arm-template
1个回答
0
投票

我发现了一个可能的错误,如果它没有在Action中提及$ type并且条件如下:

"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部署时出现此错误。

here也有类似的问题。

© www.soinside.com 2019 - 2024. All rights reserved.