From aa4f31e382f72d34c042cfe521aa4db2c124b6a9 Mon Sep 17 00:00:00 2001 From: Haissam Kaj <haissam.kaj@gmail.com> Date: Wed, 21 Nov 2018 15:50:26 +0100 Subject: [PATCH] add phase tag label join --- .../datadog_checks/base/checks/openmetrics/mixins.py | 6 ++++++ .../datadog_checks/kubernetes_state/kubernetes_state.py | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/datadog_checks_base/datadog_checks/base/checks/openmetrics/mixins.py b/datadog_checks_base/datadog_checks/base/checks/openmetrics/mixins.py index 939eb0ad830c1..f6107d10b0d91 100644 --- a/datadog_checks_base/datadog_checks/base/checks/openmetrics/mixins.py +++ b/datadog_checks_base/datadog_checks/base/checks/openmetrics/mixins.py @@ -300,6 +300,12 @@ def _store_labels(self, metric, scraper_config): if metric.name in scraper_config['label_joins']: matching_label = scraper_config['label_joins'][metric.name]['label_to_match'] for sample in metric.samples: + # metadata-only metrics that are used for label joins are always equal to 1 + # this is required for metrics where all combinations of a state are sent + # but only the active one is set to 1 (others are set to 0) + # example: kube_pod_status_phase in kube-state-metrics + if sample[self.SAMPLE_VALUE] != 1: + continue labels_list = [] matching_value = None for label_name, label_value in iteritems(sample[self.SAMPLE_LABELS]): diff --git a/kubernetes_state/datadog_checks/kubernetes_state/kubernetes_state.py b/kubernetes_state/datadog_checks/kubernetes_state/kubernetes_state.py index dd0e59391551d..9a54de50fa533 100644 --- a/kubernetes_state/datadog_checks/kubernetes_state/kubernetes_state.py +++ b/kubernetes_state/datadog_checks/kubernetes_state/kubernetes_state.py @@ -248,6 +248,10 @@ def _create_kubernetes_state_prometheus_instance(self, instance): 'label_to_match': 'pod', 'labels_to_get': ['node'] }, + 'kube_pod_status_phase': { + 'label_to_match': 'pod', + 'labels_to_get': ['phase'] + }, 'kube_persistentvolume_info': { 'label_to_match': 'persistentvolume', 'labels_to_get': ['storageclass']