Skip to content

Commit e85b61c

Browse files
authored
fix(dashboards): namespace-by-workload multiple matches (#1123)
1 parent d3bcbde commit e85b61c

File tree

5 files changed

+76
-95
lines changed

5 files changed

+76
-95
lines changed

Makefile

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,15 @@ clean-alerts:
6565
clean-rules:
6666
rm -f prometheus_rules.yaml
6767

68+
clean-dashboards:
69+
rm -f $(OUT_DIR)/*.json*
70+
rm -f $(OUT_DIR)/.dashboards-generated
71+
72+
# Find all libsonnet files recursively in the dashboards directory
73+
DASHBOARD_SOURCES = $(shell find $(SRC_DIR) -name '*.libsonnet' 2>/dev/null)
74+
6875
.PHONY: generate
69-
generate: clean-alerts clean-rules prometheus_alerts.yaml prometheus_rules.yaml $(OUT_DIR)
76+
generate: clean-alerts clean-rules prometheus_alerts.yaml prometheus_rules.yaml $(OUT_DIR)/.dashboards-generated
7077

7178
$(JSONNET_VENDOR): $(JB_BIN) jsonnetfile.json
7279
$(JB_BIN) install
@@ -89,9 +96,10 @@ prometheus_alerts.yaml: $(JSONNET_BIN) mixin.libsonnet lib/alerts.jsonnet alerts
8996
prometheus_rules.yaml: $(JSONNET_BIN) mixin.libsonnet lib/rules.jsonnet rules/*.libsonnet
9097
@$(JSONNET_BIN) -J vendor -S lib/rules.jsonnet > $@
9198

92-
$(OUT_DIR): $(JSONNET_BIN) $(JSONNET_VENDOR) mixin.libsonnet lib/dashboards.jsonnet $(SRC_DIR)/*.libsonnet
99+
$(OUT_DIR)/.dashboards-generated: $(JSONNET_BIN) $(JSONNET_VENDOR) mixin.libsonnet lib/dashboards.jsonnet $(DASHBOARD_SOURCES)
93100
@mkdir -p $(OUT_DIR)
94101
@$(JSONNET_BIN) -J vendor -m $(OUT_DIR) lib/dashboards.jsonnet
102+
@touch $@
95103

96104
.PHONY: lint
97105
lint: jsonnet-lint alerts-lint dashboards-lint vale pint-lint
@@ -106,7 +114,7 @@ alerts-lint: $(PROMTOOL_BIN) prometheus_alerts.yaml prometheus_rules.yaml
106114
@$(PROMTOOL_BIN) check rules prometheus_rules.yaml
107115
@$(PROMTOOL_BIN) check rules prometheus_alerts.yaml
108116

109-
$(OUT_DIR)/.lint: $(OUT_DIR)
117+
$(OUT_DIR)/.lint: $(OUT_DIR)/.dashboards-generated
110118
@cp .lint $@
111119

112120
.PHONY: dashboards-lint

dashboards/network-usage/namespace-by-workload.libsonnet

Lines changed: 21 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -92,55 +92,28 @@ local var = g.dashboard.variable;
9292
},
9393
};
9494

95-
local colQueries = [
96-
|||
97-
sort_desc(sum(rate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster",namespace="$namespace"}[%(grafanaIntervalVar)s])
98-
* on (namespace,pod) kube_pod_info{%(clusterLabel)s="$cluster",namespace="$namespace",host_network="false"}
99-
* on (namespace,pod)
100-
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace="$namespace", workload=~".+", workload_type=~"$type"}) by (workload, workload_type))
101-
||| % $._config,
102-
|||
103-
sort_desc(sum(rate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster",namespace="$namespace"}[%(grafanaIntervalVar)s])
104-
* on (namespace,pod) kube_pod_info{%(clusterLabel)s="$cluster",namespace="$namespace",host_network="false"}
105-
* on (namespace,pod)
106-
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace="$namespace", workload=~".+", workload_type=~"$type"}) by (workload, workload_type))
107-
||| % $._config,
108-
|||
109-
sort_desc(avg(rate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster",namespace="$namespace"}[%(grafanaIntervalVar)s])
110-
* on (namespace,pod) kube_pod_info{%(clusterLabel)s="$cluster",namespace="$namespace",host_network="false"}
111-
* on (namespace,pod)
112-
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace="$namespace", workload=~".+", workload_type=~"$type"}) by (workload, workload_type))
113-
||| % $._config,
114-
|||
115-
sort_desc(avg(rate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster",namespace="$namespace"}[%(grafanaIntervalVar)s])
116-
* on (namespace,pod) kube_pod_info{%(clusterLabel)s="$cluster",namespace="$namespace",host_network="false"}
117-
* on (namespace,pod)
118-
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace="$namespace", workload=~".+", workload_type=~"$type"}) by (workload, workload_type))
119-
||| % $._config,
120-
|||
121-
sort_desc(sum(rate(container_network_receive_packets_total{%(clusterLabel)s="$cluster",namespace="$namespace"}[%(grafanaIntervalVar)s])
122-
* on (namespace,pod) kube_pod_info{%(clusterLabel)s="$cluster",namespace="$namespace",host_network="false"}
123-
* on (namespace,pod)
124-
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace="$namespace", workload=~".+", workload_type=~"$type"}) by (workload, workload_type))
125-
||| % $._config,
95+
local columnQuery(aggFunc, metric) =
12696
|||
127-
sort_desc(sum(rate(container_network_transmit_packets_total{%(clusterLabel)s="$cluster",namespace="$namespace"}[%(grafanaIntervalVar)s])
128-
* on (namespace,pod) kube_pod_info{%(clusterLabel)s="$cluster",namespace="$namespace",host_network="false"}
129-
* on (namespace,pod)
130-
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace="$namespace", workload=~".+", workload_type=~"$type"}) by (workload, workload_type))
131-
||| % $._config,
132-
|||
133-
sort_desc(sum(rate(container_network_receive_packets_dropped_total{%(clusterLabel)s="$cluster",namespace="$namespace"}[%(grafanaIntervalVar)s])
134-
* on (namespace,pod) kube_pod_info{%(clusterLabel)s="$cluster",namespace="$namespace",host_network="false"}
135-
* on (namespace,pod)
136-
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace="$namespace", workload=~".+", workload_type=~"$type"}) by (workload, workload_type))
137-
||| % $._config,
138-
|||
139-
sort_desc(sum(rate(container_network_transmit_packets_dropped_total{%(clusterLabel)s="$cluster",namespace="$namespace"}[%(grafanaIntervalVar)s])
140-
* on (namespace,pod) kube_pod_info{%(clusterLabel)s="$cluster",namespace="$namespace",host_network="false"}
141-
* on (namespace,pod)
142-
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace="$namespace", workload=~".+", workload_type=~"$type"}) by (workload, workload_type))
143-
||| % $._config,
97+
sort_desc(
98+
%(aggFunc)s by (workload, workload_type) (
99+
rate(%(metric)s{%%(clusterLabel)s="$cluster",namespace="$namespace"}[%%(grafanaIntervalVar)s])
100+
* on (%%(clusterLabel)s, namespace, pod) group_left
101+
kube_pod_info{%%(clusterLabel)s="$cluster",namespace="$namespace",host_network="false"}
102+
* on (%%(clusterLabel)s, namespace, pod) group_left (workload, workload_type)
103+
namespace_workload_pod:kube_pod_owner:relabel{%%(clusterLabel)s="$cluster",namespace="$namespace", workload=~".+", workload_type=~"$type"}
104+
)
105+
)
106+
||| % { aggFunc: aggFunc, metric: metric } % $._config;
107+
108+
local colQueries = [
109+
columnQuery('sum', 'container_network_receive_bytes_total'),
110+
columnQuery('sum', 'container_network_transmit_bytes_total'),
111+
columnQuery('avg', 'container_network_receive_bytes_total'),
112+
columnQuery('avg', 'container_network_transmit_bytes_total'),
113+
columnQuery('sum', 'container_network_receive_packets_total'),
114+
columnQuery('sum', 'container_network_transmit_packets_total'),
115+
columnQuery('sum', 'container_network_receive_packets_dropped_total'),
116+
columnQuery('sum', 'container_network_transmit_packets_dropped_total'),
144117
];
145118

146119
local panels = [

dashboards/network-usage/workload-total.libsonnet

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ local var = g.dashboard.variable;
106106
'${datasource}',
107107
|||
108108
sort_desc(sum(rate(container_network_receive_bytes_total{%(cadvisorSelector)s, %(clusterLabel)s="$cluster",namespace=~"$namespace"}[%(grafanaIntervalVar)s])
109-
* on (namespace,pod)
109+
* on (%(clusterLabel)s, namespace, pod)
110110
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload", workload_type=~"$type"}) by (pod))
111111
||| % $._config
112112
)
@@ -125,7 +125,7 @@ local var = g.dashboard.variable;
125125
'${datasource}',
126126
|||
127127
sort_desc(sum(rate(container_network_transmit_bytes_total{%(cadvisorSelector)s, %(clusterLabel)s="$cluster",namespace=~"$namespace"}[%(grafanaIntervalVar)s])
128-
* on (namespace,pod)
128+
* on (%(clusterLabel)s, namespace, pod)
129129
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload", workload_type=~"$type"}) by (pod))
130130
||| % $._config
131131
)
@@ -144,7 +144,7 @@ local var = g.dashboard.variable;
144144
'${datasource}',
145145
|||
146146
sort_desc(avg(rate(container_network_receive_bytes_total{%(cadvisorSelector)s, %(clusterLabel)s="$cluster",namespace=~"$namespace"}[%(grafanaIntervalVar)s])
147-
* on (namespace,pod)
147+
* on (%(clusterLabel)s, namespace, pod)
148148
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload", workload_type=~"$type"}) by (pod))
149149
||| % $._config
150150
)
@@ -163,7 +163,7 @@ local var = g.dashboard.variable;
163163
'${datasource}',
164164
|||
165165
sort_desc(avg(rate(container_network_transmit_bytes_total{%(cadvisorSelector)s, %(clusterLabel)s="$cluster",namespace=~"$namespace"}[%(grafanaIntervalVar)s])
166-
* on (namespace,pod)
166+
* on (%(clusterLabel)s, namespace, pod)
167167
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload", workload_type=~"$type"}) by (pod))
168168
||| % $._config
169169
)
@@ -177,7 +177,7 @@ local var = g.dashboard.variable;
177177
'${datasource}',
178178
|||
179179
sort_desc(sum(rate(container_network_receive_bytes_total{%(cadvisorSelector)s, %(clusterLabel)s="$cluster",namespace=~"$namespace"}[%(grafanaIntervalVar)s])
180-
* on (namespace,pod)
180+
* on (%(clusterLabel)s, namespace, pod)
181181
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload", workload_type=~"$type"}) by (pod))
182182
||| % $._config
183183
)
@@ -191,7 +191,7 @@ local var = g.dashboard.variable;
191191
'${datasource}',
192192
|||
193193
sort_desc(sum(rate(container_network_transmit_bytes_total{%(cadvisorSelector)s, %(clusterLabel)s="$cluster",namespace=~"$namespace"}[%(grafanaIntervalVar)s])
194-
* on (namespace,pod)
194+
* on (%(clusterLabel)s, namespace, pod)
195195
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload", workload_type=~"$type"}) by (pod))
196196
||| % $._config
197197
)
@@ -205,7 +205,7 @@ local var = g.dashboard.variable;
205205
'${datasource}',
206206
|||
207207
sort_desc(sum(rate(container_network_receive_packets_total{%(cadvisorSelector)s, %(clusterLabel)s="$cluster",namespace=~"$namespace"}[%(grafanaIntervalVar)s])
208-
* on (namespace,pod)
208+
* on (%(clusterLabel)s, namespace, pod)
209209
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload", workload_type=~"$type"}) by (pod))
210210
||| % $._config
211211
)
@@ -219,7 +219,7 @@ local var = g.dashboard.variable;
219219
'${datasource}',
220220
|||
221221
sort_desc(sum(rate(container_network_transmit_packets_total{%(cadvisorSelector)s, %(clusterLabel)s="$cluster",namespace=~"$namespace"}[%(grafanaIntervalVar)s])
222-
* on (namespace,pod)
222+
* on (%(clusterLabel)s, namespace, pod)
223223
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload", workload_type=~"$type"}) by (pod))
224224
||| % $._config
225225
)
@@ -233,7 +233,7 @@ local var = g.dashboard.variable;
233233
'${datasource}',
234234
|||
235235
sort_desc(sum(rate(container_network_receive_packets_dropped_total{%(cadvisorSelector)s, %(clusterLabel)s="$cluster",namespace=~"$namespace"}[%(grafanaIntervalVar)s])
236-
* on (namespace,pod)
236+
* on (%(clusterLabel)s, namespace, pod)
237237
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload", workload_type=~"$type"}) by (pod))
238238
||| % $._config
239239
)
@@ -247,7 +247,7 @@ local var = g.dashboard.variable;
247247
'${datasource}',
248248
|||
249249
sort_desc(sum(rate(container_network_transmit_packets_dropped_total{%(cadvisorSelector)s, %(clusterLabel)s="$cluster",namespace=~"$namespace"}[%(grafanaIntervalVar)s])
250-
* on (namespace,pod)
250+
* on (%(clusterLabel)s, namespace, pod)
251251
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload", workload_type=~"$type"}) by (pod))
252252
||| % $._config
253253
)

0 commit comments

Comments
 (0)