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  }