@@ -62,6 +62,44 @@ local utils = import 'mixin-utils/utils.libsonnet';
6262 .addTemplate('cluster' , 'cortex_build_info' , 'cluster' )
6363 .addTemplate('namespace' , 'cortex_build_info{cluster=~"$cluster"}' , 'namespace' ),
6464 },
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+ },
65103
66104 // The mixin allow specialism of the job selector depending on if its a single binary
67105 // deployment or a namespaced one.
@@ -108,6 +146,35 @@ local utils = import 'mixin-utils/utils.libsonnet';
108146 }
109147 for target in super .targets
110148 ],
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+ },
111178 },
112179
113180 latencyPanel(metricName, selector, multiplier='1e3')::
@@ -121,7 +188,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
121188 },
122189
123190 successFailurePanel(title, successMetric, failureMetric)::
124- $.timeseriesPanel(title) +
191+ $.timeseriesPanel(title, unit= 'short' ) +
125192 $.queryPanel([successMetric, failureMetric], ['successful' , 'failed' ]) +
126193 $.stack + {
127194 aliasColors: {
@@ -132,7 +199,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
132199
133200 // Displays started, completed and failed rate.
134201 startedCompletedFailedPanel(title, startedMetric, completedMetric, failedMetric)::
135- $.timeseriesPanel(title) +
202+ $.timeseriesPanel(title, unit= 'ops' ) +
136203 $.queryPanel([startedMetric, completedMetric, failedMetric], ['started' , 'completed' , 'failed' ]) +
137204 $.stack + {
138205 aliasColors: {
@@ -160,7 +227,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
160227 },
161228
162229 containerMemoryWorkingSetPanel(title, containerName)::
163- $.timeseriesPanel(title) +
230+ $.timeseriesPanel(title, unit= 'bytes' ) +
164231 $.queryPanel([
165232 // We use "max" instead of "sum" otherwise during a rolling update of a statefulset we will end up
166233 // 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';
180247 },
181248
182249 containerNetworkPanel(title, metric, instanceName)::
183- $.timeseriesPanel(title) +
250+ $.timeseriesPanel(title, unit= 'Bps' ) +
184251 $.queryPanel(
185252 'sum by(%(instance)s) (rate(%(metric)s{%(namespace)s,%(instance)s=~"%(instanceName)s"}[$__rate_interval]))' % {
186253 namespace: $.namespaceMatcher(),
@@ -199,7 +266,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
199266 $.containerNetworkPanel('Transmit Bandwidth' , 'container_network_transmit_bytes_total' , instanceName),
200267
201268 containerDiskWritesPanel(title, containerName)::
202- $.timeseriesPanel(title) +
269+ $.timeseriesPanel(title, unit= 'Bps' ) +
203270 $.queryPanel(
204271 |||
205272 sum by(%s, %s, device) (
@@ -220,7 +287,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
220287 { yaxes: $.yaxes('Bps' ) },
221288
222289 containerDiskReadsPanel(title, containerName)::
223- $.timeseriesPanel(title) +
290+ $.timeseriesPanel(title, unit= 'Bps' ) +
224291 $.queryPanel(
225292 |||
226293 sum by(%s, %s, device) (
@@ -239,7 +306,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
239306 { yaxes: $.yaxes('Bps' ) },
240307
241308 containerDiskSpaceUtilization(title, containerName)::
242- $.timeseriesPanel(title) +
309+ $.timeseriesPanel(title, unit= 'percentunit' ) +
243310 $.queryPanel(
244311 |||
245312 max by(persistentvolumeclaim) (
@@ -266,7 +333,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
266333 else 'label_name="%s"' % containerName,
267334
268335 goHeapInUsePanel(title, jobName)::
269- $.timeseriesPanel(title) +
336+ $.timeseriesPanel(title, unit= 'bytes' ) +
270337 $.queryPanel(
271338 'sum by(%s) (go_memstats_heap_inuse_bytes{%s})' % [$._config.per_instance_label, $.jobMatcher(jobName)],
272339 '{{%s}}' % $._config.per_instance_label
@@ -361,13 +428,12 @@ local utils = import 'mixin-utils/utils.libsonnet';
361428 getObjectStoreRows(title, component):: [
362429 super .row(title)
363430 .addPanel(
364- $.timeseriesPanel('Operations / sec' ) +
431+ $.timeseriesPanel('Operations / sec' , unit= 'rps' ) +
365432 $.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
368434 )
369435 .addPanel(
370- $.timeseriesPanel('Error rate' ) +
436+ $.timeseriesPanel('Error rate' , unit= 'percentunit' ) +
371437 $.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}}' ) +
372438 { yaxes: $.yaxes('percentunit' ) },
373439 )
@@ -406,7 +472,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
406472 };
407473 super .row(title)
408474 .addPanel(
409- $.timeseriesPanel('Requests / sec' ) +
475+ $.timeseriesPanel('Requests / sec' , unit= 'ops' ) +
410476 $.queryPanel(
411477 |||
412478 sum by(operation) (
@@ -439,7 +505,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
439505 )
440506 )
441507 .addPanel(
442- $.timeseriesPanel('Hit ratio' ) +
508+ $.timeseriesPanel('Hit ratio' , unit= 'percentunit' ) +
443509 $.queryPanel(
444510 |||
445511 sum(
0 commit comments