I am trying to create a GCP monitoring alert for composer disk usage. But in plan stage it is throwing me an error :
The given value is not valid for variable “conditions”: a number is required.
Variables.tf
Variable "conditions" {
type = list(object({
display_name = string
condition_threshold = list(object({
display_name = string
comparison = string
duration = number
filter = string
threshold_value = number
alignment_period = number
cross_series_reducer = string
group_by_fields = list(string)
per_series_aligner = string
trigger_count = number
trigger_percent = number
}))
}))
}
Tfvars file
conditions = [
{display_name = "Condition for Composer"
condition_threshold = [
{
display_name = "Composer_cond"
comparison = "COMPARISON_GT"
duration = "0s"
filter = "resource.type = \"cloud_composer_environment\" AND resource.labels.project_id = \"prj-netw-01\" AND metric.type = \"composer.googleapis.com/environment/database/disk/bytes_used\""
threshold_value = 1600000000
alignment_period = "300s"
cross_series_reducer = "REDUCE_NONE"
group_by_fields = ["project_id"]
per_series_aligner = "ALIGN_MEAN"
trigger_count = 1
trigger_percent = 100
}
]
}
]
Alerting.tf
resource "google_monitoring_alert_policy" "alert_policy" {
provider = google
count = var.enable ? 1 : 0
display_name = var.display_name
combiner = var.combiner
# threshold conditions
dynamic "conditions" {
for_each = var.conditions
// iterator = condition
content {
display_name = condition.value.display_name
dynamic "condition_threshold" {
// for_each = { for con in each.value.conditions_threshold : con.display_name => con }
for_each = lookup(conditions.value, "condition_threshold", [])
content {
comparison = condition_threshold.value.comparison
duration = "${condition_threshold.value.duration}s"
filter = condition_threshold.value.filter
threshold_value = condition_threshold.value.threshold_value
aggregations {
alignment_period = "${condition_threshold.value.alignment_period}s"
cross_series_reducer = condition_threshold.value.cross_series_reducer
group_by_fields = condition_threshold.value.group_by_fields
per_series_aligner = condition_threshold.value.per_series_aligner
}
trigger {
count = condition_threshold.value.trigger_count
percent = condition_threshold.value.trigger_percent
}
}
}
}
}
notification_channels = var.notification_channels
}