使用 terraform 将 VM 添加到新的 Azure Monitoring(没有 OMS Agent)

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

当我使用 OMS 解决方案为 VM 配置 Azure 监控时使用此答案为使用 terraform 的现有虚拟机启用 Azure Monitor,我注意到此功能已被弃用,Azure 希望您迁移到新的监控解决方案(不使用日志分析代理)。

Azure 允许我使用此 GUI 配置 VM 监控,但我想使用 terraform 进行配置。

我必须在 terraform 中使用特定的设置来实现这一点吗? (顺便说一句,我正在使用 Linux VM)

azure azure-virtual-machine azure-monitoring
1个回答
4
投票

是的,这是正确的。 omsagent 已被标记为旧版,Azure 现在有一个名为“Azure Monitor agent”的新监视代理。下面给出的解决方案适用于 Linux,请查看适用于 Windows 机器的官方 Terraform 文档。

我们需要三件事来完成 Terraform 中的 UI 对应物。

  • azurerm_log_analytics_workspace
  • azurerm_monitor_data_collection_rule
  • azurerm_monitor_data_collection_rule_association

下面是示例代码:

    data "azurerm_linux_virtual_machine" "vm" {
      name                = var.vm_name
      resource_group_name = var.az_resource_group_name
    }
    
    resource "azurerm_log_analytics_workspace" "workspace" {
      name                = "${var.project}-${var.env}-log-analytics"
      location            = var.az_location
      resource_group_name = var.az_resource_group_name
      sku                 = "PerGB2018"
      retention_in_days   = 30
    }
    
     resource "azurerm_virtual_machine_extension" "AzureMonitorLinuxAgent" {        
      name                       = "AzureMonitorLinuxAgent"
      publisher                  = "Microsoft.Azure.Monitor"
      type                       = "AzureMonitorLinuxAgent"
      type_handler_version       = "1.0"
      auto_upgrade_minor_version = "true"
    
      virtual_machine_id = data.azurerm_linux_virtual_machine.vm.id
    }
    
    
     resource "azurerm_monitor_data_collection_rule" "example" {
      name                = "example-rules"
      resource_group_name = var.az_resource_group_name
      location            = var.az_location
    
      destinations {
        log_analytics {
          workspace_resource_id = azurerm_log_analytics_workspace.workspace.id
          name                  = "test-destination-log"
        }
    
        azure_monitor_metrics {
          name = "test-destination-metrics"
        }
      } 
    
      data_flow {
        streams      = ["Microsoft-InsightsMetrics"]
        destinations = ["test-destination-log"]
      }
    
      data_sources {
    
        performance_counter {
          streams                       = ["Microsoft-InsightsMetrics"]
          sampling_frequency_in_seconds = 60
          counter_specifiers            = ["\\VmInsights\\DetailedMetrics"]
          name                          = "VMInsightsPerfCounters"
        }
    }
     }
    
    # associate to a Data Collection Rule
    resource "azurerm_monitor_data_collection_rule_association" "example1" {
      name                    = "example1-dcra"
      target_resource_id      = data.azurerm_linux_virtual_machine.vm.id
      data_collection_rule_id = azurerm_monitor_data_collection_rule.example.id
      description             = "example"
    }

参考:

monitor_data_collection_rule

monitor_data_collection_rule_association

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