github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/production/loki-mixin/dashboards/loki-writes.libsonnet (about) 1 local utils = import 'mixin-utils/utils.libsonnet'; 2 3 (import 'dashboard-utils.libsonnet') { 4 grafanaDashboards+: { 5 local dashboards = self, 6 local showBigTable = false, 7 8 'loki-writes.json': { 9 local cfg = self, 10 11 showMultiCluster:: true, 12 clusterLabel:: $._config.per_cluster_label, 13 clusterMatchers:: 14 if cfg.showMultiCluster then 15 [utils.selector.re(cfg.clusterLabel, '$cluster')] 16 else 17 [], 18 19 matchers:: { 20 cortexgateway: [utils.selector.re('job', '($namespace)/cortex-gw')], 21 distributor: [utils.selector.re('job', '($namespace)/%s' % (if $._config.ssd.enabled then '%s-write' % $._config.ssd.pod_prefix_matcher else 'distributor'))], 22 ingester: [utils.selector.re('job', '($namespace)/%s' % (if $._config.ssd.enabled then '%s-write' % $._config.ssd.pod_prefix_matcher else 'ingester'))], 23 }, 24 25 local selector(matcherId) = 26 local ms = cfg.clusterMatchers + cfg.matchers[matcherId]; 27 if std.length(ms) > 0 then 28 std.join(',', ['%(label)s%(op)s"%(value)s"' % matcher for matcher in ms]) + ',' 29 else '', 30 31 cortexGwSelector:: selector('cortexgateway'), 32 distributorSelector:: selector('distributor'), 33 ingesterSelector:: selector('ingester'), 34 } + 35 $.dashboard('Loki / Writes', uid='writes') 36 .addCluster() 37 .addNamespace() 38 .addTag() 39 .addRowIf( 40 $._config.internal_components, 41 $.row('Frontend (cortex_gw)') 42 .addPanel( 43 $.panel('QPS') + 44 $.qpsPanel('loki_request_duration_seconds_count{%s route=~"api_prom_push|loki_api_v1_push"}' % dashboards['loki-writes.json'].cortexGwSelector) 45 ) 46 .addPanel( 47 $.panel('Latency') + 48 utils.latencyRecordingRulePanel( 49 'loki_request_duration_seconds', 50 dashboards['loki-writes.json'].matchers.cortexgateway + [utils.selector.re('route', 'api_prom_push|loki_api_v1_push')], 51 extra_selectors=dashboards['loki-writes.json'].clusterMatchers 52 ) 53 ) 54 ) 55 .addRow( 56 $.row(if $._config.ssd.enabled then 'Write Path' else 'Distributor') 57 .addPanel( 58 $.panel('QPS') + 59 $.qpsPanel('loki_request_duration_seconds_count{%s, route=~"api_prom_push|loki_api_v1_push|/httpgrpc.HTTP/Handle"}' % std.rstripChars(dashboards['loki-writes.json'].distributorSelector, ',')) 60 ) 61 .addPanel( 62 $.panel('Latency') + 63 utils.latencyRecordingRulePanel( 64 'loki_request_duration_seconds', 65 dashboards['loki-writes.json'].matchers.distributor, 66 extra_selectors=dashboards['loki-writes.json'].clusterMatchers 67 ) 68 ) 69 ) 70 .addRowIf( 71 !$._config.ssd.enabled, 72 $.row('Ingester') 73 .addPanel( 74 $.panel('QPS') + 75 $.qpsPanel('loki_request_duration_seconds_count{%s route="/logproto.Pusher/Push"}' % dashboards['loki-writes.json'].ingesterSelector) 76 ) 77 .addPanel( 78 $.panel('Latency') + 79 utils.latencyRecordingRulePanel( 80 'loki_request_duration_seconds', 81 dashboards['loki-writes.json'].matchers.ingester + [utils.selector.eq('route', '/logproto.Pusher/Push')], 82 extra_selectors=dashboards['loki-writes.json'].clusterMatchers 83 ) 84 ) 85 ) 86 .addRowIf( 87 showBigTable, 88 $.row('BigTable') 89 .addPanel( 90 $.panel('QPS') + 91 $.qpsPanel('loki_bigtable_request_duration_seconds_count{%s operation="/google.bigtable.v2.Bigtable/MutateRows"}' % dashboards['loki-writes.json'].ingesterSelector) 92 ) 93 .addPanel( 94 $.panel('Latency') + 95 utils.latencyRecordingRulePanel( 96 'loki_bigtable_request_duration_seconds', 97 dashboards['loki-writes.json'].clusterMatchers + dashboards['loki-writes.json'].matchers.ingester + [utils.selector.eq('operation', '/google.bigtable.v2.Bigtable/MutateRows')] 98 ) 99 ) 100 ) 101 .addRow( 102 $.row('BoltDB Shipper') 103 .addPanel( 104 $.panel('QPS') + 105 $.qpsPanel('loki_boltdb_shipper_request_duration_seconds_count{%s operation="WRITE"}' % dashboards['loki-writes.json'].ingesterSelector) 106 ) 107 .addPanel( 108 $.panel('Latency') + 109 $.latencyPanel('loki_boltdb_shipper_request_duration_seconds', '{%s operation="WRITE"}' % dashboards['loki-writes.json'].ingesterSelector) 110 ) 111 ), 112 }, 113 }