Для использования специальных показателей необходимо определить пространство имен.

Я пытаюсь развернуть метрику памяти, которая относится к гостевым метрикам для виртуальной машины с использованием Terraform, я уже определил пространство имен для метрики, которую я использую, но ее выдает ошибку ниже.

Ошибка при создании или обновлении предупреждения об использовании памяти. Предупреждение об использовании памяти (группа ресурсов MyTemp): insights.MetricAlertsClient # CreateOrUpdate: Ошибка при ответе на запрос: StatusCode = 400 - Исходная ошибка: autorest / azure: служба вернула ошибку. Состояние = 400 Код = BadRequest Сообщение = Следующие имена метрик не найдены: Память \% используемых байтов. Обратите внимание, что для специальных показателей необходимо указать соответствующее пространство имен показателей.

resource "azurerm_monitor_metric_alert" "myalert" {
  name                      = "Memory Usage Alert"
  resource_group_name       = var.rg_name //resource name to which you want to deploy this alert
  scopes                    = [var.virtual_machine_id]
  description               = "Action will be triggered when Memory Utilzation count is greater than 85."
  target_resource_type      = "Microsoft.Compute/virtualMachines"
  target_resource_location  = "centralindia"
  frequency                 = "PT30M"
  window_size               = "P1D"
  severity                  = "2"
  enabled                   = "true"

  criteria {
    metric_namespace = "azure.vm.windows.guestmetrics"
    metric_name      = "Memory\\% Committed bytes in use"
    aggregation      = "Average"
    operator         = "GreaterThanOrEqual"
    threshold        = 85
  }

  action {
    action_group_id = var.action_name
  }
}

person Swapnil Panchal    schedule 04.10.2020    source источник
comment
Не могли бы вы сказать мне, отправляли ли вы эти метрики в лазерный монитор?   -  person Jim Xu    schedule 07.10.2020
comment
Нет, это основной шаблон, и у меня есть еще один файл переменных, предназначенный для хранения идентификатора ресурса виртуальной машины.   -  person Swapnil Panchal    schedule 07.10.2020
comment
Если вы хотите использовать настраиваемую метрику для создания изменения метрики, мы должны сначала отправить данные пользовательской метрики в монитор Azure.   -  person Jim Xu    schedule 07.10.2020
comment
да, но я не знаю, как отправить пользовательскую метрику на монитор Azure с помощью terraform, было бы здорово, если бы вы могли мне помочь здесь   -  person Swapnil Panchal    schedule 07.10.2020
comment
Какой тип vm вы используете?   -  person Jim Xu    schedule 07.10.2020
comment
Windows (Windows Server 2016 Datacenter)   -  person Swapnil Panchal    schedule 07.10.2020


Ответы (1)


Что касается проблемы, вы можете обратиться к следующему сценарию

  1. Отправляйте метрики гостевой виртуальной машины Azure в монитор Azure с помощью расширения виртуальной машины диагностики Azure. Дополнительные сведения см. здесь и здесь
resource "random_string" "password" {
  length  = 16
  special = false
}
data  "azurerm_resource_group" "mygroup" {
  name     = var.resource_group_name
}
resource "azurerm_storage_account" "account" {
  name                     = "myaccount1458975"
  resource_group_name      = data.azurerm_resource_group.mygroup.name
  location                 = data.azurerm_resource_group.mygroup.location
  account_tier             = "Standard"
  account_replication_type = "GRS"
}
resource "azurerm_virtual_machine_extension" "vmextension" {
  name                       = random_string.password.result
  virtual_machine_id         = < your VM id>
  publisher                  = "Microsoft.Azure.Diagnostics"
  type                       = "IaaSDiagnostics"
  type_handler_version       = "1.11"
  auto_upgrade_minor_version = true
   depends_on = [
      azurerm_storage_account.account
   
  ]
  settings = <<SETTINGS
    {
       "StorageAccount": "${azurerm_storage_account.account.name}",
          "WadCfg": {
            "SinksConfig": {
              "Sink": [
                {
                  "name": "AzMonSink",
                  "AzureMonitor": {}
                }
              ]
            },
            "DiagnosticMonitorConfiguration": {
              "overallQuotaInMB": 5120,
              "Metrics": {
                "resourceId": "your VM id",
                "MetricAggregation": [
                  {
                    "scheduledTransferPeriod": "PT1H"
                  },
                  {
                    "scheduledTransferPeriod": "PT1M"
                  }
                ]
              },
              "DiagnosticInfrastructureLogs": {
                "scheduledTransferLogLevelFilter": "Error"
              },
              "PerformanceCounters": {
                "sinks": "AzMonSink",
                "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": "\\System\\Processes",
                    "unit": "Count",
                    "sampleRate": "PT60S"
                  },
                  {
                    "counterSpecifier": "\\Process(_Total)\\Thread Count",
                    "unit": "Count",
                    "sampleRate": "PT60S"
                  },
                  {
                    "counterSpecifier": "\\Process(_Total)\\Handle Count",
                    "unit": "Count",
                    "sampleRate": "PT60S"
                  },
                  {
                    "counterSpecifier": "\\System\\System Up Time",
                    "unit": "Count",
                    "sampleRate": "PT60S"
                  },
                  {
                    "counterSpecifier": "\\System\\Context Switches/sec",
                    "unit": "CountPerSecond",
                    "sampleRate": "PT60S"
                  },
                  {
                    "counterSpecifier": "\\System\\Processor Queue Length",
                    "unit": "Count",
                    "sampleRate": "PT60S"
                  },
                  {
                    "counterSpecifier": "\\Memory\\% Committed Bytes In Use",
                    "unit": "Percent",
                    "sampleRate": "PT60S"
                  },
                  {
                    "counterSpecifier": "\\Memory\\Available Bytes",
                    "unit": "Bytes",
                    "sampleRate": "PT60S"
                  },
                  {
                    "counterSpecifier": "\\Memory\\Committed Bytes",
                    "unit": "Bytes",
                    "sampleRate": "PT60S"
                  },
                  {
                    "counterSpecifier": "\\Memory\\Cache Bytes",
                    "unit": "Bytes",
                    "sampleRate": "PT60S"
                  },
                  {
                    "counterSpecifier": "\\Memory\\Pool Paged Bytes",
                    "unit": "Bytes",
                    "sampleRate": "PT60S"
                  },
                  {
                    "counterSpecifier": "\\Memory\\Pool Nonpaged Bytes",
                    "unit": "Bytes",
                    "sampleRate": "PT60S"
                  },
                  {
                    "counterSpecifier": "\\Memory\\Pages/sec",
                    "unit": "CountPerSecond",
                    "sampleRate": "PT60S"
                  },
                  {
                    "counterSpecifier": "\\Memory\\Page 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": "Security!*[System[band(Keywords,4503599627370496)]]"
                  },
                  {
                    "name": "System!*[System[(Level = 1 or Level = 2 or Level = 3)]]"
                  }
                ]
              }
            }
          }
    }
SETTINGS
 
  protected_settings = <<SETTINGS
    {
        "storageAccountName": "${azurerm_storage_account.account.name}",
          "storageAccountKey": "${azurerm_storage_account.account.primary_access_key }",
          "storageAccountEndPoint": "https://core.windows.net/"
    }
SETTINGS

  
}

Обратите внимание, что перед запуском сценария вам необходимо включить Azure MSI и boot_diagnostics на вашей виртуальной машине.

  1. Создать оповещение о показателях
resource "azurerm_monitor_metric_alert" "myalert" {
  name                     = "myalert"
  resource_group_name      = var.resource_group_name
  scopes                   = [var.virtual_machine_id]
  description              = "Action will be triggered when Memory Utilzation count is greater than 85."
  severity                 = "2"
  enabled                  = "true"
  frequency                = "PT1M"
  window_size              = "PT5M",
  target_resource_type     = "Microsoft.Compute/virtualMachines"
  target_resource_location = "japaneast"

  criteria {
    metric_namespace = "azure.vm.windows.guestmetrics"
    metric_name       = "Memory\\% Committed bytes in use"
    aggregation       = "Average"
    operator          = "GreaterThanOrEqual"
    threshold         = 85

   
  }

  action {
    action_group_id = var.action_group_name
  }
}

введите описание изображения здесь  введите описание изображения здесь

person Jim Xu    schedule 09.10.2020
comment
Привет, @Jim Xu! Первый скрипт, который должен отправлять метрики гостевой ОС в Monitor, сработал, я включил boot_diagnostics на своей виртуальной машине, но он по-прежнему выдает ту же ошибку. Похоже, что для региона Центральной Индии эта метрика не поддерживается. Я ценю ваш ответ Спасибо. - person Swapnil Panchal; 09.10.2020