【问题标题】:How to enable azure windows vm extension for IaaSDiagnostics with terraform如何使用 terraform 为 IaaSDiagnostics 启用 azure windows vm 扩展
【发布时间】:2021-07-07 19:30:03
【问题描述】:

有没有通过 terraform 为 azure windows vm 启用 IaaSDiagnostics 的示例?

我在尝试部署我的计划时收到以下错误,在门户中查看它已经部署了一半,但它并不满意,并且 terraform 将继续尝试重新部署。

Error: Code="VMExtensionProvisioningError" Message="VM has reported a failure when processing extension 'IaaSDiagnostics'. Error message: \"Exception when parsing configuration: Error: The element 'PublicConfig' in namespace 'http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration' cannot contain text. List of possible elements expected: 'WadCfg, StorageAccount, LocalResourceDirectory, StorageType, WadCfgBlob' in namespace '

我有以下地形资源:

resource "azurerm_virtual_machine_extension" "diag" {
  name                 = "IaaSDiagnostics"
  virtual_machine_id   = azurerm_virtual_machine.vm.id
  publisher            = "Microsoft.Azure.Diagnostics"
  type                 = "IaaSDiagnostics"
  type_handler_version = "1.5"
  auto_upgrade_minor_version = true

  settings = <<SETTINGS
    {
        "xmlCfg": "${base64encode(file(local.diagConfigFile))}",
        "storageAccount": "${azurerm_storage_account.vm.name}"
    }
SETTINGS

  protected_settings = <<SETTINGS
    {
        "storageAccountName": "${azurerm_storage_account.vm.name}",
        "storageAccountKey":  "${azurerm_storage_account.vm.primary_access_key}}",
        "storageAccountEndPoint":  "${azurerm_storage_account.vm.primary_blob_endpoint}}"
    }
SETTINGS

}

我的配置文件有这个 json:

{
  "StorageAccount": "$$StorageName",
  "WadCfg": {
    "DiagnosticMonitorConfiguration": {
      "overallQuotaInMB": 5120,
      "Metrics": {
        "resourceId": "$$resourceId",
        "MetricAggregation": [
          {
            "scheduledTransferPeriod": "PT1H"
          },
          {
            "scheduledTransferPeriod": "PT1M"
          }
        ]
      },
      "DiagnosticInfrastructureLogs": {
        "scheduledTransferLogLevelFilter": "Error",
        "scheduledTransferPeriod": "PT1M"
      },
      "PerformanceCounters": {
        "scheduledTransferPeriod": "PT1M",
        "PerformanceCounterConfiguration": [
          {
            "counterSpecifier": "Processor Information(_Total)% Processor Time",
            "unit": "Percent",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "Processor Information(_Total)% Privileged Time",
            "unit": "Percent",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "Processor Information(_Total)% User Time",
            "unit": "Percent",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "Processor Information(_Total)Processor Frequency",
            "unit": "Count",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "SystemProcesses",
            "unit": "Count",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "Process(_Total)Thread Count",
            "unit": "Count",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "Process(_Total)Handle Count",
            "unit": "Count",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "SystemSystem Up Time",
            "unit": "Count",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "SystemContext Switches/sec",
            "unit": "CountPerSecond",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "SystemProcessor Queue Length",
            "unit": "Count",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "Memory% Committed Bytes In Use",
            "unit": "Percent",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "MemoryAvailable Bytes",
            "unit": "Bytes",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "MemoryCommitted Bytes",
            "unit": "Bytes",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "MemoryCache Bytes",
            "unit": "Bytes",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "MemoryPool Paged Bytes",
            "unit": "Bytes",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "MemoryPool Nonpaged Bytes",
            "unit": "Bytes",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "MemoryPages/sec",
            "unit": "CountPerSecond",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "MemoryPage Faults/sec",
            "unit": "CountPerSecond",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "Process(_Total)Working Set",
            "unit": "Count",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "Process(_Total)Working Set - Private",
            "unit": "Count",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "LogicalDisk(_Total)% Disk Time",
            "unit": "Percent",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "LogicalDisk(_Total)% Disk Read Time",
            "unit": "Percent",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "LogicalDisk(_Total)% Disk Write Time",
            "unit": "Percent",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "LogicalDisk(_Total)% Idle Time",
            "unit": "Percent",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "LogicalDisk(_Total)Disk Bytes/sec",
            "unit": "BytesPerSecond",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "LogicalDisk(_Total)Disk Read Bytes/sec",
            "unit": "BytesPerSecond",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "LogicalDisk(_Total)Disk Write Bytes/sec",
            "unit": "BytesPerSecond",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "LogicalDisk(_Total)Disk Transfers/sec",
            "unit": "BytesPerSecond",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "LogicalDisk(_Total)Disk Reads/sec",
            "unit": "BytesPerSecond",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "LogicalDisk(_Total)Disk Writes/sec",
            "unit": "BytesPerSecond",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "LogicalDisk(_Total)Avg. Disk sec/Transfer",
            "unit": "Count",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "LogicalDisk(_Total)Avg. Disk sec/Read",
            "unit": "Count",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "LogicalDisk(_Total)Avg. Disk sec/Write",
            "unit": "Count",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "LogicalDisk(_Total)Avg. Disk Queue Length",
            "unit": "Count",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "LogicalDisk(_Total)Avg. Disk Read Queue Length",
            "unit": "Count",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "LogicalDisk(_Total)Avg. Disk Write Queue Length",
            "unit": "Count",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "LogicalDisk(_Total)% Free Space",
            "unit": "Percent",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "LogicalDisk(_Total)Free Megabytes",
            "unit": "Count",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "Network Interface()Bytes Total/sec",
            "unit": "BytesPerSecond",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "Network Interface()Bytes Sent/sec",
            "unit": "BytesPerSecond",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "Network Interface()Bytes Received/sec",
            "unit": "BytesPerSecond",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "Network Interface()Packets/sec",
            "unit": "BytesPerSecond",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "Network Interface()Packets Sent/sec",
            "unit": "BytesPerSecond",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "Network Interface()Packets Received/sec",
            "unit": "BytesPerSecond",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "Network Interface()Packets Outbound Errors",
            "unit": "Count",
            "sampleRate": "PT60S"
          },
          {
            "counterSpecifier": "Network Interface()Packets Received Errors",
            "unit": "Count",
            "sampleRate": "PT60S"
          }
        ]
      },
      "WindowsEventLog": {
        "scheduledTransferPeriod": "PT1M",
        "DataSource": [
          {
            "name": "Application![System[(Level=1 or Level=2 or Level=3)]]"
          },
          {
            "name": "System![System[(Level=1 or Level=2 or Level=3)]]"
          },
          {
            "name": "Security!*[System[(band(Keywords,4503599627370496))]]"
          }
        ]
      },
      "Directories": {
        "scheduledTransferPeriod": "PT1M"
      },
      "sinks": "applicationInsights"
    },
    "SinksConfig": {
      "Sink": [
        {
          "name": "applicationInsights",
          "ApplicationInsights": "$$AppInstKey"
        }
      ]
    }
  }
}

我在另一个页面 (https://github.com/terraform-providers/terraform-provider-azurerm/issues/2943) 上找到了这个,这可能是我的问题的根源,但我在其他地方找不到此配置的任何其他示例,是否有可能以某种方式从已经存在的 VM 中提取它启用了吗?

编辑----

我在 VM (C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.18.0.5) 上找到了安装日志,因此我比较了 terraform 安装和通过门户进行的安装。

当通过 terraform 执行此操作时,json 被包裹在一些 xml 标记中(我猜这可以解释错误):

DiagnosticsPlugin.exe Information: 0 : [4/12/2021 6:58:54 PM] WadCfg is provided in initial configuration. Using that to initialize Diagnostics.
DiagnosticsPlugin.exe Information: 0 : [4/12/2021 6:58:54 PM] <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">{
  "WadCfg": {
    "DiagnosticMonitorConfiguration": {
      "overallQuotaInMB": 5120,

门户安装有这个:

DiagnosticsPlugin.exe Information: 0 : [4/12/2021 6:48:44 PM] WadCfg is provided in initial configuration. Using that to initialize Diagnostics.
DiagnosticsPlugin.exe Information: 0 : [4/12/2021 6:48:44 PM] { "WadCfg": {
  "DiagnosticMonitorConfiguration": {
    "overallQuotaInMB": 5120,

任何想法如何停止 terraform 添加 XML?

【问题讨论】:

    标签: terraform azure-virtual-machine terraform-provider-azure


    【解决方案1】:

    我找到了两个示例 XML 配置,这意味着我可以使用它们而不是 JSON,然后正确安装: https://docs.microsoft.com/en-us/azure/azure-monitor/agents/diagnostics-extension-schema-windows#xml 和一个完整的地形示例: https://gist.github.com/tombuildsstuff/92191dd7de42310b2874884777e87fbe

    【讨论】:

      猜你喜欢
      • 2018-10-30
      • 2021-05-01
      • 2018-07-31
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      相关资源
      最近更新 更多