Files
a13labs.infra/terraform/modules/utils/prometheus/config.tf
T
alexandre.pires 255ba6aec9 feat(trivy): Enhance Trivy report generation and metrics handling
- Updated `generate_report.sh` to include additional scanners and output paths.
- Enhanced `send_report.py` with new data classes for misconfigurations and vulnerabilities.
- Improved parsing logic for Trivy output, supporting both Kubernetes and image scans.
- Added Prometheus metrics generation for various scan results, including misconfigurations and vulnerabilities.
- Introduced unit tests for parsing Trivy output and generating Prometheus metrics.
- Modified Terraform variables for SMTP port type and added Pushgateway URL variable.
2026-05-22 23:41:26 +02:00

114 lines
3.5 KiB
Terraform

locals {
app_version = var.tag
prometheus_folder = "${var.persistent_folder}/prometheus"
pushgateway_folder = "${var.persistent_folder}/pushgateway"
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)
}