github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/production/loki-mixin/dashboards/loki-reads-resources.libsonnet (about) 1 local grafana = import 'grafonnet/grafana.libsonnet'; 2 local utils = import 'mixin-utils/utils.libsonnet'; 3 4 (import 'dashboard-utils.libsonnet') { 5 local index_gateway_pod_matcher = if $._config.ssd.enabled then 'container="loki", pod=~"%s-read.*"' % $._config.ssd.pod_prefix_matcher else 'container="index-gateway"', 6 local index_gateway_job_matcher = if $._config.ssd.enabled then '%s-read' % $._config.ssd.pod_prefix_matcher else 'index-gateway', 7 8 local ingester_pod_matcher = if $._config.ssd.enabled then 'container="loki", pod=~"%s-write.*"' % $._config.ssd.pod_prefix_matcher else 'container="ingester"', 9 local ingester_job_matcher = if $._config.ssd.enabled then '%s-write' % $._config.ssd.pod_prefix_matcher else 'ingester', 10 11 grafanaDashboards+:: 12 { 13 'loki-reads-resources.json': 14 ($.dashboard('Loki / Reads Resources', uid='reads-resources')) 15 .addCluster() 16 .addNamespace() 17 .addTag() 18 .addRowIf( 19 $._config.internal_components, 20 $.row('Gateway') 21 .addPanel( 22 $.containerCPUUsagePanel('CPU', 'cortex-gw'), 23 ) 24 .addPanel( 25 $.containerMemoryWorkingSetPanel('Memory (workingset)', 'cortex-gw'), 26 ) 27 .addPanel( 28 $.goHeapInUsePanel('Memory (go heap inuse)', 'cortex-gw'), 29 ) 30 ) 31 .addRowIf( 32 !$._config.ssd.enabled, 33 $.row('Query Frontend') 34 .addPanel( 35 $.containerCPUUsagePanel('CPU', 'query-frontend'), 36 ) 37 .addPanel( 38 $.containerMemoryWorkingSetPanel('Memory (workingset)', 'query-frontend'), 39 ) 40 .addPanel( 41 $.goHeapInUsePanel('Memory (go heap inuse)', 'query-frontend'), 42 ) 43 ) 44 .addRowIf( 45 !$._config.ssd.enabled, 46 $.row('Query Scheduler') 47 .addPanel( 48 $.containerCPUUsagePanel('CPU', 'query-scheduler'), 49 ) 50 .addPanel( 51 $.containerMemoryWorkingSetPanel('Memory (workingset)', 'query-scheduler'), 52 ) 53 .addPanel( 54 $.goHeapInUsePanel('Memory (go heap inuse)', 'query-scheduler'), 55 ) 56 ) 57 .addRowIf( 58 !$._config.ssd.enabled, 59 grafana.row.new('Querier') 60 .addPanel( 61 $.containerCPUUsagePanel('CPU', 'querier'), 62 ) 63 .addPanel( 64 $.containerMemoryWorkingSetPanel('Memory (workingset)', 'querier'), 65 ) 66 .addPanel( 67 $.goHeapInUsePanel('Memory (go heap inuse)', 'querier'), 68 ) 69 .addPanel( 70 $.panel('Disk Writes') + 71 $.queryPanel( 72 'sum by(%s, %s, device) (rate(node_disk_written_bytes_total[$__rate_interval])) + %s' % [$._config.per_node_label, $._config.per_instance_label, $.filterNodeDiskContainer('querier')], 73 '{{%s}} - {{device}}' % $._config.per_instance_label 74 ) + 75 $.stack + 76 { yaxes: $.yaxes('Bps') }, 77 ) 78 .addPanel( 79 $.panel('Disk Reads') + 80 $.queryPanel( 81 'sum by(%s, %s, device) (rate(node_disk_read_bytes_total[$__rate_interval])) + %s' % [$._config.per_node_label, $._config.per_instance_label, $.filterNodeDiskContainer('querier')], 82 '{{%s}} - {{device}}' % $._config.per_instance_label 83 ) + 84 $.stack + 85 { yaxes: $.yaxes('Bps') }, 86 ) 87 .addPanel( 88 $.containerDiskSpaceUtilizationPanel('Disk Space Utilization', 'querier'), 89 ) 90 ) 91 .addRow( 92 grafana.row.new(if $._config.ssd.enabled then 'Read path' else 'Index Gateway') 93 .addPanel( 94 $.CPUUsagePanel('CPU', index_gateway_pod_matcher), 95 ) 96 .addPanel( 97 $.memoryWorkingSetPanel('Memory (workingset)', index_gateway_pod_matcher), 98 ) 99 .addPanel( 100 $.goHeapInUsePanel('Memory (go heap inuse)', index_gateway_job_matcher), 101 ) 102 .addPanel( 103 $.panel('Disk Writes') + 104 $.queryPanel( 105 'sum by(%s, %s, device) (rate(node_disk_written_bytes_total[$__rate_interval])) + %s' % [$._config.per_node_label, $._config.per_instance_label, $.filterNodeDisk(index_gateway_pod_matcher)], 106 '{{%s}} - {{device}}' % $._config.per_instance_label 107 ) + 108 $.stack + 109 { yaxes: $.yaxes('Bps') }, 110 ) 111 .addPanel( 112 $.panel('Disk Reads') + 113 $.queryPanel( 114 'sum by(%s, %s, device) (rate(node_disk_read_bytes_total[$__rate_interval])) + %s' % [$._config.per_node_label, $._config.per_instance_label, $.filterNodeDisk(index_gateway_pod_matcher)], 115 '{{%s}} - {{device}}' % $._config.per_instance_label 116 ) + 117 $.stack + 118 { yaxes: $.yaxes('Bps') }, 119 ) 120 .addPanel( 121 $.containerDiskSpaceUtilizationPanel('Disk Space Utilization', index_gateway_job_matcher), 122 ) 123 .addPanel( 124 $.panel('Query Readiness Duration') + 125 $.queryPanel( 126 ['loki_boltdb_shipper_query_readiness_duration_seconds{%s}' % $.namespaceMatcher()], ['duration'] 127 ) + 128 { yaxes: $.yaxes('s') }, 129 ) 130 ) 131 .addRow( 132 $.row('Ingester') 133 .addPanel( 134 $.CPUUsagePanel('CPU', ingester_pod_matcher), 135 ) 136 .addPanel( 137 $.memoryWorkingSetPanel('Memory (workingset)', ingester_pod_matcher), 138 ) 139 .addPanel( 140 $.goHeapInUsePanel('Memory (go heap inuse)', ingester_job_matcher), 141 ) 142 ) 143 .addRowIf( 144 !$._config.ssd.enabled, 145 grafana.row.new('Ruler') 146 .addPanel( 147 $.panel('Rules') + 148 $.queryPanel( 149 'sum by(%s) (cortex_prometheus_rule_group_rules{%s})' % [$._config.per_instance_label, $.jobMatcher('ruler')], 150 '{{%s}}' % $._config.per_instance_label 151 ), 152 ) 153 .addPanel( 154 $.containerCPUUsagePanel('CPU', 'ruler'), 155 ) 156 .addPanel( 157 $.containerMemoryWorkingSetPanel('Memory (workingset)', 'ruler'), 158 ) 159 .addPanel( 160 $.goHeapInUsePanel('Memory (go heap inuse)', 'ruler'), 161 ) 162 ), 163 }, 164 }