Log Analytics 工作区无法通过 terraform 查看现有数据规则

问题描述 投票:0回答:1

我对数据规则有疑问。我创建了 terraform 代码来创建 Log Analytics 工作区、数据规则和诊断设置,一切都很好,当我想创建转换时,它没有看到现有的数据规则。有人可以帮助我,或者现在如何解决?我使用azurerm版本=“~>3.103.1” 这是我的代码 `

resource "azurerm_monitor_diagnostic_setting" "backenddiagnosticsettings" {
  name               = "${var.resource_group_prefix}-${var.application_environment_name}-be${var.instance_name}-logs"
  target_resource_id = azurerm_linux_web_app.backend.id[enter image description here]
  log_analytics_workspace_id = azurerm_log_analytics_workspace.logworkspace.id # data.azurerm_log_analytics_workspace.logworkspace.id
  enabled_log {
    category = "AppServiceConsoleLogs"

    retention_policy {
      enabled = true
    }
  }

  metric {
    category = "AllMetrics"

    retention_policy {
      enabled = true
    }
  }
}





data "azurerm_monitor_data_collection_rule" "example" {
  name                = "example-rule"
  resource_group_name = azurerm_resource_group.example.name
}

output "rule_id" {
  value = data.azurerm_monitor_data_collection_rule.example.id
}

resource "azurerm_log_analytics_workspace" "logworkspace" {
  name                = "${var.resource_group_prefix}-${var.application_environment_name}${var.instance_name}-logs"
  location            = var.location
  resource_group_name = data.azurerm_resource_group.apprg.name
  sku                 = "PerGB2018"
  retention_in_days   = 30
  data_collection_rule_id = ["${azurerm_monitor_data_collection_rule.backendlogs-dcr.id}"]
  
}




resource "azurerm_monitor_data_collection_rule" "backendlogs-dcr" {
  name                = "${var.resource_group_prefix}-${var.application_environment_name}-backend-dcr"
  resource_group_name = data.azurerm_resource_group.apprg.name
  location            = var.location
 
  
  destinations {
    log_analytics {
      name = "${azurerm_log_analytics_workspace.logworkspace.name}"
      workspace_resource_id = azurerm_log_analytics_workspace.logworkspace.id
    }
  }
  

  data_flow {
    streams       = ["Microsoft-Table-AppServiceConsoleLogs"]
    #destinations  = ["example-destination-log"]
    destinations = ["${azurerm_log_analytics_workspace.logworkspace.name}"]
    output_stream = "Microsoft-AppServiceConsoleLogs"
    transform_kql = "source\n| extend Context = parse_json(ResultDescription)\n| extend Thread_CF = tostring(Context.thread)\n| extend Level_CF = tostring(Context.level)\n| extend Logger_CF = tostring(Context.logger)\n| extend Message_CF = tostring(Context.message)\n| project-away Context,ResultDescription" 
    #"source\n| extend LL_CF = substring(ResultDescription, 12, 34)"
  }


  

}


在此输入图像描述 帮助解决此错误

azure terraform
1个回答
0
投票

在创建 Log Analytics 工作区时,您似乎无法让 Terraform 代码识别现有数据规则。以下是一些使其更容易理解的提示:

  1. 检查数据规则是否存在:在创建 Log Analytics 工作区之前,请确保您引用的数据规则 (

    azurerm_monitor_data_collection_rule.backendlogs-dcr
    ) 存在。如果稍后创建,Terraform 可能会错过它,因此您可能需要再次运行
    terraform apply

  2. 使用插值:不要直接在 Log Analytics 工作区设置中提及数据规则 ID,而是尝试直接对数据规则资源使用插值。例如:

    data_collection_rule_id = [azurerm_monitor_data_collection_rule.backendlogs-dcr.id]
    
  3. 验证数据规则名称和 ID:仔细检查您引用的数据规则是否具有正确的名称 (

    backendlogs-dcr
    )。如果名称不匹配,Terraform 将找不到它。

  4. 管理依赖关系:确保您已正确管理资源之间的依赖关系。如果 Log Analytics 工作区依赖于数据规则,请显式指定依赖关系,如下所示:

    depends_on = [azurerm_monitor_data_collection_rule.backendlogs-dcr]
    

通过执行这些步骤,您应该能够确保 Log Analytics 工作区识别现有数据规则并将其用于转换。如果您仍然遇到问题,请参阅 Terraform 文档或 Azure 提供商文档以获取更多指导。

© www.soinside.com 2019 - 2024. All rights reserved.