You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Terraform创建Azure Functions告警的可行性研究及通用规则需求

使用Terraform为Azure Functions创建通用失败告警规则

当然可以通过Terraform实现针对Azure Functions的通用失败告警规则,核心是利用Azure Monitor的指标告警功能,结合Terraform的资源定义批量覆盖目标函数。


核心逻辑

Azure Functions内置了FunctionExecutionCount指标,通过筛选Success=False维度即可统计失败次数。我们可以用Terraform的azurerm_monitor_metric_alert资源定义告警规则,通过资源组范围或标签筛选实现通用覆盖,当失败次数达到设定阈值时触发通知。


关键Terraform资源

  • azurerm_monitor_action_group:定义告警触发后的通知渠道(邮件、短信、Webhook等)
  • azurerm_monitor_metric_alert:配置告警规则,指定监控指标、阈值、目标资源范围

完整示例代码

1. 定义告警动作组(以邮件通知为例)

resource "azurerm_monitor_action_group" "func_failure_action" {
  name                = "func-failure-alert-action"
  resource_group_name = azurerm_resource_group.your_rg.name
  short_name          = "func-alert"

  email_receiver {
    name                    = "admin-notify"
    email_address           = "your-admin@domain.com"
    use_common_alert_schema = true
  }

  # 可选:添加短信接收器
  # sms_receiver {
  #   name         = "admin-sms"
  #   country_code = "86"
  #   phone_number = "13xxxxxxxxx"
  # }
}

2. 通用失败告警规则

resource "azurerm_monitor_metric_alert" "func_failure_threshold" {
  name                = "func-failure-count-alert"
  resource_group_name = azurerm_resource_group.your_rg.name
  # 覆盖整个资源组内的所有Azure Functions
  scopes              = [azurerm_resource_group.your_rg.id]
  description         = "当Azure Functions失败次数达到指定阈值时触发告警"
  severity            = 2 # 告警级别:1-严重,2-警告,3-信息,4- verbose

  criteria {
    metric_namespace = "Microsoft.Web/sites/functions"
    metric_name      = "FunctionExecutionCount"
    aggregation      = "Count" # 统计周期内的失败次数总和
    operator         = "GreaterThanOrEqual"
    threshold        = 3 # 替换为你的X值,比如失败3次触发告警

    # 筛选失败的执行记录
    dimension {
      name     = "Success"
      operator = "Include"
      values   = ["False"]
    }

    # 匹配所有函数,也可以指定特定函数名
    dimension {
      name     = "FunctionName"
      operator = "Include"
      values   = ["*"]
    }
  }

  # 关联动作组,触发时发送通知
  action {
    action_group_id = azurerm_monitor_action_group.func_failure_action.id
  }

  # 可选:仅监控带有指定标签的函数(比如定时函数)
  filter {
    target_resource_tags = {
      FunctionType = "Timer"
    }
  }
}

通用规则优化技巧

  • 标签精准筛选:通过filter.target_resource_tags指定函数标签(比如FunctionType: Timer),只对定时/自动化函数生效,避免监控无关函数
  • 动态阈值适配:如果不同函数的失败容忍度不同,可以将阈值设为Terraform变量,通过变量批量调整
  • 多维度聚合:可以添加TimeGrain参数调整统计周期(比如PT5M表示5分钟),适配不同的监控频率需求

注意事项

  • 确保Azure Functions所在的App Service已启用诊断设置,指标数据能正常上报至Azure Monitor
  • 阈值设置需结合业务实际,建议先通过Azure Portal观察函数的正常失败频率,再调整合理的阈值
  • 动作组支持多种通知方式,可根据需求扩展为Webhook(对接企业IM、运维系统)、Logic App等

内容的提问来源于stack exchange,提问作者johnny3210

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 22:15:36