如何通过Terraform配置Azure Web App的Auto Heal自动修复设置?
Azure Web App自动修复(Auto Heal)Terraform配置示例
以下是使用azurerm_windows_web_app配置自动修复的完整示例,包含常见的触发器与动作配置:
resource "azurerm_windows_web_app" "example" { name = "example-webapp" resource_group_name = azurerm_resource_group.example.name location = azurerm_resource_group.example.location service_plan_id = azurerm_app_service_plan.example.id auto_heal_enabled = true auto_heal_settings { # 触发器配置 trigger { # 请求计数触发器:5分钟内超过1000次请求 requests { count = 1000 time_interval = "PT5M" } # 状态码触发器:5分钟内502状态码超过50次 status_codes { status_code = 502 count = 50 time_interval = "PT5M" sub_status_code = 0 win32_status_code = 0 } # 慢请求触发器:5分钟内超过10次请求响应时间超过10秒 slow_requests { count = 10 time_interval = "PT5M" slow_duration = "PT10S" } # 内存占用触发器:内存超过700MB持续2分钟 private_memory_kb = 716800 private_memory_time_interval = "PT2M" } # 动作配置 action { # 触发后执行重启动作 type = "Recycle" # 自定义动作示例(启用时需将type设为CustomAction) # custom_action { # exe = "D:\\home\\site\\scripts\\heal-action.cmd" # parameters = "-param1 value1" # } # 延迟30秒执行动作 delay = "PT30S" } } }
触发器配置说明
- 请求计数触发器:通过
requests块设置单位时间内的请求阈值,超过则触发自动修复。 - 状态码触发器:通过
status_codes块监控特定HTTP状态码(含子状态码、Win32状态码)的出现次数。 - 慢请求触发器:通过
slow_requests块捕获响应时间过长的请求,达到阈值触发动作。 - 资源占用触发器:通过
private_memory_kb设置内存阈值,private_memory_time_interval设置持续时长,超过则触发。
动作配置说明
- 动作类型:
Recycle:重启Web App进程(最常用的修复动作)LogEvent:仅在日志中记录触发事件,不执行修复动作CustomAction:执行指定的自定义脚本或可执行文件
- 延迟执行:通过
delay参数设置触发器触发后延迟执行动作的时间,避免误触发。
内容的提问来源于stack exchange,提问作者frictionlesspulley
相关产品推荐
相关产品推荐

