data "google_compute_instance" "vm" {
for_each = toset(var.alert_target)
name = ${each.value}
zone = "asia-northeast1-a"
}
data "google_monitoring_notification_channel" "all" {
for_each = toset(var.notification_channels)
project = var.project
display_name = each.value
}
resource "google_monitoring_alert_policy" "alert_cpu" {
for_each = toset(var.alert_target)
project = var.project
display_name = "[${each.value}] VM checking cpu utilization"
combiner = "OR"
conditions {
display_name = "[${each.value}] VM checking cpu utilization"
condition_threshold {
filter = "metric.type = \"compute.googleapis.com/instance/cpu/utilization\" AND resource.labels.instance_id=\"${data.google_compute_instance.vm[each.value].instance_id}\" AND resource.type=\"gce_instance\""
duration = "120s"
comparison = "COMPARISON_GT"
threshold_value = 0.9
trigger {
count = 1
}
aggregations {
alignment_period = "60s"
per_series_aligner = "ALIGN_MEAN"
}
}
}
notification_channels = [for channel in data.google_monitoring_notification_channel.all : channel.name]
documentation {
content = "インスタンス(${each.value})のCPU使用率が高くなっています"
}
}
variable "alert_target" {
type = list(string)
}
variable "notification_channels" {
type = list(string)
}
alert_target = ["vm1", "vm2", "vm3"]
notification_channels = ["通知チャネル1", "通知チャネル2"]
filter = "metric.type = \"compute.googleapis.com/instance/cpu/utilization\" AND resource.labels.instance_id=\"${data.google_compute_instance.vm[each.value].instance_id}\" AND resource.type=\"gce_instance\""
aggregations {
alignment_period = "60s"
per_series_aligner = "ALIGN_MEAN"
}
documentation {
content = "インスタンス(${each.value})のCPU使用率が高くなっています"
}
data "google_monitoring_notification_channel" "all" {
for_each = toset(var.notification_channels)
project = var.project
display_name = each.value
}
resource "google_monitoring_alert_policy" "alert_cpu" {
project = var.project
display_name = "VM checking cpu utilization"
combiner = "OR"
conditions {
display_name = "VM checking cpu utilization"
condition_threshold {
filter = "metric.type = \"compute.googleapis.com/instance/cpu/utilization\" AND resource.labels.project_id=\"${var.project}\" AND resource.type=\"gce_instance\""
duration = "120s"
comparison = "COMPARISON_GT"
threshold_value = 0.9
trigger {
count = 1
}
aggregations {
alignment_period = "60s"
per_series_aligner = "ALIGN_MEAN"
group_by_fields = ["metadata.system_labels.name"]
cross_series_reducer = "REDUCE_MEAN"
}
}
}
notification_channels = [for channel in data.google_monitoring_notification_channel.all : channel.name]
documentation {
content = "インスタンス($${metadata.system_labels.name})のCPU使用率が高くなっています"
}
}
variable "notification_channels" {
type = list(string)
}
notification_channels = ["通知チャネル1", "通知チャネル2"]
filter = "metric.type = \"compute.googleapis.com/instance/cpu/utilization\" AND resource.labels.project_id=\"${var.project}\" AND resource.type=\"gce_instance\""
metadata.system_labels.name = one_of(\"${google_compute_instance.<ローカル名>.name}\", \"${google_compute_instance.<ローカル名>.name}\", \"${google_compute_instance.<ローカル名>.name}\"
aggregations {
alignment_period = "60s"
per_series_aligner = "ALIGN_MEAN"
group_by_fields = ["metadata.system_labels.name"]
cross_series_reducer = "REDUCE_MEAN"
}
documentation {
content = "インスタンス($${metadata.system_labels.name})のCPU使用率が高くなっています"
}
Google Cloud、Google Workspaceに関する お問い合わせはこちら