使用terraform将虚拟机添加到新的Azure监控(不带OMS代理)

pgky5nke  于 2023-03-24  发布在  其他
关注(0)|答案(1)|浏览(156)

当我使用OMS解决方案为VM配置Azure监控时,我注意到此功能已被弃用,Azure更希望您迁移到新的监控解决方案(不使用日志分析代理)。
Azure允许我使用此GUI配置VM监视,但我希望使用terraform。

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

6mzjoqzu

6mzjoqzu1#

是的,这是正确的。omsagent已被标记为旧版,Azure现在有一个名为“Azure Monitor agent”的新监控代理。下面给出的解决方案适用于Linux,请查看Windows机器的官方Terraform文档。
我们需要做三件事来在Terraform中实现相同的UI。

  • azurerm_log_analytics_workspace
  • azurerm监控数据收集规则
  • 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

相关问题