Skip to content

Commit f1425b6

Browse files
authored
feat: mixin, allow overriding of some labels by parameterizing mixin recording/alert rules (#11495)
Signed-off-by: Alexander Soelberg Heidarsson <[email protected]>
1 parent 8b4f095 commit f1425b6

File tree

5 files changed

+29
-14
lines changed

5 files changed

+29
-14
lines changed

production/loki-mixin/alerts.libsonnet

+10-10
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
rules: [
77
{
88
alert: 'LokiRequestErrors',
9-
expr: std.strReplace(|||
10-
100 * sum(rate(loki_request_duration_seconds_count{status_code=~"5.."}[2m])) by (cluster, namespace, job, route)
9+
expr: |||
10+
100 * sum(rate(loki_request_duration_seconds_count{status_code=~"5.."}[2m])) by (%(group_by_cluster)s, job, route)
1111
/
12-
sum(rate(loki_request_duration_seconds_count[2m])) by (cluster, namespace, job, route)
12+
sum(rate(loki_request_duration_seconds_count[2m])) by (%(group_by_cluster)s, job, route)
1313
> 10
14-
|||, 'cluster', $._config.per_cluster_label),
14+
||| % $._config,
1515
'for': '15m',
1616
labels: {
1717
severity: 'critical',
@@ -26,8 +26,8 @@
2626
{
2727
alert: 'LokiRequestPanics',
2828
expr: |||
29-
sum(increase(loki_panic_total[10m])) by (%s, namespace, job) > 0
30-
||| % $._config.per_cluster_label,
29+
sum(increase(loki_panic_total[10m])) by (%(group_by_cluster)s, job) > 0
30+
||| % $._config,
3131
labels: {
3232
severity: 'critical',
3333
},
@@ -41,8 +41,8 @@
4141
{
4242
alert: 'LokiRequestLatency',
4343
expr: |||
44-
%s_namespace_job_route:loki_request_duration_seconds:99quantile{route!~"(?i).*tail.*|/schedulerpb.SchedulerForQuerier/QuerierLoop"} > 1
45-
||| % $._config.per_cluster_label,
44+
%(group_prefix_jobs)s_route:loki_request_duration_seconds:99quantile{route!~"(?i).*tail.*|/schedulerpb.SchedulerForQuerier/QuerierLoop"} > 1
45+
||| % $._config,
4646
'for': '15m',
4747
labels: {
4848
severity: 'critical',
@@ -57,8 +57,8 @@
5757
{
5858
alert: 'LokiTooManyCompactorsRunning',
5959
expr: |||
60-
sum(loki_boltdb_shipper_compactor_running) by (%s, namespace) > 1
61-
||| % $._config.per_cluster_label,
60+
sum(loki_boltdb_shipper_compactor_running) by (%(group_by_cluster)s) > 1
61+
||| % $._config,
6262
'for': '5m',
6363
labels: {
6464
severity: 'warning',

production/loki-mixin/config.libsonnet

+17
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
{
2+
local makePrefix(groups) = std.join('_', groups),
3+
local makeGroupBy(groups) = std.join(', ', groups),
4+
25
_config+:: {
36
// Tags for dashboards.
47
tags: ['loki'],
@@ -11,6 +14,20 @@
1114

1215
// The label used to differentiate between different clusters.
1316
per_cluster_label: 'cluster',
17+
per_namespace_label: 'namespace',
18+
per_job_label: 'job',
19+
20+
// Grouping labels, to uniquely identify and group by {jobs, clusters}
21+
job_labels: [$._config.per_cluster_label, $._config.per_namespace_label, $._config.per_job_label],
22+
cluster_labels: [$._config.per_cluster_label, $._config.per_namespace_label],
23+
24+
// Each group prefix is composed of `_`-separated labels
25+
group_prefix_jobs: makePrefix($._config.job_labels),
26+
group_prefix_clusters: makePrefix($._config.cluster_labels),
27+
28+
// Each group-by label list is `, `-separated and unique identifies
29+
group_by_job: makeGroupBy($._config.job_labels),
30+
group_by_cluster: makeGroupBy($._config.cluster_labels),
1431

1532
// Enable dashboard and panels for Grafana Labs internal components.
1633
internal_components: false,

production/loki-mixin/dashboards.libsonnet

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
(import 'config.libsonnet') +
21
(import 'dashboards/loki-retention.libsonnet') +
32
(import 'dashboards/loki-chunks.libsonnet') +
43
(import 'dashboards/loki-logs.libsonnet') +

production/loki-mixin/mixin-ssd.libsonnet

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
(import 'dashboards.libsonnet') +
2-
(import 'alerts.libsonnet') +
3-
(import 'recording_rules.libsonnet') + {
1+
(import 'mixin.libsonnet') + {
42
grafanaDashboardFolder: 'Loki SSD',
53

64
_config+:: {

production/loki-mixin/mixin.libsonnet

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
(import 'dashboards.libsonnet') +
22
(import 'alerts.libsonnet') +
3+
(import 'config.libsonnet') +
34
(import 'recording_rules.libsonnet') + {
45
grafanaDashboardFolder: 'Loki',
56
// Without this, configs is not taken into account

0 commit comments

Comments
 (0)