Skip to content

Commit

Permalink
Fixup Loki monitoring mixin (grafana#248)
Browse files Browse the repository at this point in the history
* Fix the mixin to reference the mixin-utils pkg.

Signed-off-by: Tom Wilkie <[email protected]>

* s/g.selector/utils.selector/

Signed-off-by: Tom Wilkie <[email protected]>

* Actually import utils.

Signed-off-by: Tom Wilkie <[email protected]>

* Don't cut corners with replacing.

Signed-off-by: Tom Wilkie <[email protected]>
  • Loading branch information
tomwilkie authored Jan 29, 2019
1 parent 9d2c6cf commit 97a87f5
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 41 deletions.
17 changes: 9 additions & 8 deletions production/loki-mixin/dashboards.libsonnet
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
local g = import 'grafana-builder/grafana.libsonnet';
local utils = import "mixin-utils/utils.libsonnet";

{
dashboards+: {
Expand All @@ -14,7 +15,7 @@ local g = import 'grafana-builder/grafana.libsonnet';
)
.addPanel(
g.panel('Latency') +
g.latencyRecordingRulePanel('cortex_gw_request_duration_seconds', [g.selector.eq('job', '$namespace/cortex-gw'), g.selector.eq('route', 'cortex-write')], extra_selectors=[g.selector.eq('cluster', '$cluster')])
utils.latencyRecordingRulePanel('cortex_gw_request_duration_seconds', [utils.selector.eq('job', '$namespace/cortex-gw'), utils.selector.eq('route', 'cortex-write')], extra_selectors=[utils.selector.eq('cluster', '$cluster')])
)
)
.addRow(
Expand All @@ -25,7 +26,7 @@ local g = import 'grafana-builder/grafana.libsonnet';
)
.addPanel(
g.panel('Latency') +
g.latencyRecordingRulePanel('loki_request_duration_seconds', [g.selector.eq('job', '$namespace/distributor'), g.selector.eq('route', 'api_prom_push')], extra_selectors=[g.selector.eq('cluster', '$cluster')])
utils.latencyRecordingRulePanel('loki_request_duration_seconds', [utils.selector.eq('job', '$namespace/distributor'), utils.selector.eq('route', 'api_prom_push')], extra_selectors=[utils.selector.eq('cluster', '$cluster')])
)
)
.addRow(
Expand All @@ -36,7 +37,7 @@ local g = import 'grafana-builder/grafana.libsonnet';
)
.addPanel(
g.panel('Latency') +
g.latencyRecordingRulePanel('loki_request_duration_seconds', [g.selector.eq('job', '$namespace/ingester'), g.selector.eq('route', '/logproto.Pusher/Push')], extra_selectors=[g.selector.eq('cluster', '$cluster')])
utils.latencyRecordingRulePanel('loki_request_duration_seconds', [utils.selector.eq('job', '$namespace/ingester'), utils.selector.eq('route', '/logproto.Pusher/Push')], extra_selectors=[utils.selector.eq('cluster', '$cluster')])
)
),

Expand All @@ -52,7 +53,7 @@ local g = import 'grafana-builder/grafana.libsonnet';
)
.addPanel(
g.panel('Latency') +
g.latencyRecordingRulePanel('cortex_gw_request_duration_seconds', [g.selector.eq('job', '$namespace/cortex-gw'), g.selector.eq('route', 'cortex-read')], extra_selectors=[g.selector.eq('cluster', '$cluster')])
utils.latencyRecordingRulePanel('cortex_gw_request_duration_seconds', [utils.selector.eq('job', '$namespace/cortex-gw'), utils.selector.eq('route', 'cortex-read')], extra_selectors=[utils.selector.eq('cluster', '$cluster')])
)
)
.addRow(
Expand All @@ -63,7 +64,7 @@ local g = import 'grafana-builder/grafana.libsonnet';
)
.addPanel(
g.panel('Latency') +
g.latencyRecordingRulePanel('loki_request_duration_seconds', [g.selector.eq('job', '$namespace/querier')], extra_selectors=[g.selector.eq('cluster', '$cluster')])
utils.latencyRecordingRulePanel('loki_request_duration_seconds', [utils.selector.eq('job', '$namespace/querier')], extra_selectors=[utils.selector.eq('cluster', '$cluster')])
)
)
.addRow(
Expand All @@ -74,7 +75,7 @@ local g = import 'grafana-builder/grafana.libsonnet';
)
.addPanel(
g.panel('Latency') +
g.latencyRecordingRulePanel('loki_request_duration_seconds', [g.selector.eq('job', '$namespace/ingester'), g.selector.nre('route', '/logproto.Pusher/Push|metrics|ready')], extra_selectors=[g.selector.eq('cluster', '$cluster')])
utils.latencyRecordingRulePanel('loki_request_duration_seconds', [utils.selector.eq('job', '$namespace/ingester'), utils.selector.nre('route', '/logproto.Pusher/Push|metrics|ready')], extra_selectors=[utils.selector.eq('cluster', '$cluster')])
)
),

Expand Down Expand Up @@ -142,7 +143,7 @@ local g = import 'grafana-builder/grafana.libsonnet';
)
.addPanel(
g.panel('Latency') +
g.latencyRecordingRulePanel('cortex_gw_request_duration_seconds', [g.selector.eq('job', '$namespace/cortex-gw')], extra_selectors=[g.selector.eq('cluster', '$cluster')])
utils.latencyRecordingRulePanel('cortex_gw_request_duration_seconds', [utils.selector.eq('job', '$namespace/cortex-gw')], extra_selectors=[utils.selector.eq('cluster', '$cluster')])
)
),
'promtail.json':
Expand All @@ -157,7 +158,7 @@ local g = import 'grafana-builder/grafana.libsonnet';
)
.addPanel(
g.panel('Latency') +
g.latencyRecordingRulePanel('promtail_request_duration_seconds', [g.selector.eq('job', '$namespace/promtail')], extra_selectors=[g.selector.eq('cluster', '$cluster')])
utils.latencyRecordingRulePanel('promtail_request_duration_seconds', [utils.selector.eq('job', '$namespace/promtail')], extra_selectors=[utils.selector.eq('cluster', '$cluster')])
)
)
},
Expand Down
14 changes: 12 additions & 2 deletions production/loki-mixin/jsonnetfile.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,21 @@
"name": "grafana-builder",
"source": {
"git": {
"remote": "https://github.com/kausalco/public",
"remote": "https://github.com/grafana/jsonnet-libs",
"subdir": "grafana-builder"
}
},
"version": "master"
},
{
"name": "mixin-utils",
"source": {
"git": {
"remote": "https://github.com/grafana/jsonnet-libs",
"subdir": "mixin-utils"
}
},
"version": "master"
}
]
}
}
6 changes: 3 additions & 3 deletions production/loki-mixin/jsonnetfile.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
"name": "grafana-builder",
"source": {
"git": {
"remote": "https://github.com/kausalco/public",
"remote": "https://github.com/grafana/jsonnet-libs",
"subdir": "grafana-builder"
}
},
"version": "cab274f882aae97ad6add33590a3b149e6f8eeac"
"version": "5e341873c18cc5d524108f276b4c4994f6c1c0be"
}
]
}
}
37 changes: 9 additions & 28 deletions production/loki-mixin/recording_rules.libsonnet
Original file line number Diff line number Diff line change
@@ -1,43 +1,24 @@
local histogramRules(metric, labels) =
local vars = {
metric: metric,
labels_underscore: std.join('_', labels),
labels_comma: std.join(', ', labels),
};
[
{
record: '%(labels_underscore)s:%(metric)s:99quantile' % vars,
expr: 'histogram_quantile(0.99, sum(rate(%(metric)s_bucket[5m])) by (le, %(labels_comma)s))' % vars,
},
{
record: '%(labels_underscore)s:%(metric)s:50quantile' % vars,
expr: 'histogram_quantile(0.50, sum(rate(%(metric)s_bucket[5m])) by (le, %(labels_comma)s))' % vars,
},
{
record: '%(labels_underscore)s:%(metric)s:avg' % vars,
expr: 'sum(rate(%(metric)s_sum[5m])) by (%(labels_comma)s) / sum(rate(%(metric)s_count[5m])) by (%(labels_comma)s)' % vars,
},
];
local utils = import "mixin-utils/utils.libsonnet";

{
prometheus_rules+:: {
groups+: [{
name: 'loki_rules',
rules:
histogramRules('loki_request_duration_seconds', ['job']) +
histogramRules('loki_request_duration_seconds', ['job', 'route']) +
histogramRules('loki_request_duration_seconds', ['namespace', 'job', 'route']),
utils.histogramRules('loki_request_duration_seconds', ['job']) +
utils.histogramRules('loki_request_duration_seconds', ['job', 'route']) +
utils.histogramRules('loki_request_duration_seconds', ['namespace', 'job', 'route']),
}, {
name: 'loki_frontend_rules',
rules:
histogramRules('cortex_gw_request_duration_seconds', ['job']) +
histogramRules('cortex_gw_request_duration_seconds', ['job', 'route']) +
histogramRules('cortex_gw_request_duration_seconds', ['namespace', 'job', 'route']),
utils.histogramRules('cortex_gw_request_duration_seconds', ['job']) +
utils.histogramRules('cortex_gw_request_duration_seconds', ['job', 'route']) +
utils.histogramRules('cortex_gw_request_duration_seconds', ['namespace', 'job', 'route']),
}, {
name: 'promtail_rules',
rules:
histogramRules('promtail_request_duration_seconds', ['job']) +
histogramRules('promtail_request_duration_seconds', ['job', 'status_code']),
utils.histogramRules('promtail_request_duration_seconds', ['job']) +
utils.histogramRules('promtail_request_duration_seconds', ['job', 'status_code']),
}],
},
}

0 comments on commit 97a87f5

Please sign in to comment.