diff --git a/k8s/monitoring/values-production.yaml b/k8s/monitoring/values-production.yaml index e6f6724..45aff6e 100644 --- a/k8s/monitoring/values-production.yaml +++ b/k8s/monitoring/values-production.yaml @@ -87,43 +87,31 @@ kube-prometheus-stack: additionalScrapeConfigs: - job_name: 'node-exporter' kubernetes_sd_configs: - - role: pod + - role: node relabel_configs: - # 1. Filter: Target node-exporter pods in the monitoring namespace. - - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_pod_name] - separator: '/' - regex: 'monitoring/.*node-exporter.*' - action: keep + # 1. Pull all node labels (including workload) + - action: labelmap + regex: __meta_kubernetes_node_label_(.+) + + # 2. Target the node-exporter port (9100) on the node's IP. + # role: node discovery defaults to the Kubelet port (10250). + - source_labels: [__address__] + regex: '(.*):10250' + replacement: '${1}:9100' + target_label: __address__ - # 2. Filter: Ensure we are targeting the standard port (usually 9100) - - source_labels: [__meta_kubernetes_pod_container_port_number] - regex: '9100' - action: keep - - # 3. Pull node labels (workload) - - source_labels: [__meta_kubernetes_pod_node_label_workload] - target_label: workload - action: replace - - # 4. Set instance and node labels correctly - - source_labels: [__meta_kubernetes_pod_node_name] + # 3. Set standard labels for dashboard and alert compatibility + - source_labels: [__meta_kubernetes_node_name] target_label: instance action: replace - - source_labels: [__meta_kubernetes_pod_node_name] + - source_labels: [__meta_kubernetes_node_name] target_label: node action: replace - - source_labels: [__meta_kubernetes_pod_ip] - target_label: ip_address - action: replace - - # 5. Replicate standard labels for dashboard compatibility - - action: labelmap - regex: __meta_kubernetes_pod_label_(.+) - - source_labels: [__meta_kubernetes_namespace] - target_label: namespace - - source_labels: [__meta_kubernetes_pod_name] - target_label: pod + - target_label: namespace + replacement: monitoring + - target_label: pod + replacement: node-exporter-discovery alertmanager: ingress: enabled: true diff --git a/k8s/monitoring/values-staging.yaml b/k8s/monitoring/values-staging.yaml index 2008ec4..822a5ee 100644 --- a/k8s/monitoring/values-staging.yaml +++ b/k8s/monitoring/values-staging.yaml @@ -87,43 +87,31 @@ kube-prometheus-stack: additionalScrapeConfigs: - job_name: 'node-exporter' kubernetes_sd_configs: - - role: pod + - role: node relabel_configs: - # 1. Filter: Target node-exporter pods in the monitoring namespace. - - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_pod_name] - separator: '/' - regex: 'monitoring/.*node-exporter.*' - action: keep + # 1. Pull all node labels (including workload) + - action: labelmap + regex: __meta_kubernetes_node_label_(.+) + + # 2. Target the node-exporter port (9100) on the node's IP. + # role: node discovery defaults to the Kubelet port (10250). + - source_labels: [__address__] + regex: '(.*):10250' + replacement: '${1}:9100' + target_label: __address__ - # 2. Filter: Ensure we are targeting the standard port (usually 9100) - - source_labels: [__meta_kubernetes_pod_container_port_number] - regex: '9100' - action: keep - - # 3. Pull node labels (workload) - - source_labels: [__meta_kubernetes_pod_node_label_workload] - target_label: workload - action: replace - - # 4. Set instance and node labels correctly - - source_labels: [__meta_kubernetes_pod_node_name] + # 3. Set standard labels for dashboard and alert compatibility + - source_labels: [__meta_kubernetes_node_name] target_label: instance action: replace - - source_labels: [__meta_kubernetes_pod_node_name] + - source_labels: [__meta_kubernetes_node_name] target_label: node action: replace - - source_labels: [__meta_kubernetes_pod_ip] - target_label: ip_address - action: replace - - # 5. Replicate standard labels for dashboard compatibility - - action: labelmap - regex: __meta_kubernetes_pod_label_(.+) - - source_labels: [__meta_kubernetes_namespace] - target_label: namespace - - source_labels: [__meta_kubernetes_pod_name] - target_label: pod + - target_label: namespace + replacement: monitoring + - target_label: pod + replacement: node-exporter-discovery alertmanager: ingress: enabled: true