From 51d7b3863715e6cced9f59e6a80546443e39ca3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rcio=20Fernandes?= Date: Sun, 4 Oct 2026 20:11:03 +0000 Subject: [PATCH] alloy moved kubernetes nodes discovery to alloy node scraper --- .../base/alloy/kube-scraper/config.alloy | 186 ----------------- .../base/alloy/node-scraper/config.alloy | 192 +++++++++++++++++- 2 files changed, 189 insertions(+), 189 deletions(-) diff --git a/monitoring/base/alloy/kube-scraper/config.alloy b/monitoring/base/alloy/kube-scraper/config.alloy index c978566..6b5e8b2 100644 --- a/monitoring/base/alloy/kube-scraper/config.alloy +++ b/monitoring/base/alloy/kube-scraper/config.alloy @@ -2,15 +2,7 @@ logging { level = "warn" } -// ============================================ -// Discovery: Kubernetes - Nodes -// used by: -// - prometheus - Kube_node_metrics - cAdvisor -// ============================================ -discovery.kubernetes "kube_nodes" { - role = "node" -} // ============================================ // Discovery: Kubernetes - endpoints @@ -35,184 +27,6 @@ prometheus.remote_write "prometheus_srv" { } } -discovery.relabel "kubelet" { - targets = discovery.kubernetes.kube_nodes.targets - - rule { - regex = ".*_uid$|.*_id$|^annotation_.*|^label_.*|^endpoint_.*|^pod_ip$" - action = "drop" - } - - rule { - regex = "container_fs_.*|container_network_.*|container_hugetlb_.*|container_blkio_.*|container_tasks_state_.*" - action = "drop" - } - - - // duplicate metrics from cAdviser - rule { - regex = "container_cpu_usage_seconds_total|container_memory_working_set_bytes|container_memory_rss|container_memory_cache" - action = "drop" - } - - rule { - source_labels = ["__meta_kubernetes_node_address_InternalIP"] - target_label = "__address__" - replacement = "$1:10250" - } - - rule { - action = "replace" - source_labels = ["__meta_kubernetes_node_name"] - regex = "(.+)" - target_label = "node" - } - - rule { - source_labels = ["node"] - target_label = "host" - } - - - rule { - target_label = "__metrics_path__" - replacement = "/metrics" - } - - rule { - target_label = "cluster" - replacement = sys.env("CLUSTER_NAME") - } - - rule { - target_label = "zone" - replacement = sys.env("ZONE") - } -} - - -prometheus.scrape "kubelet" { - job_name = "integrations/kubernetes/kubelet" - targets = discovery.relabel.kubelet.output - - scheme = "https" - metrics_path = "/metrics" - - tls_config { - server_name = "kubernetes" - ca_file = "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" - insecure_skip_verify = true - } - - bearer_token_file = "/var/run/secrets/kubernetes.io/serviceaccount/token" - - forward_to = [prometheus.remote_write.prometheus_srv.receiver] -} - -// =============================================================================== -// prometheus / Metrics - Scrape kube_state_metrics -// Requirements: -// - discovery.relabel - kube_state_metrics -// =============================================================================== -prometheus.scrape "kube_state_metrics" { - job_name = "integrations/kubernetes/kube-state-metrics" - targets = discovery.relabel.kube_state_metrics.output - - scheme = "http" - - forward_to = [prometheus.remote_write.prometheus_srv.receiver] -} - -discovery.relabel "kube_state_metrics" { - targets = discovery.kubernetes.kube_endpoints.targets - - rule { - source_labels = ["__meta_kubernetes_service_name"] - regex = "kube-state-metrics" - action = "keep" - } - - rule { - regex = ".*_uid$|.*_id$|^annotation_.*|^label_.*|^endpoint_.*|^pod_ip$" - action = "drop" - } - - rule { - target_label = "cluster" - replacement = sys.env("CLUSTER_NAME") - } - - rule { - target_label = "zone" - replacement = sys.env("ZONE") - } -} - - -// =============================================================================== -// Scrape Kubernetes pods containers metrics / cAdvisor -// Requirements: -// - discovery.relabel - kube_node_metrics -// =============================================================================== - -prometheus.scrape "cadvisor" { - job_name = "integrations/kubernetes/cadvisor" - targets = discovery.relabel.kube_node_metrics.output - scheme = "https" - - tls_config { - server_name = "kubernetes" - ca_file = "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" - insecure_skip_verify = true - } - - bearer_token_file = "/var/run/secrets/kubernetes.io/serviceaccount/token" - forward_to = [prometheus.remote_write.prometheus_srv.receiver] -} - - - -// =========================================================== -// Discovery:relabel: kube_node_metrics (cAdviser) -// Requirements: -// - discovery.kubernetes.role.node: kube_nodes -// =========================================================== - - discovery.relabel "kube_node_metrics" { - targets = discovery.kubernetes.kube_nodes.targets - - rule { - regex = ".*_uid$|.*_id$|^annotation_.*|^label_.*|^endpoint_.*|^pod_ip$" - action = "drop" - } - - rule { - action = "replace" - source_labels = ["__meta_kubernetes_node_name"] - regex = "(.+)" - target_label = "node" - } - - rule { - source_labels = ["node"] - target_label = "host" - } - - rule { - replacement = "/metrics/cadvisor" - target_label = "__metrics_path__" - } - - rule { - target_label = "cluster" - replacement = sys.env("CLUSTER_NAME") - } - - rule { - target_label = "zone" - replacement = sys.env("ZONE") - } -} // ============================================ // CoreDNS discovery (ENDPOINTS) diff --git a/monitoring/base/alloy/node-scraper/config.alloy b/monitoring/base/alloy/node-scraper/config.alloy index f8328ba..8d20b79 100644 --- a/monitoring/base/alloy/node-scraper/config.alloy +++ b/monitoring/base/alloy/node-scraper/config.alloy @@ -97,9 +97,6 @@ loki.process "kube_pod_logs" { // ============================================ // Loki.source kube_pod_logs -// Requirements: -// - discovery.relabel: kube_pod_logs -// - discovery.process: loki_srv // ============================================ loki.source.kubernetes "kube_pod_logs" { @@ -221,4 +218,193 @@ prometheus.relabel "node_exporter" { } } +// ============================================ +// Discovery: Kubernetes - Nodes +// ============================================ + +discovery.kubernetes "kube_nodes" { + role = "node" + selectors { + role = "node" + field = "spec.nodeName=" + coalesce(env("HOSTNAME"), constants.hostname) + } +} + +discovery.relabel "kubelet" { + targets = discovery.kubernetes.kube_nodes.targets + + rule { + regex = ".*_uid$|.*_id$|^annotation_.*|^label_.*|^endpoint_.*|^pod_ip$" + action = "drop" + } + + rule { + regex = "container_fs_.*|container_network_.*|container_hugetlb_.*|container_blkio_.*|container_tasks_state_.*" + action = "drop" + } + + + // duplicate metrics from cAdviser + rule { + regex = "container_cpu_usage_seconds_total|container_memory_working_set_bytes|container_memory_rss|container_memory_cache" + action = "drop" + } + + rule { + source_labels = ["__meta_kubernetes_node_address_InternalIP"] + target_label = "__address__" + replacement = "$1:10250" + } + + rule { + action = "replace" + source_labels = ["__meta_kubernetes_node_name"] + regex = "(.+)" + target_label = "node" + } + + rule { + source_labels = ["node"] + target_label = "host" + } + + + rule { + target_label = "__metrics_path__" + replacement = "/metrics" + } + + rule { + target_label = "cluster" + replacement = sys.env("CLUSTER_NAME") + } + + rule { + target_label = "zone" + replacement = sys.env("ZONE") + } +} + +prometheus.scrape "kubelet" { + job_name = "integrations/kubernetes/kubelet" + targets = discovery.relabel.kubelet.output + + scheme = "https" + metrics_path = "/metrics" + + tls_config { + server_name = "kubernetes" + ca_file = "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" + insecure_skip_verify = true + } + + bearer_token_file = "/var/run/secrets/kubernetes.io/serviceaccount/token" + + forward_to = [prometheus.remote_write.prometheus_srv.receiver] +} + + +// =========================================================== +// Discovery:relabel: kube_node_metrics (cAdviser) +// Requirements: +// - discovery.kubernetes.role.node: kube_nodes +// =========================================================== + + discovery.relabel "kube_node_metrics" { + targets = discovery.kubernetes.kube_nodes.targets + + rule { + regex = ".*_uid$|.*_id$|^annotation_.*|^label_.*|^endpoint_.*|^pod_ip$" + action = "drop" + } + + rule { + action = "replace" + source_labels = ["__meta_kubernetes_node_name"] + regex = "(.+)" + target_label = "node" + } + + rule { + source_labels = ["node"] + target_label = "host" + } + + rule { + replacement = "/metrics/cadvisor" + target_label = "__metrics_path__" + } + + rule { + target_label = "cluster" + replacement = sys.env("CLUSTER_NAME") + } + + rule { + target_label = "zone" + replacement = sys.env("ZONE") + } +} + +// =============================================================================== +// prometheus / Metrics - Scrape kube_state_metrics +// Requirements: +// - discovery.relabel - kube_state_metrics +// =============================================================================== +prometheus.scrape "kube_state_metrics" { + job_name = "integrations/kubernetes/kube-state-metrics" + targets = discovery.relabel.kube_state_metrics.output + + scheme = "http" + + forward_to = [prometheus.remote_write.prometheus_srv.receiver] +} + +discovery.relabel "kube_state_metrics" { + targets = discovery.kubernetes.kube_endpoints.targets + + rule { + source_labels = ["__meta_kubernetes_service_name"] + regex = "kube-state-metrics" + action = "keep" + } + + rule { + regex = ".*_uid$|.*_id$|^annotation_.*|^label_.*|^endpoint_.*|^pod_ip$" + action = "drop" + } + + rule { + target_label = "cluster" + replacement = sys.env("CLUSTER_NAME") + } + + rule { + target_label = "zone" + replacement = sys.env("ZONE") + } +} + +// =============================================================================== +// Scrape Kubernetes pods containers metrics / cAdvisor +// Requirements: +// - discovery.relabel - kube_node_metrics +// =============================================================================== + +prometheus.scrape "cadvisor" { + job_name = "integrations/kubernetes/cadvisor" + targets = discovery.relabel.kube_node_metrics.output + scheme = "https" + + tls_config { + server_name = "kubernetes" + ca_file = "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" + insecure_skip_verify = true + } + + bearer_token_file = "/var/run/secrets/kubernetes.io/serviceaccount/token" + forward_to = [prometheus.remote_write.prometheus_srv.receiver] +} + +