是否有可创建Logic App动作的Azure Monitor告警的Terraform或ARM Template?
Data Factory管道失败触发Logic App的告警规则自动化实现方案
前置依赖
- 已提前创建好目标Azure Data Factory实例
- 已提前创建好可被告警触发的Logic App实例(需配置HTTP请求触发端点)
- 已完成Azure资源的身份认证配置(Terraform/ARM对应操作权限)
Terraform 实现代码示例
核心用到的AzureRM资源为azurerm_monitor_metric_alert、azurerm_monitor_action_group,示例代码如下:
# 配置动作组,绑定Logic App触发端点 resource "azurerm_monitor_action_group" "logicapp_alert_ag" { name = "adf-pipeline-fail-alert-ag" resource_group_name = "<你的资源组名称>" short_name = "adffailag" logic_app_receiver { name = "trigger-failure-notify-logicapp" resource_id = "<你的Logic App资源ID>" callback_url = "<你的Logic App HTTP触发端点回调URL>" use_common_alert_schema = true # 建议开启通用告警schema,方便Logic App解析 payload } } # 配置Data Factory管道运行失败告警规则 resource "azurerm_monitor_metric_alert" "adf_pipeline_fail_alert" { name = "adf-pipeline-failure-alert" resource_group_name = "<你的资源组名称>" scopes = ["<你的Data Factory实例资源ID>"] description = "Alert when ADF pipeline runs failed" frequency = "PT5M" # 告警检查频率,可按需调整 window_size = "PT5M" # 检查时间窗口,可按需调整 criteria { metric_namespace = "Microsoft.DataFactory/factories" metric_name = "PipelineFailedRuns" aggregation = "Total" operator = "GreaterThanOrEqual" threshold = 1 dimension { name = "Status" operator = "Include" values = ["Failed"] } # 如需筛选特定管道,可以新增PipelineName维度指定 # dimension { # name = "PipelineName" # operator = "Include" # values = ["<指定管道名>"] # } } action { action_group_id = azurerm_monitor_action_group.logicapp_alert_ag.id } }
ARM Template 实现示例
完整模板内容如下,部署时可替换对应参数值:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "actionGroupName": { "type": "string", "defaultValue": "adf-pipeline-fail-alert-ag" }, "alertRuleName": { "type": "string", "defaultValue": "adf-pipeline-failure-alert" }, "logicAppResourceId": { "type": "string", "metadata": { "description": "目标Logic App的资源ID" } }, "logicAppCallbackUrl": { "type": "string", "metadata": { "description": "Logic App HTTP触发的回调URL" } }, "adfResourceId": { "type": "string", "metadata": { "description": "目标Data Factory的资源ID" } } }, "resources": [ { "type": "Microsoft.Insights/actionGroups", "apiVersion": "2023-01-01", "name": "[parameters('actionGroupName')]", "location": "Global", "properties": { "groupShortName": "adffailag", "enabled": true, "logicAppReceivers": [ { "name": "trigger-failure-notify-logicapp", "resourceId": "[parameters('logicAppResourceId')]", "callbackUrl": "[parameters('logicAppCallbackUrl')]", "useCommonAlertSchema": true } ] } }, { "type": "Microsoft.Insights/metricAlerts", "apiVersion": "2018-03-01", "name": "[parameters('alertRuleName')]", "location": "Global", "dependsOn": [ "[resourceId('Microsoft.Insights/actionGroups', parameters('actionGroupName'))]" ], "properties": { "description": "Alert when ADF pipeline runs failed", "severity": 3, "enabled": true, "scopes": [ "[parameters('adfResourceId')]" ], "evaluationFrequency": "PT5M", "windowSize": "PT5M", "criteria": { "odata.type": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria", "allOf": [ { "name": "PipelineFailedCount", "metricNamespace": "Microsoft.DataFactory/factories", "metricName": "PipelineFailedRuns", "aggregation": "Total", "operator": "GreaterThanOrEqual", "threshold": 1, "dimensions": [ { "name": "Status", "operator": "Include", "values": ["Failed"] } // 可按需添加PipelineName维度筛选特定管道 ] } ] }, "actions": [ { "actionGroupId": "[resourceId('Microsoft.Insights/actionGroups', parameters('actionGroupName'))]" } ] } } ] }
内容的提问来源于stack exchange,提问作者Mounika
相关产品推荐
相关产品推荐

