diff --git a/helmfile.d/charts/grafana-dashboards/dashboards/capacity-management-dashboard.json b/helmfile.d/charts/grafana-dashboards/dashboards/capacity-management-dashboard.json index 62b52be6a7..39ba31d4dd 100644 --- a/helmfile.d/charts/grafana-dashboards/dashboards/capacity-management-dashboard.json +++ b/helmfile.d/charts/grafana-dashboards/dashboards/capacity-management-dashboard.json @@ -18,10 +18,11 @@ "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 1, + "id": 7, "links": [], - "liveNow": false, "panels": [ { + "collapsed": false, "gridPos": { "h": 1, "w": 24, @@ -29,6 +30,7 @@ "y": 0 }, "id": 40, + "panels": [], "title": "Summary", "type": "row" }, @@ -49,8 +51,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "#EAB839", @@ -77,6 +78,7 @@ "graphMode": "none", "justifyMode": "auto", "orientation": "auto", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -84,9 +86,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "9.5.5", + "pluginVersion": "12.0.3", "targets": [ { "datasource": { @@ -102,7 +106,6 @@ } ], "title": "Nodes with average CPU usage over 1h above threshold", - "transformations": [], "type": "stat" }, { @@ -122,8 +125,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "#EAB839", @@ -150,6 +152,7 @@ "graphMode": "none", "justifyMode": "auto", "orientation": "auto", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -157,9 +160,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "9.5.5", + "pluginVersion": "12.0.3", "targets": [ { "datasource": { @@ -175,7 +180,6 @@ } ], "title": "Nodes with average CPU usage over 24h above threshold", - "transformations": [], "type": "stat" }, { @@ -195,8 +199,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "#EAB839", @@ -223,6 +226,7 @@ "graphMode": "none", "justifyMode": "auto", "orientation": "auto", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -230,9 +234,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "9.5.5", + "pluginVersion": "12.0.3", "targets": [ { "datasource": { @@ -248,7 +254,6 @@ } ], "title": "Nodes with average Memory usage over 1h above threshold", - "transformations": [], "type": "stat" }, { @@ -268,8 +273,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "#EAB839", @@ -296,6 +300,7 @@ "graphMode": "none", "justifyMode": "auto", "orientation": "auto", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -303,9 +308,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "9.5.5", + "pluginVersion": "12.0.3", "targets": [ { "datasource": { @@ -321,7 +328,6 @@ } ], "title": "Nodes with average Memory usage over 24h above threshold", - "transformations": [], "type": "stat" }, { @@ -335,7 +341,6 @@ "id": 8, "panels": [], "repeat": "NodeGroup", - "repeatDirection": "h", "title": "CPU Usage - $NodeGroup", "type": "row" }, @@ -350,11 +355,13 @@ "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, + "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 5, "gradientMode": "none", @@ -363,6 +370,7 @@ "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, @@ -386,8 +394,7 @@ "mode": "percentage", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -414,10 +421,12 @@ "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "single", "sort": "none" } }, + "pluginVersion": "12.0.3", "targets": [ { "datasource": { @@ -445,11 +454,13 @@ "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, + "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 5, "gradientMode": "none", @@ -458,6 +469,7 @@ "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, @@ -481,8 +493,7 @@ "mode": "percentage", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -509,10 +520,12 @@ "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "single", "sort": "none" } }, + "pluginVersion": "12.0.3", "targets": [ { "datasource": { @@ -540,11 +553,13 @@ "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, + "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 5, "gradientMode": "none", @@ -553,6 +568,7 @@ "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, @@ -576,8 +592,7 @@ "mode": "percentage", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -604,10 +619,12 @@ "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "single", "sort": "none" } }, + "pluginVersion": "12.0.3", "targets": [ { "datasource": { @@ -635,11 +652,13 @@ "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, + "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 5, "gradientMode": "none", @@ -648,6 +667,7 @@ "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, @@ -671,8 +691,7 @@ "mode": "percentage", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -699,10 +718,12 @@ "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "single", "sort": "none" } }, + "pluginVersion": "12.0.3", "targets": [ { "datasource": { @@ -720,18 +741,103 @@ "type": "timeseries" }, { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 5, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, "gridPos": { - "h": 1, - "w": 24, + "h": 8, + "w": 12, "x": 0, - "y": 73 + "y": 22 }, - "id": 6, - "panels": [], - "repeat": "NodeGroup", - "repeatDirection": "h", - "title": "Memory Usage - $NodeGroup", - "type": "row" + "id": 146, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.0.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "sum by (node) (kube_pod_container_resource_requests{cluster=~\"$cluster\", resource=\"cpu\"} and on (pod, namespace, cluster) kube_pod_info{cluster=~\"$cluster\"} and on (pod, namespace, cluster) kube_pod_status_phase{phase=\"Running\", cluster=~\"$cluster\"} == 1 ) / sum by (node) (kube_node_status_allocatable{cluster=~\"$cluster\", resource=\"cpu\"}) * on (node) group_left (label_elastisys_io_node_group) label_replace(kube_node_labels{label_elastisys_io_node_group=~\"$NodeGroup\"}, \"instance\", \"$1\", \"node\", \"(.*)\")", + "legendFormat": "{{node}}", + "range": true, + "refId": "A" + } + ], + "title": "CPU requested per node", + "type": "timeseries" }, { "datasource": { @@ -744,11 +850,13 @@ "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, + "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 5, "gradientMode": "none", @@ -757,6 +865,7 @@ "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, @@ -770,22 +879,123 @@ "mode": "none" }, "thresholdsStyle": { - "mode": "dashed" + "mode": "off" } }, "mappings": [], "max": 1, "min": 0, "thresholds": { - "mode": "percentage", + "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", - "value": 85 + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 22 + }, + "id": 150, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.0.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "avg(sum by (node) (kube_pod_container_resource_requests{cluster=~\"$cluster\", resource=\"cpu\"} and on (pod, namespace, cluster) kube_pod_info{cluster=~\"$cluster\"} and on (pod, namespace, cluster) kube_pod_status_phase{phase=\"Running\", cluster=~\"$cluster\"} == 1 ) / sum by (node) (kube_node_status_allocatable{cluster=~\"$cluster\", resource=\"cpu\"}) * on (node) group_left (label_elastisys_io_node_group) label_replace(kube_node_labels{label_elastisys_io_node_group=~\"$NodeGroup\"}, \"instance\", \"$1\", \"node\", \"(.*)\"))", + "fullMetaSearch": false, + "includeNullMetadata": true, + "legendFormat": "$NodeGroup", + "range": true, + "refId": "A", + "useBackend": false + } + ], + "title": "Average CPU requested per node group", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 5, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 } ] }, @@ -797,9 +1007,9 @@ "h": 8, "w": 12, "x": 0, - "y": 74 + "y": 30 }, - "id": 12, + "id": 148, "options": { "legend": { "calcs": [], @@ -808,10 +1018,12 @@ "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "single", "sort": "none" } }, + "pluginVersion": "12.0.3", "targets": [ { "datasource": { @@ -819,13 +1031,13 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "avg_over_time(instance:node_memory_utilisation:ratio{cluster=~\"$cluster\"}[1h]) * on (instance) group_left (label_elastisys_io_node_group) label_replace(kube_node_labels{label_elastisys_io_node_group=~\"$NodeGroup\"}, \"instance\", \"$1\", \"node\", \"(.*)\")", - "legendFormat": "{{instance}}", + "expr": "sum by (node) (kube_pod_container_resource_limits{cluster=~\"$cluster\", resource=\"cpu\"} and on (pod, namespace, cluster) kube_pod_info{cluster=~\"$cluster\"} and on (pod, namespace, cluster) kube_pod_status_phase{phase=\"Running\", cluster=~\"$cluster\"} == 1 ) / sum by (node) (kube_node_status_allocatable{cluster=~\"$cluster\", resource=\"cpu\"}) * on (node) group_left (label_elastisys_io_node_group) label_replace(kube_node_labels{label_elastisys_io_node_group=~\"$NodeGroup\"}, \"instance\", \"$1\", \"node\", \"(.*)\")", + "legendFormat": "{{node}}", "range": true, "refId": "A" } ], - "title": "Average Memory usage per Node over 1 hour", + "title": "CPU limits per node", "type": "timeseries" }, { @@ -839,11 +1051,13 @@ "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, + "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 5, "gradientMode": "none", @@ -852,6 +1066,7 @@ "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, @@ -865,22 +1080,21 @@ "mode": "none" }, "thresholdsStyle": { - "mode": "dashed" + "mode": "off" } }, "mappings": [], "max": 1, "min": 0, "thresholds": { - "mode": "percentage", + "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", - "value": 85 + "value": 80 } ] }, @@ -892,9 +1106,9 @@ "h": 8, "w": 12, "x": 12, - "y": 74 + "y": 30 }, - "id": 13, + "id": 152, "options": { "legend": { "calcs": [], @@ -903,10 +1117,12 @@ "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "single", "sort": "none" } }, + "pluginVersion": "12.0.3", "targets": [ { "datasource": { @@ -914,16 +1130,29 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "avg(avg_over_time(instance:node_memory_utilisation:ratio{cluster=~\"$cluster\"}[1h]) * on (instance) group_left (label_elastisys_io_node_group) label_replace(kube_node_labels{label_elastisys_io_node_group=~\"$NodeGroup\"}, \"instance\", \"$1\", \"node\", \"(.*)\"))", - "hide": false, + "expr": "avg(sum by (node) (kube_pod_container_resource_limits{cluster=~\"$cluster\", resource=\"cpu\"} and on (pod, namespace, cluster) kube_pod_info{cluster=~\"$cluster\"} and on (pod, namespace, cluster) kube_pod_status_phase{phase=\"Running\", cluster=~\"$cluster\"} == 1 ) / sum by (node) (kube_node_status_allocatable{cluster=~\"$cluster\", resource=\"cpu\"}) * on (node) group_left (label_elastisys_io_node_group) label_replace(kube_node_labels{label_elastisys_io_node_group=~\"$NodeGroup\"}, \"instance\", \"$1\", \"node\", \"(.*)\"))", "legendFormat": "$NodeGroup", "range": true, - "refId": "B" + "refId": "A" } ], - "title": "Average Memory usage per Node Group over 1 hour", + "title": "Average CPU limits per node group", "type": "timeseries" }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 38 + }, + "id": 6, + "panels": [], + "repeat": "NodeGroup", + "title": "Memory Usage - $NodeGroup", + "type": "row" + }, { "datasource": { "type": "prometheus", @@ -935,11 +1164,13 @@ "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, + "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 5, "gradientMode": "none", @@ -948,6 +1179,7 @@ "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, @@ -971,8 +1203,7 @@ "mode": "percentage", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -988,9 +1219,9 @@ "h": 8, "w": 12, "x": 0, - "y": 82 + "y": 39 }, - "id": 18, + "id": 12, "options": { "legend": { "calcs": [], @@ -999,10 +1230,12 @@ "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "single", "sort": "none" } }, + "pluginVersion": "12.0.3", "targets": [ { "datasource": { @@ -1010,13 +1243,13 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "instance:node_memory_utilisation:ratio{cluster=~\"$cluster\"} * on (instance) group_left (label_elastisys_io_node_group) label_replace(kube_node_labels{label_elastisys_io_node_group=~\"$NodeGroup\"}, \"instance\", \"$1\", \"node\", \"(.*)\")", + "expr": "avg_over_time(instance:node_memory_utilisation:ratio{cluster=~\"$cluster\"}[1h]) * on (instance) group_left (label_elastisys_io_node_group) label_replace(kube_node_labels{label_elastisys_io_node_group=~\"$NodeGroup\"}, \"instance\", \"$1\", \"node\", \"(.*)\")", "legendFormat": "{{instance}}", "range": true, "refId": "A" } ], - "title": "Memory usage per Node", + "title": "Average Memory usage per Node over 1 hour", "type": "timeseries" }, { @@ -1030,11 +1263,13 @@ "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, + "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 5, "gradientMode": "none", @@ -1043,6 +1278,7 @@ "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, @@ -1066,12 +1302,11 @@ "mode": "percentage", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", - "value": 75 + "value": 85 } ] }, @@ -1083,9 +1318,9 @@ "h": 8, "w": 12, "x": 12, - "y": 82 + "y": 39 }, - "id": 16, + "id": 13, "options": { "legend": { "calcs": [], @@ -1094,10 +1329,12 @@ "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "single", "sort": "none" } }, + "pluginVersion": "12.0.3", "targets": [ { "datasource": { @@ -1105,61 +1342,647 @@ "uid": "${datasource}" }, "editorMode": "code", - "expr": "avg(avg_over_time(instance:node_memory_utilisation:ratio{cluster=~\"$cluster\"}[24h]) * on (instance) group_left (label_elastisys_io_node_group) label_replace(kube_node_labels{label_elastisys_io_node_group=~\"$NodeGroup\"}, \"instance\", \"$1\", \"node\", \"(.*)\"))", + "expr": "avg(avg_over_time(instance:node_memory_utilisation:ratio{cluster=~\"$cluster\"}[1h]) * on (instance) group_left (label_elastisys_io_node_group) label_replace(kube_node_labels{label_elastisys_io_node_group=~\"$NodeGroup\"}, \"instance\", \"$1\", \"node\", \"(.*)\"))", "hide": false, "legendFormat": "$NodeGroup", "range": true, "refId": "B" } ], - "title": "Average Memory usage per Node Group over 24 hours", + "title": "Average Memory usage per Node Group over 1 hour", "type": "timeseries" - } - ], - "refresh": "", - "schemaVersion": 38, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "current": { - "selected": false, - "text": "default", - "value": "default" - }, - "hide": 0, - "includeAll": false, - "multi": false, - "name": "datasource", - "options": [], - "query": "prometheus", - "queryValue": "", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "type": "datasource" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" }, - { - "datasource": "${datasource}", - "definition": "label_values(node_cpu_seconds_total, cluster)", - "hide": 0, - "includeAll": false, - "multi": false, - "name": "cluster", - "options": [], - "query": { - "query": "label_values(node_cpu_seconds_total, cluster)", - "refId": "StandardVariableQuery" - }, - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 5, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "dashed" + } + }, + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 85 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 47 + }, + "id": 18, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.0.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "instance:node_memory_utilisation:ratio{cluster=~\"$cluster\"} * on (instance) group_left (label_elastisys_io_node_group) label_replace(kube_node_labels{label_elastisys_io_node_group=~\"$NodeGroup\"}, \"instance\", \"$1\", \"node\", \"(.*)\")", + "legendFormat": "{{instance}}", + "range": true, + "refId": "A" + } + ], + "title": "Memory usage per Node", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 5, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "dashed" + } + }, + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 75 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 47 + }, + "id": 16, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.0.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "avg(avg_over_time(instance:node_memory_utilisation:ratio{cluster=~\"$cluster\"}[24h]) * on (instance) group_left (label_elastisys_io_node_group) label_replace(kube_node_labels{label_elastisys_io_node_group=~\"$NodeGroup\"}, \"instance\", \"$1\", \"node\", \"(.*)\"))", + "hide": false, + "legendFormat": "$NodeGroup", + "range": true, + "refId": "B" + } + ], + "title": "Average Memory usage per Node Group over 24 hours", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 5, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 55 + }, + "id": 147, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.0.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "sum by (node) (kube_pod_container_resource_requests{cluster=~\"$cluster\", resource=\"memory\"} and on (pod, namespace, cluster) kube_pod_info{cluster=~\"$cluster\"} and on (pod, namespace, cluster) kube_pod_status_phase{phase=\"Running\", cluster=~\"$cluster\"} == 1 ) / sum by (node) (kube_node_status_allocatable{cluster=~\"$cluster\", resource=\"memory\"}) * on (node) group_left (label_elastisys_io_node_group) label_replace(kube_node_labels{label_elastisys_io_node_group=~\"$NodeGroup\"}, \"instance\", \"$1\", \"node\", \"(.*)\")", + "legendFormat": "{{node}}", + "range": true, + "refId": "A" + } + ], + "title": "Memory requested per Node", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 5, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 55 + }, + "id": 151, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.0.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "avg(sum by (node) (kube_pod_container_resource_requests{cluster=~\"$cluster\", resource=\"memory\"} and on (pod, namespace, cluster) kube_pod_info{cluster=~\"$cluster\"} and on (pod, namespace, cluster) kube_pod_status_phase{phase=\"Running\", cluster=~\"$cluster\"} == 1 ) / sum by (node) (kube_node_status_allocatable{cluster=~\"$cluster\", resource=\"memory\"}) * on (node) group_left (label_elastisys_io_node_group) label_replace(kube_node_labels{label_elastisys_io_node_group=~\"$NodeGroup\"}, \"instance\", \"$1\", \"node\", \"(.*)\"))", + "fullMetaSearch": false, + "includeNullMetadata": true, + "legendFormat": "$NodeGroup", + "range": true, + "refId": "A", + "useBackend": false + } + ], + "title": "Average Memory requested per Node Group", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 5, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 63 + }, + "id": 149, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.0.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "sum by (node) (kube_pod_container_resource_limits{cluster=~\"$cluster\", resource=\"memory\"} and on (pod, namespace, cluster) kube_pod_info{cluster=~\"$cluster\"} and on (pod, namespace, cluster) kube_pod_status_phase{phase=\"Running\", cluster=~\"$cluster\"} == 1 ) / sum by (node) (kube_node_status_allocatable{cluster=~\"$cluster\", resource=\"memory\"}) * on (node) group_left (label_elastisys_io_node_group) label_replace(kube_node_labels{label_elastisys_io_node_group=~\"$NodeGroup\"}, \"instance\", \"$1\", \"node\", \"(.*)\")", + "legendFormat": "{{node}}", + "range": true, + "refId": "A" + } + ], + "title": "Memory limits per Node", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 5, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 63 + }, + "id": 153, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.0.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "avg(sum by (node) (kube_pod_container_resource_limits{cluster=~\"$cluster\", resource=\"memory\"} and on (pod, namespace, cluster) kube_pod_info{cluster=~\"$cluster\"} and on (pod, namespace, cluster) kube_pod_status_phase{phase=\"Running\", cluster=~\"$cluster\"} == 1 ) / sum by (node) (kube_node_status_allocatable{cluster=~\"$cluster\", resource=\"memory\"}) * on (node) group_left (label_elastisys_io_node_group) label_replace(kube_node_labels{label_elastisys_io_node_group=~\"$NodeGroup\"}, \"instance\", \"$1\", \"node\", \"(.*)\"))", + "legendFormat": "$NodeGroup", + "range": true, + "refId": "A" + } + ], + "title": "Average Memory limits per Node Group", + "type": "timeseries" + } + ], + "preload": false, + "refresh": "", + "schemaVersion": 41, + "tags": [], + "templating": { + "list": [ + { + "current": { + "text": "default", + "value": "default" + }, + "includeAll": false, + "name": "datasource", + "options": [], + "query": "prometheus", + "refresh": 1, + "regex": "", + "type": "datasource" + }, + { + "datasource": "${datasource}", + "definition": "label_values(node_cpu_seconds_total, cluster)", + "includeAll": false, + "name": "cluster", + "options": [], + "query": { + "query": "label_values(node_cpu_seconds_total, cluster)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "type": "query" }, { "datasource": { @@ -1167,7 +1990,6 @@ "uid": "${datasource}" }, "definition": "label_values(kube_node_labels{cluster=~\"$cluster\"},label_elastisys_io_node_group)", - "hide": 0, "includeAll": false, "multi": true, "name": "NodeGroup", @@ -1178,8 +2000,6 @@ }, "refresh": 1, "regex": "", - "skipUrlSync": false, - "sort": 0, "type": "query" } ] @@ -1192,6 +2012,5 @@ "timezone": "", "title": "Capacity Management Dashboard", "uid": "c8aab7f3-697d-4a23-86b4-d8f7f9067947", - "version": 5, - "weekStart": "" + "version": 6 }