diff --git a/stacks/headscale/modules/headscale/main.tf b/stacks/headscale/modules/headscale/main.tf index 6eed919e..305da387 100644 --- a/stacks/headscale/modules/headscale/main.tf +++ b/stacks/headscale/modules/headscale/main.tf @@ -433,6 +433,9 @@ resource "kubernetes_config_map" "grafana_headscale_dashboard" { labels = { grafana_dashboard = "1" } + annotations = { + grafana_folder = "Networking" + } } data = { "headscale.json" = file("${path.module}/dashboards/headscale.json") diff --git a/stacks/monitoring/modules/monitoring/grafana.tf b/stacks/monitoring/modules/monitoring/grafana.tf index 6fa3113a..fe3804cf 100644 --- a/stacks/monitoring/modules/monitoring/grafana.tf +++ b/stacks/monitoring/modules/monitoring/grafana.tf @@ -102,6 +102,41 @@ resource "kubernetes_manifest" "grafana_db_creds" { } } +locals { + # Dashboard folder assignments + dashboard_folders = { + # Cluster & Kubernetes + "api_server.json" = "Cluster" + "cluster_health.json" = "Cluster" + "nodes.json" = "Cluster" + "pods.json" = "Cluster" + "kube-state-metrics.json" = "Cluster" + # Networking & DNS + "caretta-dashboard.json" = "Networking" + "core_dns.json" = "Networking" + "technitium-dns.json" = "Networking" + "nginx_ingress.json" = "Networking" + "network_traffic.json" = "Networking" + + # Hardware & Host + "node_exporter_full.json" = "Hardware" + "proxmox_node_exporter.json" = "Hardware" + "idrac.json" = "Hardware" + "ups.json" = "Hardware" + "nvidia.json" = "Hardware" + + # Operations + "backup_health.json" = "Operations" + "registry.json" = "Operations" + "loki.json" = "Operations" + "k8s-audit.json" = "Operations" + + # Applications + "qbittorrent.json" = "Applications" + "realestate-crawler.json" = "Applications" + } +} + resource "kubernetes_config_map" "grafana_dashboards" { for_each = fileset("${path.module}/dashboards", "*.json") @@ -111,6 +146,9 @@ resource "kubernetes_config_map" "grafana_dashboards" { labels = { grafana_dashboard = "1" } + annotations = { + grafana_folder = lookup(local.dashboard_folders, each.value, "General") + } } data = { (each.value) = file("${path.module}/dashboards/${each.value}") diff --git a/stacks/monitoring/modules/monitoring/grafana_chart_values.yaml b/stacks/monitoring/modules/monitoring/grafana_chart_values.yaml index f6eacb22..48d88c63 100644 --- a/stacks/monitoring/modules/monitoring/grafana_chart_values.yaml +++ b/stacks/monitoring/modules/monitoring/grafana_chart_values.yaml @@ -53,6 +53,9 @@ sidecar: dashboards: enabled: true label: "grafana_dashboard" + folderAnnotation: "grafana_folder" + provider: + foldersFromFilesStructure: true dashboardProviders: dashboardproviders.yaml: apiVersion: 1 diff --git a/stacks/technitium/modules/technitium/main.tf b/stacks/technitium/modules/technitium/main.tf index 5f06b2e8..d1f05412 100644 --- a/stacks/technitium/modules/technitium/main.tf +++ b/stacks/technitium/modules/technitium/main.tf @@ -352,6 +352,9 @@ resource "kubernetes_config_map" "grafana_technitium_dashboard" { labels = { grafana_dashboard = "1" } + annotations = { + grafana_folder = "Networking" + } } data = { "technitium-dns.json" = file("${path.module}/dashboards/technitium-dns.json")