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

Terraform配置问题:Azure日志分析工作区与DCR无法关联

解决Terraform创建Perf表DCR与Log Analytics Workspace关联问题

核心问题分析

问题根源在于:用于日志表转换的DCR需要特定kind属性标识,且Log Analytics Workspace需明确关联该DCR的资源ID,你的初始Terraform配置未覆盖这两个关键要求。

解决方案

1. 使用AzureRM原生资源配置(推荐)

确保AzureRM Provider版本≥3.20.0(该版本开始支持azurerm_monitor_data_collection_rule的kind参数),修改配置如下:

resource "azurerm_resource_group" "this" {
  location = var.environment_config.location_name
  name     = local.naming.rg_name
}

resource "azurerm_log_analytics_workspace" "this" {
  name                = local.naming.log_name
  location            = azurerm_resource_group.this.location
  resource_group_name = azurerm_resource_group.this.name
  # 关联DCR为Workspace默认转换规则
  default_data_collection_rule_resource_id = azurerm_monitor_data_collection_rule.this.id
}

resource "azurerm_monitor_data_collection_rule" "this" {
  name                = local.naming.dcr_name
  resource_group_name = azurerm_resource_group.this.name
  location            = azurerm_resource_group.this.location
  # 指定DCR类型为工作区转换专用
  kind                = "WorkspaceTransforms"

  destinations {
    log_analytics {
      workspace_resource_id = azurerm_log_analytics_workspace.this.id
      name                  = local.naming.log_name
    }
  }

  data_flow {
    streams      = ["Microsoft-Table-Perf"]
    destinations = [local.naming.log_name]
  }
}

2. 若使用AzAPI资源配置

需确保kind属性正确设置,同时在Workspace中关联DCR:

resource "azurerm_resource_group" "this" {
  location = var.environment_config.location_name
  name     = local.naming.rg_name
}

resource "azurerm_log_analytics_workspace" "this" {
  name                = local.naming.log_name
  location            = azurerm_resource_group.this.location
  resource_group_name = azurerm_resource_group.this.name
  default_data_collection_rule_resource_id = azapi_resource.azurerm_monitor_data_collection_rule.id
}

resource "azapi_resource" "azurerm_monitor_data_collection_rule" {
  type      = "Microsoft.Insights/dataCollectionRules@2021-09-01-preview"
  name      = local.naming.dcr_name
  location  = azurerm_resource_group.this.location
  parent_id = azurerm_resource_group.this.id

  body = jsonencode({
    properties = {
      dataFlows = [
        {
          destinations = [local.naming.log_name]
          streams      = ["Microsoft-Table-Perf"]
        }
      ]

      destinations = {
        logAnalytics = [
          {
            name                = local.naming.log_name
            workspaceResourceId = azurerm_log_analytics_workspace.this.id
          }
        ]
      }
    }
    # 必须指定该类型以标识为工作区转换规则
    kind = "WorkspaceTransforms"
  })
  lifecycle {
    ignore_changes = [
      tags
    ]
  }
}

关键说明

  • kind = "WorkspaceTransforms":这是让Azure识别该DCR为日志表转换专用规则的核心标识,缺失则门户无法在创建转换时识别该DCR。
  • default_data_collection_rule_resource_id:在Workspace中配置该属性,完成DCR与Workspace的关联,对应你提到的门户中Workspace的defaultDataCollectionRuleResourceId字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 21:39:36