From ffe109384ba6124b1dc3011ea859797beb117aa8 Mon Sep 17 00:00:00 2001
From: Tom Wilkie <tom.wilkie@gmail.com>
Date: Tue, 29 Jan 2019 12:39:13 +0000
Subject: [PATCH] Tweak Loki Writes dashboards, add resource request and limits
 to distributor and ingester ksonnet.

Signed-off-by: Tom Wilkie <tom.wilkie@gmail.com>
---
 production/ksonnet/loki/distributor.libsonnet |  4 +++-
 production/ksonnet/loki/ingester.libsonnet    |  4 +++-
 production/loki-mixin/dashboards.libsonnet    | 18 +++++++++---------
 3 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/production/ksonnet/loki/distributor.libsonnet b/production/ksonnet/loki/distributor.libsonnet
index ac767705..dabddc91 100644
--- a/production/ksonnet/loki/distributor.libsonnet
+++ b/production/ksonnet/loki/distributor.libsonnet
@@ -10,7 +10,9 @@
   distributor_container::
     container.new('distributor', $._images.distributor) +
     container.withPorts($.util.defaultPorts) +
-    container.withArgsMixin($.util.mapToFlags($.distributor_args)),
+    container.withArgsMixin($.util.mapToFlags($.distributor_args)) +
+    $.util.resourcesRequests('0.5', '100Mi') +
+    $.util.resourcesLimits('1', '200Mi'),
 
   local deployment = $.apps.v1beta1.deployment,
 
diff --git a/production/ksonnet/loki/ingester.libsonnet b/production/ksonnet/loki/ingester.libsonnet
index 31860be2..2267209b 100644
--- a/production/ksonnet/loki/ingester.libsonnet
+++ b/production/ksonnet/loki/ingester.libsonnet
@@ -13,7 +13,9 @@
     container.mixin.readinessProbe.httpGet.withPath('/ready') +
     container.mixin.readinessProbe.httpGet.withPort(80) +
     container.mixin.readinessProbe.withInitialDelaySeconds(15) +
-    container.mixin.readinessProbe.withTimeoutSeconds(1),
+    container.mixin.readinessProbe.withTimeoutSeconds(1) +
+    $.util.resourcesRequests('1', '5Gi') +
+    $.util.resourcesLimits('2', '10Gi'),
 
   local deployment = $.apps.v1beta1.deployment,
 
diff --git a/production/loki-mixin/dashboards.libsonnet b/production/loki-mixin/dashboards.libsonnet
index d2587cd2..81b62f05 100644
--- a/production/loki-mixin/dashboards.libsonnet
+++ b/production/loki-mixin/dashboards.libsonnet
@@ -5,44 +5,44 @@ local utils = import "mixin-utils/utils.libsonnet";
   dashboards+: {
     'loki-writes.json':
       g.dashboard('Loki / Writes')
-      .addTemplate('cluster', 'kube_pod_container_info{image=~".*loki.*"}', 'cluster')
-      .addTemplate('namespace', 'kube_pod_container_info{image=~".*loki.*"}', 'namespace')
+      .addMultiTemplate('cluster', 'kube_pod_container_info{image=~".*loki.*"}', 'cluster')
+      .addMultiTemplate('namespace', 'kube_pod_container_info{image=~".*loki.*"}', 'namespace')
       .addRow(
         g.row('Frontend (cortex_gw)')
         .addPanel(
           g.panel('QPS') +
-          g.qpsPanel('cortex_gw_request_duration_seconds_count{cluster="$cluster", job="$namespace/cortex-gw", route="cortex-write"}')
+          g.qpsPanel('cortex_gw_request_duration_seconds_count{cluster=~"$cluster", job=~"($namespace)/cortex-gw", route="cortex-write"}')
         )
         .addPanel(
           g.panel('Latency') +
-          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')])
+          utils.latencyRecordingRulePanel('cortex_gw_request_duration_seconds', [utils.selector.re('job', '($namespace)/cortex-gw'), utils.selector.eq('route', 'cortex-write')], extra_selectors=[utils.selector.re('cluster', '$cluster')])
         )
       )
       .addRow(
         g.row('Distributor')
         .addPanel(
           g.panel('QPS') +
-          g.qpsPanel('loki_request_duration_seconds_count{cluster="$cluster", job="$namespace/distributor", route="api_prom_push"}')
+          g.qpsPanel('loki_request_duration_seconds_count{cluster=~"($cluster)", job=~"($namespace)/distributor"}')
         )
         .addPanel(
           g.panel('Latency') +
-          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')])
+          utils.latencyRecordingRulePanel('loki_request_duration_seconds', [utils.selector.re('job', '($namespace)/distributor')], extra_selectors=[utils.selector.re('cluster', '$cluster')])
         )
       )
       .addRow(
         g.row('Ingester')
         .addPanel(
           g.panel('QPS') +
-          g.qpsPanel('loki_request_duration_seconds_count{cluster="$cluster", job="$namespace/ingester",route="/logproto.Pusher/Push"}')
+          g.qpsPanel('loki_request_duration_seconds_count{cluster=~"$cluster", job=~"($namespace)/ingester",route="/logproto.Pusher/Push"}')
         )
         .addPanel(
           g.panel('Latency') +
-          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')])
+          utils.latencyRecordingRulePanel('loki_request_duration_seconds', [utils.selector.re('job', '($namespace)/ingester'), utils.selector.eq('route', '/logproto.Pusher/Push')], extra_selectors=[utils.selector.re('cluster', '$cluster')])
         )
       ),
 
     'loki-reads.json':
-      g.dashboard('loki / Reads')
+      g.dashboard('Loki / Reads')
       .addTemplate('cluster', 'kube_pod_container_info{image=~".*loki.*"}', 'cluster')
       .addTemplate('namespace', 'kube_pod_container_info{image=~".*loki.*"}', 'namespace')
       .addRow(
-- 
GitLab