locals { app_version = var.tag prometheus_folder = "${var.persistent_folder}/prometheus" alertmanager_folder = "${var.persistent_folder}/alertmanager" prometheus_default_config = yamldecode(file("${path.module}/resources/prometheus.yml")) alertmanager_default_config = yamldecode(file("${path.module}/resources/alertmanager.yml")) prometheus_user_config = try( yamldecode(var.config), {} ) prometheus_config = yamlencode({ global = merge( try(local.prometheus_default_config.global, {}), try(local.prometheus_user_config.global, {}), { scrape_interval = "15s" evaluation_interval = "15s" external_labels = { cluster = var.cluster_name } } ), rule_files = concat( try(local.prometheus_default_config.rule_files, []), try(local.prometheus_user_config.rule_files, []) ), scrape_configs = concat( try(local.prometheus_default_config.scrape_configs, []), try(local.prometheus_user_config.scrape_configs, []) ), alerting = merge( try(local.prometheus_default_config.alerting, {}), try(local.prometheus_user_config.alerting, {}), { alertmanagers = [ { static_configs = [ { targets = ["alertmanager.prometheus.svc.cluster.local:9093"] } ] } ] } ) }) prometheus_config_checksum = md5(local.prometheus_config) prometheus_user_rules = try( yamldecode(var.rules), {} ) prometheus_merged_rules = merge({ groups = [] }, local.prometheus_user_rules) prometheus_rules = yamlencode(local.prometheus_merged_rules) prometheus_rules_checksum = md5(local.prometheus_rules) alertmanager_user_config = try( yamldecode(var.alertmanager_config), {} ) alertmanager_config = yamlencode({ global = merge( try(local.alertmanager_default_config.global, {}), try(local.alertmanager_user_config.global, {}) ), route = merge( try(local.alertmanager_default_config.route, {}), try(local.alertmanager_user_config.route, { receiver = "default" }) ), receivers = concat( try(local.alertmanager_default_config.receivers, []), try(local.alertmanager_user_config.receivers, []), [ { name = "default" email_configs = [ { to = var.email_config.to from = var.email_config.from smarthost = var.email_config.smarthost auth_username = var.email_config.auth_username auth_password = var.email_config.auth_password } ] } ], try([ { name = "telegram" telegram_configs = [ { send_resolved = true parse_mode = var.telegram_config.parse_mode bot_token = var.telegram_config.bot_token chat_id = tonumber(var.telegram_config.chat_id) message = var.telegram_config.message != "" ? var.telegram_config.message : "{{ template \"telegram.default.message\" . }}" } ] } ], []) ) templates = concat( try(local.prometheus_default_config.templates, []), try(local.prometheus_user_config.templates, []) ) }) alertmanager_config_checksum = md5(local.alertmanager_config) }