需要创建 ARM 模板以使用基于 HTTP 状态代码范围 (400-530) 的自定义自动修复在 Azure 应用程序服务中启用自动修复

Need to Create ARM Template to enable Auto healing in Azure App service with Custom Auto healing based on HTTP status code range (400-530)

我需要创建 ARM 模板以启用基于 HTTP 状态代码范围 (400-530) 的自定义自动修复的 Azure 应用服务中的自动修复,并在达到指定状态代码的请求计数时回收应用服务并规定了时限。我找不到状态代码范围的 ARM 模板配置,我只能看到单个状态代码。有人可以帮我找到正确的配置以提及状态代码范围并告诉我如何配置以下内容。

"type": "Microsoft.Web/sites/config", "apiVersion": "2018-11-01", “名称”:“[concat(参数('sites_SampleAutoHeal_name'), '/web')]”, "location": "西欧", “取决于”: [ “[resourceId('Microsoft.Web/sites', 参数('sites_SampleAutoHeal_name'))]” ], ..... “autoHealEnabled”:真实的, “autoHealRules”:{ “触发器”:{ “privateBytesInKB”:0, “状态代码”:[], “慢速请求”:{} }, “行动”:{ "actionType": "回收", “minProcessExecutionTime”:“00:00:00” } },

好的,我不知道这是否能解决您的问题。我会 post 我有什么然后解释:

        "autoHealEnabled": true,
        "autoHealRules": {
            "triggers": {
                "requests": null,
                "privateBytesInKB": 0,
                "statusCodes": [],
                "statusCodesRange": [
                    {
                        "statusCodes": "500-530",
                        "path": "",
                        "count": 10,
                        "timeInterval": "00:02:00"
                    }
                ],
                "slowRequests": null,
                "slowRequestsWithPath": []
            },
            "actions": {
                "actionType": 0,
                "customAction": null,
                "minProcessExecutionTime": "00:00:00"
            }
        },

这是我所做的:

  1. 转到应用程序服务的 activity 日志并提取最近的更改 JSON。 无结果
  2. 在资源组导出中导出该资源的模板。翻遍了所有的历史。 没有结果 - 只有似乎是自动修复的空配置
  3. 运行Export-AzResourceGroup做同样的事情,同2.
  4. 转到应用程序服务的诊断 blade 并在调试器打开的情况下启动自动修复,然后转到自定义规则选项卡。在流量日志中,我发现了对管理 API 的请求,该请求返回了包含上述配置的结果。 成功???

底线?我想你可以试试这个。它可能会起作用。我不相信这是完全以标准方式连接到 ARM 中的,并且可能必须由 API.

完成

编辑: 我刚刚在 Postman 中验证了 https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.Web/sites/{{appServiceName}}/config/web?api-version=2015-08-01 returns auto-heal 设置。因此,如果 ARM 模板没有发挥作用,您可能可以使用 API.

编辑: 所以,我在设置了这个的应用程序服务上使用了 $app = Get-AzWebApp ...$app.SiteConfig.AutoHealRules.Triggers 只包括 Requests、PrivateBytesInKB、StatusCodes (不是范围)和 SlowRequests。所以,使用 Set-AzWebApp 看起来还没有准备好。

你可以尝试这样的东西——它没有被调试:

$props = @{
    autoHealEnabled =  $true
    autoHealRules =  @{
        triggers =  @{
            requests =  $null
            privateBytesInKB =  0
            statusCodes =  @()
            statusCodesRange =  @(
                {
                    statusCodes =  "500-530"
                    path =  ""
                    count =  10
                    timeInterval =  "00:02:00"
                }
            )
            slowRequests =  $null
            slowRequestsWithPath =  @()
        }
        actions =  @{
            actionType =  0
            customAction =  $null
            minProcessExecutionTime =  "00:00:00"
        }
        }
    }

Set-AzResource -$props -ResourceGroupName "YourResourceGroup" -ResourceName "YourAppServiceName/web" -ResourceType "Microsoft.Web/sites/config"