github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/production/loki-mixin/dashboards/loki-reads.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      local http_routes = 'loki_api_v1_series|api_prom_series|api_prom_query|api_prom_label|api_prom_label_name_values|loki_api_v1_query|loki_api_v1_query_range|loki_api_v1_labels|loki_api_v1_label_name_values',
     9      local grpc_routes = '/logproto.Querier/Query|/logproto.Querier/Label|/logproto.Querier/Series|/logproto.Querier/QuerySample|/logproto.Querier/GetChunkIDs',
    10  
    11      'loki-reads.json': {
    12                           local cfg = self,
    13  
    14                           showMultiCluster:: true,
    15                           clusterLabel:: $._config.per_cluster_label,
    16                           clusterMatchers::
    17                             if cfg.showMultiCluster then
    18                               [utils.selector.re(cfg.clusterLabel, '$cluster')]
    19                             else
    20                               [],
    21  
    22                           matchers:: {
    23                             cortexgateway: [utils.selector.re('job', '($namespace)/cortex-gw')],
    24                             queryFrontend: [utils.selector.re('job', '($namespace)/%s' % (if $._config.ssd.enabled then '%s-read' % $._config.ssd.pod_prefix_matcher else 'query-frontend'))],
    25                             querier: [utils.selector.re('job', '($namespace)/%s' % (if $._config.ssd.enabled then '%s-write' % $._config.ssd.pod_prefix_matcher else 'querier'))],
    26                             ingester: [utils.selector.re('job', '($namespace)/%s' % (if $._config.ssd.enabled then '%s-write' % $._config.ssd.pod_prefix_matcher else 'ingester'))],
    27                             querierOrIndexGateway: [utils.selector.re('job', '($namespace)/%s' % (if $._config.ssd.enabled then '%s-read' % $._config.ssd.pod_prefix_matcher else '(querier|index-gateway)'))],
    28                           },
    29  
    30                           local selector(matcherId) =
    31                             local ms = (cfg.clusterMatchers + cfg.matchers[matcherId]);
    32                             if std.length(ms) > 0 then
    33                               std.join(',', ['%(label)s%(op)s"%(value)s"' % matcher for matcher in ms]) + ','
    34                             else '',
    35  
    36                           cortexGwSelector:: selector('cortexgateway'),
    37                           queryFrontendSelector:: selector('queryFrontend'),
    38                           querierSelector:: selector('querier'),
    39                           ingesterSelector:: selector('ingester'),
    40                           querierOrIndexGatewaySelector:: selector('querierOrIndexGateway'),
    41                         } +
    42                         $.dashboard('Loki / Reads', uid='reads')
    43                         .addCluster()
    44                         .addNamespace()
    45                         .addTag()
    46                         .addRowIf(
    47                           $._config.internal_components,
    48                           $.row('Frontend (cortex_gw)')
    49                           .addPanel(
    50                             $.panel('QPS') +
    51                             $.qpsPanel('loki_request_duration_seconds_count{%s route=~"%s"}' % [dashboards['loki-reads.json'].cortexGwSelector, http_routes])
    52                           )
    53                           .addPanel(
    54                             $.panel('Latency') +
    55                             utils.latencyRecordingRulePanel(
    56                               'loki_request_duration_seconds',
    57                               dashboards['loki-reads.json'].matchers.cortexgateway + [utils.selector.re('route', http_routes)],
    58                               extra_selectors=dashboards['loki-reads.json'].clusterMatchers,
    59                               sum_by=['route']
    60                             )
    61                           )
    62                         )
    63                         .addRow(
    64                           $.row(if $._config.ssd.enabled then 'Read Path' else 'Frontend (query-frontend)')
    65                           .addPanel(
    66                             $.panel('QPS') +
    67                             $.qpsPanel('loki_request_duration_seconds_count{%s route=~"%s"}' % [dashboards['loki-reads.json'].queryFrontendSelector, http_routes])
    68                           )
    69                           .addPanel(
    70                             $.panel('Latency') +
    71                             utils.latencyRecordingRulePanel(
    72                               'loki_request_duration_seconds',
    73                               dashboards['loki-reads.json'].matchers.queryFrontend + [utils.selector.re('route', http_routes)],
    74                               extra_selectors=dashboards['loki-reads.json'].clusterMatchers,
    75                               sum_by=['route']
    76                             )
    77                           )
    78                         )
    79                         .addRowIf(
    80                           !$._config.ssd.enabled,
    81                           $.row('Querier')
    82                           .addPanel(
    83                             $.panel('QPS') +
    84                             $.qpsPanel('loki_request_duration_seconds_count{%s route=~"%s"}' % [dashboards['loki-reads.json'].querierSelector, http_routes])
    85                           )
    86                           .addPanel(
    87                             $.panel('Latency') +
    88                             utils.latencyRecordingRulePanel(
    89                               'loki_request_duration_seconds',
    90                               dashboards['loki-reads.json'].matchers.querier + [utils.selector.re('route', http_routes)],
    91                               extra_selectors=dashboards['loki-reads.json'].clusterMatchers,
    92                               sum_by=['route']
    93                             )
    94                           )
    95                         )
    96                         .addRowIf(
    97                           !$._config.ssd.enabled,
    98                           $.row('Ingester')
    99                           .addPanel(
   100                             $.panel('QPS') +
   101                             $.qpsPanel('loki_request_duration_seconds_count{%s route=~"%s"}' % [dashboards['loki-reads.json'].ingesterSelector, grpc_routes])
   102                           )
   103                           .addPanel(
   104                             $.panel('Latency') +
   105                             utils.latencyRecordingRulePanel(
   106                               'loki_request_duration_seconds',
   107                               dashboards['loki-reads.json'].matchers.ingester + [utils.selector.re('route', grpc_routes)],
   108                               extra_selectors=dashboards['loki-reads.json'].clusterMatchers,
   109                               sum_by=['route']
   110                             )
   111                           )
   112                         )
   113                         .addRowIf(
   114                           showBigTable,
   115                           $.row('BigTable')
   116                           .addPanel(
   117                             $.panel('QPS') +
   118                             $.qpsPanel('loki_bigtable_request_duration_seconds_count{%s operation="/google.bigtable.v2.Bigtable/ReadRows"}' % dashboards['loki-reads.json'].querierSelector)
   119                           )
   120                           .addPanel(
   121                             $.panel('Latency') +
   122                             utils.latencyRecordingRulePanel(
   123                               'loki_bigtable_request_duration_seconds',
   124                               dashboards['loki-reads.json'].matchers.querier + [utils.selector.eq('operation', '/google.bigtable.v2.Bigtable/ReadRows')]
   125                             )
   126                           )
   127                         )
   128                         .addRow(
   129                           $.row('BoltDB Shipper')
   130                           .addPanel(
   131                             $.panel('QPS') +
   132                             $.qpsPanel('loki_boltdb_shipper_request_duration_seconds_count{%s operation="Shipper.Query"}' % dashboards['loki-reads.json'].querierOrIndexGatewaySelector)
   133                           )
   134                           .addPanel(
   135                             $.panel('Latency') +
   136                             $.latencyPanel('loki_boltdb_shipper_request_duration_seconds', '{%s operation="Shipper.Query"}' % dashboards['loki-reads.json'].querierOrIndexGatewaySelector)
   137                           )
   138                         ),
   139    },
   140  }