我对数据规则有疑问。我创建了 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)"
}
}
在此输入图像描述 帮助解决此错误
在创建 Log Analytics 工作区时,您似乎无法让 Terraform 代码识别现有数据规则。以下是一些使其更容易理解的提示:
检查数据规则是否存在:在创建 Log Analytics 工作区之前,请确保您引用的数据规则 (
azurerm_monitor_data_collection_rule.backendlogs-dcr
) 存在。如果稍后创建,Terraform 可能会错过它,因此您可能需要再次运行 terraform apply
。
使用插值:不要直接在 Log Analytics 工作区设置中提及数据规则 ID,而是尝试直接对数据规则资源使用插值。例如:
data_collection_rule_id = [azurerm_monitor_data_collection_rule.backendlogs-dcr.id]
验证数据规则名称和 ID:仔细检查您引用的数据规则是否具有正确的名称 (
backendlogs-dcr
)。如果名称不匹配,Terraform 将找不到它。
管理依赖关系:确保您已正确管理资源之间的依赖关系。如果 Log Analytics 工作区依赖于数据规则,请显式指定依赖关系,如下所示:
depends_on = [azurerm_monitor_data_collection_rule.backendlogs-dcr]
通过执行这些步骤,您应该能够确保 Log Analytics 工作区识别现有数据规则并将其用于转换。如果您仍然遇到问题,请参阅 Terraform 文档或 Azure 提供商文档以获取更多指导。