From 7ba0479433d26a654be035f8bf96a295384da05b Mon Sep 17 00:00:00 2001 From: mansikulkarni96 Date: Thu, 25 Mar 2021 11:17:42 -0400 Subject: [PATCH 1/2] jsonnet: Add windows_exporter queries for adapter This commit includes windows_exporter metrics in the node queries for the prometheus adapter configuration. This will help obtain the resource metrics: memory and CPU for Windows nodes. This change will also help in displaying metrics reported through the 'kubectl top' command which currently reports 'unknown' status for Windows nodes. --- .../kube-prometheus/components/prometheus-adapter.libsonnet | 4 ++-- manifests/prometheus-adapter-configMap.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/jsonnet/kube-prometheus/components/prometheus-adapter.libsonnet b/jsonnet/kube-prometheus/components/prometheus-adapter.libsonnet index e2be622c..4bd3ea8a 100644 --- a/jsonnet/kube-prometheus/components/prometheus-adapter.libsonnet +++ b/jsonnet/kube-prometheus/components/prometheus-adapter.libsonnet @@ -27,7 +27,7 @@ local defaults = { resourceRules: { cpu: { containerQuery: 'sum(irate(container_cpu_usage_seconds_total{<<.LabelMatchers>>,container!="",pod!=""}[5m])) by (<<.GroupBy>>)', - nodeQuery: 'sum(1 - irate(node_cpu_seconds_total{mode="idle"}[5m]) * on(namespace, pod) group_left(node) node_namespace_pod:kube_pod_info:{<<.LabelMatchers>>}) by (<<.GroupBy>>)', + nodeQuery: 'sum(1 - irate(node_cpu_seconds_total{mode="idle"}[5m]) * on(namespace, pod) group_left(node) node_namespace_pod:kube_pod_info:{<<.LabelMatchers>>}) by (<<.GroupBy>>) or sum (1- irate(windows_cpu_time_total{mode="idle", job="windows-exporter",<<.LabelMatchers>>}[5m])) by (<<.GroupBy>>)', resources: { overrides: { node: { resource: 'node' }, @@ -39,7 +39,7 @@ local defaults = { }, memory: { containerQuery: 'sum(container_memory_working_set_bytes{<<.LabelMatchers>>,container!="",pod!=""}) by (<<.GroupBy>>)', - nodeQuery: 'sum(node_memory_MemTotal_bytes{job="node-exporter",<<.LabelMatchers>>} - node_memory_MemAvailable_bytes{job="node-exporter",<<.LabelMatchers>>}) by (<<.GroupBy>>)', + nodeQuery: 'sum(node_memory_MemTotal_bytes{job="node-exporter",<<.LabelMatchers>>} - node_memory_MemAvailable_bytes{job="node-exporter",<<.LabelMatchers>>}) by (<<.GroupBy>>) or sum(windows_cs_physical_memory_bytes{job="windows-exporter",<<.LabelMatchers>>} - windows_memory_available_bytes{job="windows-exporter",<<.LabelMatchers>>}) by (<<.GroupBy>>)', resources: { overrides: { instance: { resource: 'node' }, diff --git a/manifests/prometheus-adapter-configMap.yaml b/manifests/prometheus-adapter-configMap.yaml index 62d1ee5f..e933b692 100644 --- a/manifests/prometheus-adapter-configMap.yaml +++ b/manifests/prometheus-adapter-configMap.yaml @@ -5,7 +5,7 @@ data: "cpu": "containerLabel": "container" "containerQuery": "sum(irate(container_cpu_usage_seconds_total{<<.LabelMatchers>>,container!=\"\",pod!=\"\"}[5m])) by (<<.GroupBy>>)" - "nodeQuery": "sum(1 - irate(node_cpu_seconds_total{mode=\"idle\"}[5m]) * on(namespace, pod) group_left(node) node_namespace_pod:kube_pod_info:{<<.LabelMatchers>>}) by (<<.GroupBy>>)" + "nodeQuery": "sum(1 - irate(node_cpu_seconds_total{mode=\"idle\"}[5m]) * on(namespace, pod) group_left(node) node_namespace_pod:kube_pod_info:{<<.LabelMatchers>>}) by (<<.GroupBy>>) or sum (1- irate(windows_cpu_time_total{mode=\"idle\", job=\"windows-exporter\",<<.LabelMatchers>>}[5m])) by (<<.GroupBy>>)" "resources": "overrides": "namespace": @@ -17,7 +17,7 @@ data: "memory": "containerLabel": "container" "containerQuery": "sum(container_memory_working_set_bytes{<<.LabelMatchers>>,container!=\"\",pod!=\"\"}) by (<<.GroupBy>>)" - "nodeQuery": "sum(node_memory_MemTotal_bytes{job=\"node-exporter\",<<.LabelMatchers>>} - node_memory_MemAvailable_bytes{job=\"node-exporter\",<<.LabelMatchers>>}) by (<<.GroupBy>>)" + "nodeQuery": "sum(node_memory_MemTotal_bytes{job=\"node-exporter\",<<.LabelMatchers>>} - node_memory_MemAvailable_bytes{job=\"node-exporter\",<<.LabelMatchers>>}) by (<<.GroupBy>>) or sum(windows_cs_physical_memory_bytes{job=\"windows-exporter\",<<.LabelMatchers>>} - windows_memory_available_bytes{job=\"windows-exporter\",<<.LabelMatchers>>}) by (<<.GroupBy>>)" "resources": "overrides": "instance": From 1c63b6d0213ad4ae47cd03384d51424fd1f5f3c9 Mon Sep 17 00:00:00 2001 From: mansikulkarni96 Date: Wed, 31 Mar 2021 13:21:01 -0400 Subject: [PATCH 2/2] Add relabel_config to replace endpoint address This commit adds a relabeling config to the scrape config of windows-exporter using the 'replace' action field to replace the node endpoint address with node name. The windows_exporter returns endpoint target as node IP but we need it to be node name to use the prometheus adapter queries and collect resource metrics information. --- jsonnet/kube-prometheus/addons/windows.libsonnet | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/jsonnet/kube-prometheus/addons/windows.libsonnet b/jsonnet/kube-prometheus/addons/windows.libsonnet index 04d2f6f4..d8112351 100644 --- a/jsonnet/kube-prometheus/addons/windows.libsonnet +++ b/jsonnet/kube-prometheus/addons/windows.libsonnet @@ -10,6 +10,17 @@ local windowsrules = import 'kubernetes-mixin/rules/windows.libsonnet'; targets: [error 'must provide targets array'], }, ], + relabel_configs: [ + { + action: 'replace', + regex: '(.*)', + replacement: '$1', + sourceLabels: [ + '__meta_kubernetes_endpoint_address_target_name', + ], + targetLabel: 'instance', + }, + ], }, grafana+:: {