当我使用 OMS 解决方案为 VM 配置 Azure 监控时使用此答案为使用 terraform 的现有虚拟机启用 Azure Monitor,我注意到此功能已被弃用,Azure 希望您迁移到新的监控解决方案(不使用日志分析代理)。
Azure 允许我使用此 GUI 配置 VM 监控,但我想使用 terraform 进行配置。
我必须在 terraform 中使用特定的设置来实现这一点吗? (顺便说一句,我正在使用 Linux VM)
是的,这是正确的。 omsagent 已被标记为旧版,Azure 现在有一个名为“Azure Monitor agent”的新监视代理。下面给出的解决方案适用于 Linux,请查看适用于 Windows 机器的官方 Terraform 文档。
我们需要三件事来完成 Terraform 中的 UI 对应物。
下面是示例代码:
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"
}
参考: