Terraform для создания настройки правила автомасштабирования виртуальной машины на основе операций записи на диск в секунду или байтов записи на диск

На основе критерии правила автомасштабирования Я пытаюсь создать правило terraform azurerm_monitor_autoscale_setting, которое увеличивает / уменьшает количество узлов виртуальных машин на основе операций записи на диск / сек или диска Запись байтов. Триггер метрики выглядит следующим образом:

rule {
     metric_trigger {
            operator           = "GreaterThan"
            threshold          = 50
            time_grain         = "PT1M"
            statistic          = "Average"
            time_window        = "PT5M"
            metric_name        = "Disk Write Operations/Sec"
            time_aggregation   = "Average"
    }
}

Однако я считаю, что это неправильный синтаксис, поскольку после применения скрипта terraform он никогда не создает это правило. С другой стороны, замена правила на «Процент ЦП» работает нормально. Создал ли кто-нибудь другие показатели, кроме "Процент ЦП"? Не могли бы вы помочь понять, как это правильно делать в terraform?


person yanis    schedule 30.09.2019    source источник


Ответы (1)


Вам не хватает metric_resource_id. Вы можете попробовать следующий пример, это работает с моей стороны.

resource "azurerm_monitor_autoscale_setting" "test" {
  name                = "myAutoscaleSetting"
  resource_group_name = "${azurerm_resource_group.test.name}"
  location            = "${azurerm_resource_group.test.location}"
  target_resource_id  = "${azurerm_virtual_machine_scale_set.test.id}"

  profile {
    name = "defaultProfile"

    capacity {
      default = 1
      minimum = 1
      maximum = 10
    }

    rule {
      metric_trigger {
        metric_name        = "Disk Write Operations/Sec"
        metric_resource_id = "${azurerm_virtual_machine_scale_set.test.id}"
        time_grain         = "PT1M"
        statistic          = "Average"
        time_window        = "PT5M"
        time_aggregation   = "Average"
        operator           = "GreaterThan"
        threshold          = 75
      }

      scale_action {
        direction = "Increase"
        type      = "ChangeCount"
        value     = "1"
        cooldown  = "PT1M"
      }
    }

    rule {
      metric_trigger {
        metric_name        = "Disk Write Operations/Sec"
        metric_resource_id = "${azurerm_virtual_machine_scale_set.test.id}"
        time_grain         = "PT1M"
        statistic          = "Average"
        time_window        = "PT5M"
        time_aggregation   = "Average"
        operator           = "LessThan"
        threshold          = 25
      }

      scale_action {
        direction = "Decrease"
        type      = "ChangeCount"
        value     = "1"
        cooldown  = "PT1M"
      }
    }
  }

  notification {
    email {
      send_to_subscription_administrator    = true
      send_to_subscription_co_administrator = true
      custom_emails                         = ["[email protected]"]
    }
  }
}

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

person Nancy Xiong    schedule 01.10.2019
comment
В моем случае metric_resource_id для операций записи на диск / сек будет таким же, как и для процентного соотношения ЦП. Означает ли это, что metric_name - это то, что Azure использует для определения того, какую метрику на самом деле использовать? - person yanis; 01.10.2019
comment
Да можно указать metric_name, какое обновление в этой ветке? - person Nancy Xiong; 07.10.2019