【问题标题】:Terraform enable VM InsightsTerraform 启用 VM Insights
【发布时间】:2021-06-12 11:07:03
【问题描述】:

有人设法通过 terraforms Insights 为 VM 启用了吗?

我能够创建虚拟机,启用日志记录,但不能启用洞察力..

我见过这个问题:但没有找到明确的答案.. How to enable azure vm application insights monitoring agent using terraform

这是我用于测试的完整 terraform 脚本,我直接在 azure 的云 shell 上运行它。

    # Configure the Azure provider
provider "azurerm" {
    # The "feature" block is required for AzureRM provider 2.x.
    features {}
}
variable "prefix" {
  default = "tfvmex"
}

resource "azurerm_resource_group" "main" {
  name     = "${var.prefix}-resources"
  location = "West Europe"
}

resource "azurerm_virtual_network" "main" {
  name                = "${var.prefix}-network"
  address_space       = ["10.0.0.0/16"]
  location            = azurerm_resource_group.main.location
  resource_group_name = azurerm_resource_group.main.name
}

resource "azurerm_subnet" "internal" {
  name                 = "internal"
  resource_group_name  = azurerm_resource_group.main.name
  virtual_network_name = azurerm_virtual_network.main.name
  address_prefixes     = ["10.0.2.0/24"]
}

resource "azurerm_network_interface" "main" {
  name                = "${var.prefix}-nic"
  location            = azurerm_resource_group.main.location
  resource_group_name = azurerm_resource_group.main.name

  ip_configuration {
    name                          = "testconfiguration1"
    subnet_id                     = azurerm_subnet.internal.id
    private_ip_address_allocation = "Dynamic"
  }
}

resource "azurerm_virtual_machine" "main" {
  name                  = "${var.prefix}-vm"
  location              = azurerm_resource_group.main.location
  resource_group_name   = azurerm_resource_group.main.name
  network_interface_ids = [azurerm_network_interface.main.id]
  vm_size               = "Standard_DS1_v2"

  # Uncomment this line to delete the OS disk automatically when deleting the VM
  # delete_os_disk_on_termination = true

  # Uncomment this line to delete the data disks automatically when deleting the VM
  # delete_data_disks_on_termination = true

  storage_image_reference {
    publisher = "Canonical"
    offer     = "UbuntuServer"
    sku       = "16.04-LTS"
    version   = "latest"
  }
  storage_os_disk {
    name              = "myosdisk1"
    caching           = "ReadWrite"
    create_option     = "FromImage"
    managed_disk_type = "Standard_LRS"
  }
  os_profile {
    computer_name  = "hostname"
    admin_username = "testadmin"
    admin_password = "Password1234!"
  }
  os_profile_linux_config {
    disable_password_authentication = false
  }
  tags = {
    environment = "staging"
  }
}

resource "azurerm_storage_account" "main" {
  name                     = "omstesttest22"
  resource_group_name      = azurerm_resource_group.main.name
  location                 = "westus"
  account_tier             = "Standard"
  account_replication_type = "GRS"

  tags = {
    environment = "staging"
  }
}

resource "azurerm_log_analytics_workspace" "law02" {
  name                = "${var.prefix}-logAnalytics"
 location            = azurerm_resource_group.main.location
  resource_group_name = azurerm_resource_group.main.name
 sku                 = "PerGB2018"
  retention_in_days   = 30
}



resource "azurerm_log_analytics_solution" "example" {
  solution_name         = "ContainerInsights"
  location              = azurerm_resource_group.main.location
  resource_group_name   = azurerm_resource_group.main.name
  workspace_resource_id = azurerm_log_analytics_workspace.law02.id
  workspace_name        = azurerm_log_analytics_workspace.law02.name

  plan {
    publisher = "Microsoft"
    product   = "OMSGallery/ContainerInsights"
  }
}

#===================================================================
# Set Monitoring and Log Analytics Workspace
#===================================================================
resource "azurerm_virtual_machine_extension" "oms_mma02" {
  name                       = "test-OMSExtension"
virtual_machine_id         =  azurerm_virtual_machine.main.id
  publisher                  = "Microsoft.EnterpriseCloud.Monitoring"
  type                       = "OmsAgentForLinux"
  type_handler_version       = "1.12"
  auto_upgrade_minor_version = true

  settings = <<SETTINGS
    {
      "workspaceId" : "${azurerm_log_analytics_workspace.law02.workspace_id}"
    }
  SETTINGS

  protected_settings = <<PROTECTED_SETTINGS
    {
      "workspaceKey" : "${azurerm_log_analytics_workspace.law02.primary_shared_key}"
    }
  PROTECTED_SETTINGS
}

希望很清楚。 谢谢!

【问题讨论】:

  • 您是否遇到了一些错误?如果有,能否提供错误信息?
  • "workspaceId" : "${azurerm_log_analytics_workspace.law02.workspace_id}", 有错别字吗?有多余的逗号吗?
  • ups.. 上传代码我更改了 azurerm_storage_account 的名称并添加了一个无效的名称.. 已经更新了 id。
  • @NancyXiong 也是真的......我的错,删除了我添加见解的一些尝试,并且逗号丢失了。

标签: azure logging azure-devops terraform azure-application-insights


【解决方案1】:

document 开始,VM 洞察需要在每个要监控的虚拟机上安装以下两个代理。

  • Log Analytics 代理。从虚拟机或虚拟机规模集收集事件和性能数据,并将其传递到 Log Analytics 工作区。 Azure 资源上的 Log Analytics 代理的部署方法使用适用于 Windows 和 Linux 的 VM 扩展。
  • 依赖代理。收集有关在虚拟机上运行的进程和外部进程依赖项的已发现数据,这些数据由 VM 见解中的映射功能使用。依赖项代理依赖 Log Analytics 代理将其数据传送到 Azure Monitor。 Azure 资源上的依赖代理的部署方法使用适用于 Windows 和 Linux 的 VM 扩展。

经过我的验证,您可以将 DependencyAgent 扩展添加到您现有的代码中。

resource "azurerm_virtual_machine_extension" "da" {
  name                       = "DAExtension"
  virtual_machine_id         =  azurerm_virtual_machine.main.id
  publisher                  = "Microsoft.Azure.Monitoring.DependencyAgent"
  type                       = "DependencyAgentLinux"
  type_handler_version       = "9.5"
  auto_upgrade_minor_version = true

}

更多信息,请阅读Configure Log Analytics workspace for VM insightsEnable VM insights guest health (preview)

【讨论】:

  • 我将对此进行测试。我会尽快给一些反馈
  • 这正是缺少的。谢谢
【解决方案2】:

请使用产品“OMSGallery/VMInsights”(而不是“OMSGallery/ContainerInsights”)

resource "azurerm_log_analytics_solution" "..." {
  solution_name         = "..."
  location              = ...
  resource_group_name   = ...
  workspace_resource_id = ...
  workspace_name        = ...

  plan {
    publisher = "Microsoft"
    product   = "OMSGallery/VMInsights"
 }
}

【讨论】:

    【解决方案3】:

    使用 Terraform 部署它:

    部署一个日志分析工作区和一个与该工作区关联的 VMInsights 解决方案。

    resource "azurerm_log_analytics_workspace" "law" {
      name                      = "LogAnalyticsWorkspace"
      location                  = "Your location"
      resource_group_name       = "Your resource group"
      sku                       = "PerGB2018"
      retention_in_days         = "your retention in days"
      internet_ingestion_enabled= true
      internet_query_enabled    = false
      tags                      = "Your tags"
    }
    
    resource "azurerm_log_analytics_solution" "vminsights" {
      solution_name         = "VMInsights"
      location              = "Your location"
      resource_group_name   = "Your resource group"
      workspace_resource_id = azurerm_log_analytics_workspace.law.id
      workspace_name        = azurerm_log_analytics_workspace.law.name
      tags                  = "Your tags"
    
      plan {
        publisher = "Microsoft"
        product   = "OMSGallery/VMInsights"
      }
    }
    

    像往常一样使用 OMSAgent 和 DependencyAgentWindows 扩展部署 VM:

    resource "azurerm_windows_virtual_machine" "vm" {
       ......
       ......
    }
    

    适用于 Windows 的 OMS: https://docs.microsoft.com/en-us/azure/virtual-machines/extensions/oms-windows

    resource "azurerm_virtual_machine_extension" "omsext" {
      name                  = "OMSExtension" 
      virtual_machine_id    = azurerm_windows_virtual_machine.vm.id
      publisher             = "Microsoft.EnterpriseCloud.Monitoring"
      type                  = "MicrosoftMonitoringAgent"
      type_handler_version  = "1.0"
      auto_upgrade_minor_version = true
    
      settings = <<SETTINGS
        {
            "workspaceId": "${azurerm_log_analytics_workspace.law.id}"
        }
      SETTINGS
      protected_settings = <<PROTECTED_SETTINGS
        {
          "workspaceKey": "${azurerm_log_analytics_workspace.law.primary_shared_key}"
        }
      PROTECTED_SETTINGS  
    
      tags                       = "Your tags"
    }
    

    适用于 Windows 的 DA 代理: https://docs.microsoft.com/en-us/azure/virtual-machines/extensions/agent-dependency-windows

    resource "azurerm_virtual_machine_extension" "DAAgent" {
      name                       = "DAAgentExtension"
      virtual_machine_id         = azurerm_windows_virtual_machine.vm.id
      publisher                  = "Microsoft.Azure.Monitoring.DependencyAgent"
      type                       = "DependencyAgentWindows"
      type_handler_version       = "9.10"
      auto_upgrade_minor_version = true
      tags                       = "Your tags"
    }
    

    【讨论】:

      【解决方案4】:
      猜你喜欢
      • 2022-12-11
      • 1970-01-01
      • 2021-07-16
      • 2021-07-07
      • 2021-08-12
      • 2018-08-01
      • 2021-09-16
      • 2020-07-26
      • 1970-01-01
      相关资源
      最近更新 更多