terraform-modules/grafana/alerts/main.tf

50 lines
1.5 KiB
HCL

resource "grafana_rule_group" "this" {
for_each = { for g in local.groups : g.uid => g }
name = each.value.name
folder_uid = each.value.folder_uid
interval_seconds = (
substr(each.value.interval, length(each.value.interval) - 1, 1) == "m"
? tonumber(substr(each.value.interval, 0, length(each.value.interval) - 1)) * 60
: tonumber(trim(each.value.interval, "s"))
)
disable_provenance = var.disable_provenance
dynamic "rule" {
for_each = each.value.rules
content {
uid = rule.value.uid
name = try(rule.value.title, rule.value.name)
condition = rule.value.condition
for = try(rule.value.for, null)
no_data_state = rule.value.noDataState
exec_err_state = rule.value.execErrState
is_paused = try(rule.value.isPaused, false)
# Merge team labels with platform-injected receiver
annotations = try(rule.value.annotations, {})
labels = try(rule.value.labels, {})
dynamic "data" {
for_each = rule.value.data
content {
ref_id = data.value.refId
datasource_uid = data.value.datasource_uid
dynamic "relative_time_range" {
for_each = [data.value.relative_time_range]
content {
from = relative_time_range.value.from
to = relative_time_range.value.to
}
}
model = jsonencode(data.value.model)
}
}
}
}
}