Skip to content

Commit

Permalink
Mixins templatize clusterlabel fixes (#6383)
Browse files Browse the repository at this point in the history
* fix formating

* re-apply #6353

* promtail-mixin: gitignore vendor/

* promtail-mixin: support for config

* mixins: improve config files

* re-trigger build

Co-authored-by: Herve Nicol <12008875+hervenicol@users.noreply.github.com>
  • Loading branch information
hervenicol and hervenicol authored Jun 14, 2022
1 parent efda5b2 commit 50533cb
Show file tree
Hide file tree
Showing 10 changed files with 41 additions and 26 deletions.
3 changes: 3 additions & 0 deletions production/loki-mixin/config.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,8 @@

// The label used to differentiate between different nodes (i.e. servers).
per_node_label: 'instance',

// The label used to differentiate between different clusters.
per_cluster_label: 'cluster',
},
}
20 changes: 10 additions & 10 deletions production/loki-mixin/dashboards/dashboard-utils.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,15 @@ local utils = import 'mixin-utils/utils.libsonnet';

addCluster(multi=false)::
if multi then
self.addMultiTemplate('cluster', 'loki_build_info', 'cluster')
self.addMultiTemplate('cluster', 'loki_build_info', $._config.per_cluster_label)
else
self.addTemplate('cluster', 'loki_build_info', 'cluster'),
self.addTemplate('cluster', 'loki_build_info', $._config.per_cluster_label),

addNamespace(multi=false)::
if multi then
self.addMultiTemplate('namespace', 'loki_build_info{cluster=~"$cluster"}', 'namespace')
self.addMultiTemplate('namespace', 'loki_build_info{' + $._config.per_cluster_label + '=~"$cluster"}', 'namespace')
else
self.addTemplate('namespace', 'loki_build_info{cluster=~"$cluster"}', 'namespace'),
self.addTemplate('namespace', 'loki_build_info{' + $._config.per_cluster_label + '=~"$cluster"}', 'namespace'),

addTag()::
self + {
Expand Down Expand Up @@ -74,18 +74,18 @@ local utils = import 'mixin-utils/utils.libsonnet';
};

if multi then
d.addMultiTemplate('cluster', 'loki_build_info', 'cluster')
.addMultiTemplate('namespace', 'loki_build_info{cluster=~"$cluster"}', 'namespace')
d.addMultiTemplate('cluster', 'loki_build_info', $._config.per_cluster_label)
.addMultiTemplate('namespace', 'loki_build_info{' + $._config.per_cluster_label + '=~"$cluster"}', 'namespace')
else
d.addTemplate('cluster', 'loki_build_info', 'cluster')
.addTemplate('namespace', 'loki_build_info{cluster=~"$cluster"}', 'namespace'),
d.addTemplate('cluster', 'loki_build_info', $._config.per_cluster_label)
.addTemplate('namespace', 'loki_build_info{' + $._config.per_cluster_label + '=~"$cluster"}', 'namespace'),
},

jobMatcher(job)::
'cluster=~"$cluster", job=~"($namespace)/%s"' % job,
$._config.per_cluster_label + '=~"$cluster", job=~"($namespace)/%s"' % job,

namespaceMatcher()::
'cluster=~"$cluster", namespace=~"$namespace"',
$._config.per_cluster_label + '=~"$cluster", namespace=~"$namespace"',

containerLabelMatcher(containerName)::
'label_name=~"%s.*"' % containerName,
Expand Down
2 changes: 1 addition & 1 deletion production/loki-mixin/dashboards/loki-chunks.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
local dashboards = self,
'loki-chunks.json': {
local cfg = self,
labelsSelector:: 'cluster="$cluster", job="$namespace/ingester"',
labelsSelector:: $._config.per_cluster_label + '="$cluster", job="$namespace/ingester"',
} +
$.dashboard('Loki / Chunks', uid='chunks')
.addCluster()
Expand Down
10 changes: 5 additions & 5 deletions production/loki-mixin/dashboards/loki-logs.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,23 @@ local template = import 'grafonnet/template.libsonnet';
template.new(
'deployment',
'$datasource',
'label_values(kube_deployment_created{cluster="$cluster", namespace="$namespace"}, deployment)',
'label_values(kube_deployment_created{' + $._config.per_cluster_label + '="$cluster", namespace="$namespace"}, deployment)',
sort=1,
),

local podTemplate =
template.new(
'pod',
'$datasource',
'label_values(kube_pod_container_info{cluster="$cluster", namespace="$namespace", pod=~"$deployment.*"}, pod)',
'label_values(kube_pod_container_info{' + $._config.per_cluster_label + '="$cluster", namespace="$namespace", pod=~"$deployment.*"}, pod)',
sort=1,
),

local containerTemplate =
template.new(
'container',
'$datasource',
'label_values(kube_pod_container_info{cluster="$cluster", namespace="$namespace", pod=~"$pod", pod=~"$deployment.*"}, container)',
'label_values(kube_pod_container_info{' + $._config.per_cluster_label + '="$cluster", namespace="$namespace", pod=~"$pod", pod=~"$deployment.*"}, container)',
sort=1,
),

Expand All @@ -48,7 +48,7 @@ local template = import 'grafonnet/template.libsonnet';
local cfg = self,

showMultiCluster:: true,
clusterLabel:: 'cluster',
clusterLabel:: $._config.per_cluster_label,

} + lokiLogs +
$.dashboard('Loki / Logs', uid='logs')
Expand All @@ -62,7 +62,7 @@ local template = import 'grafonnet/template.libsonnet';
targets: [
e {
expr: if dashboards['loki-logs.json'].showMultiCluster then super.expr
else std.strReplace(super.expr, 'cluster="$cluster", ', ''),
else std.strReplace(super.expr, $._config.per_cluster_label + '="$cluster", ', ''),
}
for e in p.targets
],
Expand Down
8 changes: 4 additions & 4 deletions production/loki-mixin/dashboards/loki-operational.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
showAnnotations:: true,
showLinks:: true,
showMultiCluster:: true,
clusterLabel:: 'cluster',
clusterLabel:: $._config.per_cluster_label,

matchers:: {
cortexgateway: [utils.selector.re('job', '($namespace)/cortex-gw')],
Expand Down Expand Up @@ -44,13 +44,13 @@ local utils = import 'mixin-utils/utils.libsonnet';
std.strReplace(
std.strReplace(
expr,
', cluster="$cluster"',
', ' + $._config.per_cluster_label + '="$cluster"',
''
),
', cluster=~"$cluster"',
', ' + $._config.per_cluster_label + '=~"$cluster"',
''
),
'cluster="$cluster",',
$._config.per_cluster_label + '="$cluster",',
''
),

Expand Down
2 changes: 1 addition & 1 deletion production/loki-mixin/dashboards/loki-reads.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
local cfg = self,

showMultiCluster:: true,
clusterLabel:: 'cluster',
clusterLabel:: $._config.per_cluster_label,
clusterMatchers::
if cfg.showMultiCluster then
[utils.selector.re(cfg.clusterLabel, '$cluster')]
Expand Down
2 changes: 1 addition & 1 deletion production/loki-mixin/dashboards/loki-writes.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
local cfg = self,

showMultiCluster:: true,
clusterLabel:: 'cluster',
clusterLabel:: $._config.per_cluster_label,
clusterMatchers::
if cfg.showMultiCluster then
[utils.selector.re(cfg.clusterLabel, '$cluster')]
Expand Down
1 change: 1 addition & 0 deletions production/promtail-mixin/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
vendor/
9 changes: 9 additions & 0 deletions production/promtail-mixin/config.libsonnet
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
_config+:: {
// Tags for dashboards.
tags: ['loki'],

// The label used to differentiate between different clusters.
per_cluster_label: 'cluster',
},
}
10 changes: 6 additions & 4 deletions production/promtail-mixin/dashboards.libsonnet
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
local configfile = import 'config.libsonnet';
local g = import 'grafana-builder/grafana.libsonnet';
local loki_mixin_utils = import 'loki-mixin/dashboards/dashboard-utils.libsonnet';
local utils = import 'mixin-utils/utils.libsonnet';
Expand All @@ -6,21 +7,22 @@ local utils = import 'mixin-utils/utils.libsonnet';
grafanaDashboards+: {
local dashboard = (
loki_mixin_utils {
_config+:: { tags: ['loki'] },
_config+:: configfile._config,
}
),
local dashboards = self,

local labelsSelector = 'cluster=~"$cluster", namespace=~"$namespace"',
local quantileLabelSelector = 'cluster=~"$cluster", job=~"$namespace/promtail"',
// local labelsSelector = 'cluster=~"$cluster", namespace=~"$namespace"',
local labelsSelector = dashboard._config.per_cluster_label + '~"$cluster", namespace=~"$namespace"',
local quantileLabelSelector = dashboard._config.per_cluster_label + '=~"$cluster", job=~"$namespace/promtail"',

'promtail.json': {
local cfg = self,
} +
dashboard.dashboard('Loki / Promtail', uid='promtail')
.addCluster()
.addTag()
.addTemplate('namespace', 'promtail_build_info{cluster=~"$cluster"}', 'namespace')
.addTemplate('namespace', 'promtail_build_info{' + dashboard._config.per_cluster_label + '=~"$cluster"}', 'namespace')
.addRow(
g.row('Targets & Files')
.addPanel(
Expand Down

0 comments on commit 50533cb

Please sign in to comment.