@@ -62,6 +62,44 @@ local utils = import 'mixin-utils/utils.libsonnet';
62
62
.addTemplate('cluster' , 'cortex_build_info' , 'cluster' )
63
63
.addTemplate('namespace' , 'cortex_build_info{cluster=~"$cluster"}' , 'namespace' ),
64
64
},
65
+ timeseriesPanel(title, unit='short'):: {
66
+ datasource: '$datasource' ,
67
+ fieldConfig: {
68
+ defaults: {
69
+ custom: {
70
+ drawStyle: 'line' ,
71
+ fillOpacity: 1 ,
72
+ lineWidth: 1 ,
73
+ pointSize: 5 ,
74
+ showPoints: 'never' ,
75
+ spanNulls: false ,
76
+ stacking: {
77
+ group: 'A' ,
78
+ mode: 'none' ,
79
+ },
80
+ },
81
+ thresholds: {
82
+ mode: 'absolute' ,
83
+ steps: [],
84
+ },
85
+ unit: unit,
86
+ },
87
+ overrides: [],
88
+ },
89
+ options: {
90
+ legend: {
91
+ showLegend: true ,
92
+ },
93
+ tooltip: {
94
+ mode: 'single' ,
95
+ sort: 'none' ,
96
+ },
97
+ },
98
+ links: [],
99
+ targets: [],
100
+ title: title,
101
+ type: 'timeseries' ,
102
+ },
65
103
66
104
// The mixin allow specialism of the job selector depending on if its a single binary
67
105
// deployment or a namespaced one.
@@ -108,6 +146,35 @@ local utils = import 'mixin-utils/utils.libsonnet';
108
146
}
109
147
for target in super .targets
110
148
],
149
+ fieldConfig+: {
150
+ defaults+: {
151
+ custom+: {
152
+ lineWidth: 0 ,
153
+ fillOpacity: 100 , // Get solid fill.
154
+ stacking: {
155
+ mode: 'normal' ,
156
+ group: 'A' ,
157
+ },
158
+ },
159
+ unit: 'reqps' ,
160
+ min: 0 ,
161
+ },
162
+ overrides+: [{
163
+ matcher: {
164
+ id: 'byName' ,
165
+ options: status,
166
+ },
167
+ properties: [
168
+ {
169
+ id: 'color' ,
170
+ value: {
171
+ mode: 'fixed' ,
172
+ fixedColor: $.httpStatusColors[status],
173
+ },
174
+ },
175
+ ],
176
+ } for status in std.objectFieldsAll ($.httpStatusColors)],
177
+ },
111
178
},
112
179
113
180
latencyPanel(metricName, selector, multiplier='1e3')::
@@ -121,7 +188,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
121
188
},
122
189
123
190
successFailurePanel(title, successMetric, failureMetric)::
124
- $.timeseriesPanel(title) +
191
+ $.timeseriesPanel(title, unit= 'short' ) +
125
192
$.queryPanel([successMetric, failureMetric], ['successful' , 'failed' ]) +
126
193
$.stack + {
127
194
aliasColors: {
@@ -132,7 +199,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
132
199
133
200
// Displays started, completed and failed rate.
134
201
startedCompletedFailedPanel(title, startedMetric, completedMetric, failedMetric)::
135
- $.timeseriesPanel(title) +
202
+ $.timeseriesPanel(title, unit= 'ops' ) +
136
203
$.queryPanel([startedMetric, completedMetric, failedMetric], ['started' , 'completed' , 'failed' ]) +
137
204
$.stack + {
138
205
aliasColors: {
@@ -160,7 +227,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
160
227
},
161
228
162
229
containerMemoryWorkingSetPanel(title, containerName)::
163
- $.timeseriesPanel(title) +
230
+ $.timeseriesPanel(title, unit= 'bytes' ) +
164
231
$.queryPanel([
165
232
// We use "max" instead of "sum" otherwise during a rolling update of a statefulset we will end up
166
233
// summing the memory of the old instance/pod (whose metric will be stale for 5m) to the new instance/pod.
@@ -180,7 +247,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
180
247
},
181
248
182
249
containerNetworkPanel(title, metric, instanceName)::
183
- $.timeseriesPanel(title) +
250
+ $.timeseriesPanel(title, unit= 'Bps' ) +
184
251
$.queryPanel(
185
252
'sum by(%(instance)s) (rate(%(metric)s{%(namespace)s,%(instance)s=~"%(instanceName)s"}[$__rate_interval]))' % {
186
253
namespace: $.namespaceMatcher(),
@@ -199,7 +266,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
199
266
$.containerNetworkPanel('Transmit Bandwidth' , 'container_network_transmit_bytes_total' , instanceName),
200
267
201
268
containerDiskWritesPanel(title, containerName)::
202
- $.timeseriesPanel(title) +
269
+ $.timeseriesPanel(title, unit= 'Bps' ) +
203
270
$.queryPanel(
204
271
|||
205
272
sum by(%s, %s, device) (
@@ -220,7 +287,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
220
287
{ yaxes: $.yaxes('Bps' ) },
221
288
222
289
containerDiskReadsPanel(title, containerName)::
223
- $.timeseriesPanel(title) +
290
+ $.timeseriesPanel(title, unit= 'Bps' ) +
224
291
$.queryPanel(
225
292
|||
226
293
sum by(%s, %s, device) (
@@ -239,7 +306,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
239
306
{ yaxes: $.yaxes('Bps' ) },
240
307
241
308
containerDiskSpaceUtilization(title, containerName)::
242
- $.timeseriesPanel(title) +
309
+ $.timeseriesPanel(title, unit= 'percentunit' ) +
243
310
$.queryPanel(
244
311
|||
245
312
max by(persistentvolumeclaim) (
@@ -266,7 +333,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
266
333
else 'label_name="%s"' % containerName,
267
334
268
335
goHeapInUsePanel(title, jobName)::
269
- $.timeseriesPanel(title) +
336
+ $.timeseriesPanel(title, unit= 'bytes' ) +
270
337
$.queryPanel(
271
338
'sum by(%s) (go_memstats_heap_inuse_bytes{%s})' % [$._config.per_instance_label, $.jobMatcher(jobName)],
272
339
'{{%s}}' % $._config.per_instance_label
@@ -361,13 +428,12 @@ local utils = import 'mixin-utils/utils.libsonnet';
361
428
getObjectStoreRows(title, component):: [
362
429
super .row(title)
363
430
.addPanel(
364
- $.timeseriesPanel('Operations / sec' ) +
431
+ $.timeseriesPanel('Operations / sec' , unit= 'rps' ) +
365
432
$.queryPanel('sum by(operation) (rate(thanos_objstore_bucket_operations_total{%s,component="%s"}[$__rate_interval]))' % [$.namespaceMatcher(), component], '{{operation}}' ) +
366
- $.stack +
367
- { yaxes: $.yaxes('rps' ) },
433
+ $.stack
368
434
)
369
435
.addPanel(
370
- $.timeseriesPanel('Error rate' ) +
436
+ $.timeseriesPanel('Error rate' , unit= 'percentunit' ) +
371
437
$.queryPanel('sum by(operation) (rate(thanos_objstore_bucket_operation_failures_total{%s,component="%s"}[$__rate_interval])) / sum by(operation) (rate(thanos_objstore_bucket_operations_total{%s,component="%s"}[$__rate_interval]))' % [$.namespaceMatcher(), component, $.namespaceMatcher(), component], '{{operation}}' ) +
372
438
{ yaxes: $.yaxes('percentunit' ) },
373
439
)
@@ -406,7 +472,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
406
472
};
407
473
super .row(title)
408
474
.addPanel(
409
- $.timeseriesPanel('Requests / sec' ) +
475
+ $.timeseriesPanel('Requests / sec' , unit= 'ops' ) +
410
476
$.queryPanel(
411
477
|||
412
478
sum by(operation) (
@@ -439,7 +505,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
439
505
)
440
506
)
441
507
.addPanel(
442
- $.timeseriesPanel('Hit ratio' ) +
508
+ $.timeseriesPanel('Hit ratio' , unit= 'percentunit' ) +
443
509
$.queryPanel(
444
510
|||
445
511
sum(
0 commit comments