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

Linux虚拟机规模集Log Analytics配置失效排查求助

解决Linux VMSS通过Terraform配置Log Analytics未生效的问题

你的Terraform配置里有几个关键问题,导致VMSS的Log Analytics配置没生效、页面仍提示需要启用,下面是具体问题和修正方案:

问题1:DCR名称包含空格,违反Azure资源命名规范

你定义的DCR名称是"my ame",Azure资源名称不允许包含空格,这会导致资源识别异常,直接改成合法名称比如"my-dcr-name"即可。

问题2:Linux VMSS误用Windows性能计数器

你在performance_counter中使用的"\\\\VmInsights\\\\DetailedMetrics"是Windows平台的VM Insights计数器格式,Linux系统完全不识别,需要替换为Linux对应的性能指标。

问题3:未确保VMSS实例应用最新配置

添加Azure Monitor Agent(AMA)扩展和DCR关联后,VMSS的现有实例不会自动加载新配置,需要触发滚动更新让所有实例应用最新设置。


修正后的完整代码

###############
# Log analytics
###############

resource "azurerm_virtual_machine_scale_set_extension" "AzureMonitorLinuxAgent" {
  name                         = "AzureMonitorLinuxAgent"
  publisher                    = "Microsoft.Azure.Monitor"
  type                         = "AzureMonitorLinuxAgent"
  type_handler_version         = "1.10"
  auto_upgrade_minor_version   = true
  virtual_machine_scale_set_id = azurerm_linux_virtual_machine_scale_set.vmss.id

  # 触发VMSS所有实例更新,确保扩展生效
  provisioner "local-exec" {
    command = "az vmss update-instances --ids ${azurerm_linux_virtual_machine_scale_set.vmss.id} --instance-ids '*'"
  }

  depends_on = [
    azurerm_linux_virtual_machine_scale_set.vmss
  ]
}

resource "azurerm_monitor_data_collection_rule" "example" {
  name                = "my-dcr-name" # 修正名称,移除空格
  resource_group_name = var.resource_group_name
  location            = var.location

  destinations {
    log_analytics {
      workspace_resource_id = var.log_analytics_workspace_log_id
      name                  = "destination-log"
    }

    azure_monitor_metrics {
      name = "test-destination-metrics"
    }
  }

  data_flow {
    destinations = ["destination-log"]
    streams      = ["Microsoft-InsightsMetrics", "Microsoft-Syslog"] # 移除Linux不支持的Microsoft-Event流
  }

  data_sources {
    # Linux VM常用性能计数器示例,可根据需求调整
    performance_counter {
      streams                       = ["Microsoft-InsightsMetrics"]
      sampling_frequency_in_seconds = 60
      counter_specifiers            = [
        "LogicalDisk|% Used Space",
        "Memory|% Used Memory",
        "Processor|% Processor Time"
      ]
      name                          = "LinuxVMInsightsPerfCounters"
    }

    syslog {
      facility_names = ["auth", "authpriv", "cron", "daemon", "kern", "local0", "local1", "local2", "local3", "local4", "local5", "local6", "local7", "lpr", "mail", "news", "syslog", "user", "uucp"]
      log_levels     = ["emerg", "alert", "crit", "err", "warning", "notice", "info", "debug"]
      name           = "test-datasource-syslog"
    }
  }
}

# 关联DCR到VMSS,确保依赖扩展先部署
resource "azurerm_monitor_data_collection_rule_association" "dcra" {
  name                    = "example1-dcra"
  target_resource_id      = azurerm_linux_virtual_machine_scale_set.vmss.id
  data_collection_rule_id = azurerm_monitor_data_collection_rule.example.id
  description             = "example"

  depends_on = [
    azurerm_virtual_machine_scale_set_extension.AzureMonitorLinuxAgent
  ]
}

验证步骤

  1. 检查扩展状态:登录Azure门户,进入VMSS的「扩展」页面,确认AzureMonitorLinuxAgent状态为「成功」。
  2. 确认数据流入:等待15-30分钟后,在Log Analytics工作区中查询Syslog或InsightsMetrics表,查看是否有数据正常流入。
  3. 检查DCR关联:在VMSS的「监控」->「数据收集规则」中,确认关联的DCR状态正常。

内容的提问来源于stack exchange,提问作者Nerd in Training

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 14:30:03