From b85b5b6bcf3a17e4d850b43d6aae4aee54f2416c Mon Sep 17 00:00:00 2001
From: Mike Bryant <m@ocado.com>
Date: Thu, 9 Mar 2017 21:23:55 +0000
Subject: [PATCH] Account for multiple copies of kube-state-metrics

This can happen if you run multiple replicas, or if you redeploy kube-state-metrics.
In either case, prometheus records multiple metrics with the instance ip in, and the dashboard fails.

Use aggregation functions to get sensible output in either case
---
 assets/grafana/deployment-dashboard.json | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/assets/grafana/deployment-dashboard.json b/assets/grafana/deployment-dashboard.json
index 69638d15..357bd8e6 100644
--- a/assets/grafana/deployment-dashboard.json
+++ b/assets/grafana/deployment-dashboard.json
@@ -302,7 +302,7 @@
           "targets": [
             {
               "refId": "A",
-              "expr": "kube_deployment_spec_replicas{deployment=\"$deployment_name\",namespace=\"$deployment_namespace\"}",
+              "expr": "max(kube_deployment_spec_replicas{deployment=\"$deployment_name\",namespace=\"$deployment_namespace\"}) without (instance)",
               "intervalFactor": 2,
               "step": 600,
               "metric": "kube_deployment_spec_replicas"
@@ -381,7 +381,7 @@
           "targets": [
             {
               "refId": "A",
-              "expr": "kube_deployment_status_replicas_available{deployment=\"$deployment_name\",namespace=\"$deployment_namespace\"}",
+              "expr": "min(kube_deployment_status_replicas_available{deployment=\"$deployment_name\",namespace=\"$deployment_namespace\"}) without (instance)",
               "intervalFactor": 2,
               "step": 600
             }
@@ -505,7 +505,7 @@
           },
           "targets": [
             {
-              "expr": "kube_deployment_status_observed_generation{deployment=\"$deployment_name\",namespace=\"$deployment_namespace\"}",
+              "expr": "max(kube_deployment_status_observed_generation{deployment=\"$deployment_name\",namespace=\"$deployment_namespace\"}) without (instance)",
               "intervalFactor": 2,
               "legendFormat": "",
               "refId": "A",
@@ -583,7 +583,7 @@
           },
           "targets": [
             {
-              "expr": "kube_deployment_metadata_generation{deployment=\"$deployment_name\",namespace=\"$deployment_namespace\"}",
+              "expr": "max(kube_deployment_metadata_generation{deployment=\"$deployment_name\",namespace=\"$deployment_namespace\"}) without (instance)",
               "intervalFactor": 2,
               "legendFormat": "",
               "refId": "A",
@@ -649,35 +649,35 @@
           "steppedLine": false,
           "targets": [
             {
-              "expr": "kube_deployment_status_replicas{deployment=\"$deployment_name\",namespace=\"$deployment_namespace\"}",
+              "expr": "max(kube_deployment_status_replicas{deployment=\"$deployment_name\",namespace=\"$deployment_namespace\"}) without (instance)",
               "intervalFactor": 2,
               "legendFormat": "current replicas",
               "refId": "A",
               "step": 30
             },
             {
-              "expr": "kube_deployment_status_replicas_available{deployment=\"$deployment_name\",namespace=\"$deployment_namespace\"}",
+              "expr": "min(kube_deployment_status_replicas_available{deployment=\"$deployment_name\",namespace=\"$deployment_namespace\"}) without (instance)",
               "intervalFactor": 2,
               "legendFormat": "available",
               "refId": "B",
               "step": 30
             },
             {
-              "expr": "kube_deployment_status_replicas_unavailable{deployment=\"$deployment_name\",namespace=\"$deployment_namespace\"}",
+              "expr": "max(kube_deployment_status_replicas_unavailable{deployment=\"$deployment_name\",namespace=\"$deployment_namespace\"}) without (instance)",
               "intervalFactor": 2,
               "legendFormat": "unavailable",
               "refId": "C",
               "step": 30
             },
             {
-              "expr": "kube_deployment_status_replicas_updated{deployment=\"$deployment_name\",namespace=\"$deployment_namespace\"}",
+              "expr": "min(kube_deployment_status_replicas_updated{deployment=\"$deployment_name\",namespace=\"$deployment_namespace\"}) without (instance)",
               "intervalFactor": 2,
               "legendFormat": "updated",
               "refId": "D",
               "step": 30
             },
             {
-              "expr": "kube_deployment_spec_replicas{deployment=\"$deployment_name\",namespace=\"$deployment_namespace\"}",
+              "expr": "max(kube_deployment_spec_replicas{deployment=\"$deployment_name\",namespace=\"$deployment_namespace\"}) without (instance)",
               "intervalFactor": 2,
               "legendFormat": "desired",
               "refId": "E",
-- 
GitLab