Terraform 基于磁盘写入 Operations/Sec 或磁盘写入字节数创建自动缩放 VM 规则设置
Terraform to create autoscale VM rule setting based on Disk Write Operations/Sec or Disk Write Bytes
基于 autoscale rule criteria 我正在尝试创建一个 terraform azurerm_monitor_autoscale_setting
规则,其中 increase/decreases VM 节点基于 磁盘写入 Operations/Sec 或 磁盘写入字节数 。指标触发器如下所示:
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 脚本,它就永远不会创建此规则。另一方面,用 "Percentage CPU" 替换规则效果很好。除了 "Percentage CPU" 之外,是否有人创建了任何指标?在 terraform
?
中,你能帮忙找出正确的方法吗?
你缺少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 = ["admin@contoso.com"]
}
}
}
结果:
基于 autoscale rule criteria 我正在尝试创建一个 terraform azurerm_monitor_autoscale_setting
规则,其中 increase/decreases VM 节点基于 磁盘写入 Operations/Sec 或 磁盘写入字节数 。指标触发器如下所示:
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 脚本,它就永远不会创建此规则。另一方面,用 "Percentage CPU" 替换规则效果很好。除了 "Percentage CPU" 之外,是否有人创建了任何指标?在 terraform
?
你缺少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 = ["admin@contoso.com"]
}
}
}
结果: