3
votes

I am currently running a Linux VMSS with Ubuntu 20.04 VMs created using terraform. I wish to add the Linux Azure Diagnostic (LAD) extension to enable Diagnostic Logs to the VMs. Here is my current terraform resources for this purpose

resource "time_offset" "linux_oms_sas_start" {
  offset_days = -1
}

resource "time_offset" "linux_oms_sas_expiry" {
  offset_years = 5
}

data "azurerm_storage_account_sas" "linux_oms" {
  connection_string = var.storage_account_primary_connection_string
  https_only        = true

  resource_types {
    service   = true
    container = true
    object    = true
  }

  services {
    blob  = true
    table = true
    queue = false
    file = false
  }

  start  = time_offset.linux_oms_sas_start.rfc3339
  expiry = time_offset.linux_oms_sas_expiry.rfc3339

  permissions {
    read    = true
    write   = true
    delete  = true
    list    = true
    add     = true
    create  = true
    update  = true
    process = true
  }
  depends_on = [time_offset.linux_oms_sas_start,time_offset.linux_oms_sas_expiry]
}

resource "azurerm_virtual_machine_scale_set_extension" "da_extension" {
  name                       = "DAExtension"
  virtual_machine_scale_set_id         = var.vmss_id
  publisher                  = "Microsoft.Azure.Monitoring.DependencyAgent"
  type                       = "DependencyAgentLinux"
  type_handler_version       = "9.5"
  auto_upgrade_minor_version = false
}

resource "azurerm_virtual_machine_scale_set_extension" "diagnostics_extension" {
  name = "StorageExtension"
  virtual_machine_scale_set_id =  var.vmss_id
  publisher            = "Microsoft.Azure.Diagnostics"
  type                 = "LinuxDiagnostic"
  type_handler_version = "4.0"
  auto_upgrade_minor_version = false

  settings = <<SETTINGS
    {
      "StorageAccount": "${var.storage_account_name}",
      "ladCfg": {
          "diagnosticMonitorConfiguration": {
                "eventVolume": "Medium",
                "metrics": {
                     "metricAggregation": [
                        {
                            "scheduledTransferPeriod": "PT1H"
                        },
                        {
                            "scheduledTransferPeriod": "PT1M"
                        }
                    ],
                    "resourceId": "${var.vmss_id}"
                },
        "performanceCounters": ${file("${path.module}/azure_extension_diagnostics_linux_performancecounters.json")},
        "syslogEvents": ${file("${path.module}/azure_extension_diagnostics_linux_syslogevents.json")}
          },
          "sampleRateInSeconds": 15
      }
    }
  SETTINGS

  protected_settings = <<SETTINGS
    {
        "storageAccountName": "${var.storage_account_name}",
        "storageAccountSasToken": "${data.azurerm_storage_account_sas.linux_oms.sas}",
        "storageAccountEndPoint": "https://core.windows.net",
         "sinksConfig":  {
              "sink": [
                {
                    "name": "SyslogJsonBlob",
                    "type": "JsonBlob"
                },
                {
                    "name": "LinuxCpuJsonBlob",
                    "type": "JsonBlob"
                }
              ]
        }
    }
    SETTINGS
}

However when applying the above terraform code, I am getting an error from the portal as below

Enable failed:'NoneType' object has no attribute 'get_fluentd_syslog_src_config' 

Any help regarding on what the issue is would be greatly appreciated.

P.S. I have attached the azure_extension_diagnostics_linux_performancecounters.json file and azure_extension_diagnostics_linux_syslogevents.json file used within the code for further reference if required.

azure_extension_diagnostics_linux_performancecounters.json file

{
  "performanceCounterConfiguration": []
}

and the azure_extension_diagnostics_linux_syslogevents.json file

{
  "syslogEventConfiguration": {
    "LOG_AUTH": "LOG_DEBUG",
    "LOG_AUTHPRIV": "LOG_DEBUG",
    "LOG_CRON": "LOG_DEBUG",
    "LOG_DAEMON": "LOG_DEBUG",
    "LOG_FTP": "LOG_DEBUG",
    "LOG_KERN": "LOG_DEBUG",
    "LOG_LOCAL0": "LOG_DEBUG",
    "LOG_LOCAL1": "LOG_DEBUG",
    "LOG_LOCAL2": "LOG_DEBUG",
    "LOG_LOCAL3": "LOG_DEBUG",
    "LOG_LOCAL4": "LOG_DEBUG",
    "LOG_LOCAL5": "LOG_DEBUG",
    "LOG_LOCAL6": "LOG_DEBUG",
    "LOG_LOCAL7": "LOG_DEBUG",
    "LOG_LPR": "LOG_DEBUG",
    "LOG_MAIL": "LOG_DEBUG",
    "LOG_NEWS": "LOG_DEBUG",
    "LOG_SYSLOG": "LOG_DEBUG",
    "LOG_USER": "LOG_DEBUG",
    "LOG_UUCP": "LOG_DEBUG"
  }
}
1

1 Answers

1
votes

It's not supported to install Diagnostics Agent For Ubuntu 20.04. Only Azure Monitor Agent or Log Analytics Agent and Dependency Agent is possible .

Reference:

Overview of the Azure monitoring agents - Azure Monitor | Microsoft Docs

Azure Compute - Linux diagnostic extension 4.0 - Azure Virtual Machines | Microsoft Docs