diff --git a/jsonnet/mimir-mixin/dashboards/alertmanager-resources.libsonnet b/jsonnet/mimir-mixin/dashboards/alertmanager-resources.libsonnet index 4c67c1615a0..8a719d52f25 100644 --- a/jsonnet/mimir-mixin/dashboards/alertmanager-resources.libsonnet +++ b/jsonnet/mimir-mixin/dashboards/alertmanager-resources.libsonnet @@ -52,30 +52,16 @@ local utils = import 'mixin-utils/utils.libsonnet'; .addRow( $.row('Disk') .addPanel( - $.panel('Writes') + - $.queryPanel( - 'sum by(%s, %s, device) (rate(node_disk_written_bytes_total[$__rate_interval])) + %s' % [$._config.per_node_label, $._config.per_instance_label, $.filterNodeDiskContainer('alertmanager')], - '{{%s}} - {{device}}' % $._config.per_instance_label - ) + - $.stack + - { yaxes: $.yaxes('Bps') }, + $.containerDiskWritesPanel('Writes', 'alertmanager'), ) .addPanel( - $.panel('Reads') + - $.queryPanel( - 'sum by(%s, %s, device) (rate(node_disk_read_bytes_total[$__rate_interval])) + %s' % [$._config.per_node_label, $._config.per_instance_label, $.filterNodeDiskContainer('alertmanager')], - '{{%s}} - {{device}}' % $._config.per_instance_label - ) + - $.stack + - { yaxes: $.yaxes('Bps') }, + $.containerDiskReadsPanel('Reads', 'alertmanager'), ) ) .addRow( $.row('') .addPanel( - $.panel('Disk Space Utilization') + - $.queryPanel('max by(persistentvolumeclaim) (kubelet_volume_stats_used_bytes{%s} / kubelet_volume_stats_capacity_bytes{%s}) and count by(persistentvolumeclaim) (kube_persistentvolumeclaim_labels{%s,label_name="alertmanager"})' % [$.namespaceMatcher(), $.namespaceMatcher(), $.namespaceMatcher()], '{{persistentvolumeclaim}}') + - { yaxes: $.yaxes('percentunit') }, + $.containerDiskSpaceUtilization('Disk Space Utilization', 'alertmanager'), ) ), } diff --git a/jsonnet/mimir-mixin/dashboards/compactor-resources.libsonnet b/jsonnet/mimir-mixin/dashboards/compactor-resources.libsonnet index 79a7ac03fa8..82a6bce4f07 100644 --- a/jsonnet/mimir-mixin/dashboards/compactor-resources.libsonnet +++ b/jsonnet/mimir-mixin/dashboards/compactor-resources.libsonnet @@ -28,27 +28,13 @@ local utils = import 'mixin-utils/utils.libsonnet'; .addRow( $.row('Disk') .addPanel( - $.panel('Disk Writes') + - $.queryPanel( - 'sum by(%s, %s, device) (rate(node_disk_written_bytes_total[$__rate_interval])) + %s' % [$._config.per_node_label, $._config.per_instance_label, $.filterNodeDiskContainer('compactor')], - '{{%s}} - {{device}}' % $._config.per_instance_label - ) + - $.stack + - { yaxes: $.yaxes('Bps') }, - ) - .addPanel( - $.panel('Disk Reads') + - $.queryPanel( - 'sum by(%s, %s, device) (rate(node_disk_read_bytes_total[$__rate_interval])) + %s' % [$._config.per_node_label, $._config.per_instance_label, $.filterNodeDiskContainer('compactor')], - '{{%s}} - {{device}}' % $._config.per_instance_label - ) + - $.stack + - { yaxes: $.yaxes('Bps') }, - ) - .addPanel( - $.panel('Disk Space Utilization') + - $.queryPanel('max by(persistentvolumeclaim) (kubelet_volume_stats_used_bytes{%s} / kubelet_volume_stats_capacity_bytes{%s}) and count by(persistentvolumeclaim) (kube_persistentvolumeclaim_labels{%s,label_name="compactor"})' % [$.namespaceMatcher(), $.namespaceMatcher(), $.namespaceMatcher()], '{{persistentvolumeclaim}}') + - { yaxes: $.yaxes('percentunit') }, + $.containerDiskWritesPanel('Disk Writes', 'compactor'), + ) + .addPanel( + $.containerDiskReadsPanel('Disk Reads', 'compactor'), + ) + .addPanel( + $.containerDiskSpaceUtilization('Disk Space Utilization', 'compactor'), ) ) + { templating+: { diff --git a/jsonnet/mimir-mixin/dashboards/dashboard-utils.libsonnet b/jsonnet/mimir-mixin/dashboards/dashboard-utils.libsonnet index c54ae6590a5..f8e8cfbe564 100644 --- a/jsonnet/mimir-mixin/dashboards/dashboard-utils.libsonnet +++ b/jsonnet/mimir-mixin/dashboards/dashboard-utils.libsonnet @@ -198,6 +198,73 @@ local utils = import 'mixin-utils/utils.libsonnet'; containerNetworkTransmitBytesPanel(instanceName):: $.containerNetworkPanel('Transmit Bandwidth', 'container_network_transmit_bytes_total', instanceName), + containerDiskWritesPanel(title, containerName):: + $.panel(title) + + $.queryPanel( + ||| + sum by(%s, %s, device) ( + rate( + node_disk_written_bytes_total[$__rate_interval] + ) + ) + + + %s + ||| % [ + $._config.per_node_label, + $._config.per_instance_label, + $.filterNodeDiskContainer(containerName), + ], + '{{%s}} - {{device}}' % $._config.per_instance_label + ) + + $.stack + + { yaxes: $.yaxes('Bps') }, + + containerDiskReadsPanel(title, containerName):: + $.panel(title) + + $.queryPanel( + ||| + sum by(%s, %s, device) ( + rate( + node_disk_read_bytes_total[$__rate_interval] + ) + ) + %s + ||| % [ + $._config.per_node_label, + $._config.per_instance_label, + $.filterNodeDiskContainer(containerName), + ], + '{{%s}} - {{device}}' % $._config.per_instance_label + ) + + $.stack + + { yaxes: $.yaxes('Bps') }, + + containerDiskSpaceUtilization(title, containerName):: + $.panel(title) + + $.queryPanel( + ||| + max by(persistentvolumeclaim) ( + kubelet_volume_stats_used_bytes{%(namespace)s} / + kubelet_volume_stats_capacity_bytes{%(namespace)s} + ) + and + count by(persistentvolumeclaim) ( + kube_persistentvolumeclaim_labels{ + %(namespace)s, + %(label)s + } + ) + ||| % { + namespace: $.namespaceMatcher(), + label: $.containerLabelMatcher(containerName), + }, '{{persistentvolumeclaim}}' + ) + + { yaxes: $.yaxes('percentunit') }, + + containerLabelMatcher(containerName):: + if containerName == 'ingester' + then 'label_name=~"ingester.*"' + else 'label_name="%s"' % containerName, + goHeapInUsePanel(title, jobName):: $.panel(title) + $.queryPanel( diff --git a/jsonnet/mimir-mixin/dashboards/reads-resources.libsonnet b/jsonnet/mimir-mixin/dashboards/reads-resources.libsonnet index 697a7fd49da..a1b36272a38 100644 --- a/jsonnet/mimir-mixin/dashboards/reads-resources.libsonnet +++ b/jsonnet/mimir-mixin/dashboards/reads-resources.libsonnet @@ -103,27 +103,13 @@ local utils = import 'mixin-utils/utils.libsonnet'; std.member($._config.storage_engine, 'blocks'), $.row('') .addPanel( - $.panel('Disk Writes') + - $.queryPanel( - 'sum by(%s, %s, device) (rate(node_disk_written_bytes_total[$__rate_interval])) + %s' % [$._config.per_node_label, $._config.per_instance_label, $.filterNodeDiskContainer('store-gateway')], - '{{%s}} - {{device}}' % $._config.per_instance_label - ) + - $.stack + - { yaxes: $.yaxes('Bps') }, + $.containerDiskWritesPanel('Disk Writes', 'store-gateway'), ) .addPanel( - $.panel('Disk Reads') + - $.queryPanel( - 'sum by(%s, %s, device) (rate(node_disk_read_bytes_total[$__rate_interval])) + %s' % [$._config.per_node_label, $._config.per_instance_label, $.filterNodeDiskContainer('store-gateway')], - '{{%s}} - {{device}}' % $._config.per_instance_label - ) + - $.stack + - { yaxes: $.yaxes('Bps') }, + $.containerDiskReadsPanel('Disk Reads', 'store-gateway'), ) .addPanel( - $.panel('Disk Space Utilization') + - $.queryPanel('max by(persistentvolumeclaim) (kubelet_volume_stats_used_bytes{%s} / kubelet_volume_stats_capacity_bytes{%s}) and count by(persistentvolumeclaim) (kube_persistentvolumeclaim_labels{%s,label_name="store-gateway"})' % [$.namespaceMatcher(), $.namespaceMatcher(), $.namespaceMatcher()], '{{persistentvolumeclaim}}') + - { yaxes: $.yaxes('percentunit') }, + $.containerDiskSpaceUtilization('Disk Space Utilization', 'store-gateway'), ) ) + { templating+: { diff --git a/jsonnet/mimir-mixin/dashboards/writes-resources.libsonnet b/jsonnet/mimir-mixin/dashboards/writes-resources.libsonnet index f833e406629..85d7f4c48b5 100644 --- a/jsonnet/mimir-mixin/dashboards/writes-resources.libsonnet +++ b/jsonnet/mimir-mixin/dashboards/writes-resources.libsonnet @@ -56,27 +56,13 @@ local utils = import 'mixin-utils/utils.libsonnet'; .addRow( $.row('') .addPanel( - $.panel('Disk Writes') + - $.queryPanel( - 'sum by(%s, %s, device) (rate(node_disk_written_bytes_total[$__rate_interval])) + %s' % [$._config.per_node_label, $._config.per_instance_label, $.filterNodeDiskContainer('ingester')], - '{{%s}} - {{device}}' % $._config.per_instance_label - ) + - $.stack + - { yaxes: $.yaxes('Bps') }, + $.containerDiskWritesPanel('Disk Writes', 'ingester') ) .addPanel( - $.panel('Disk Reads') + - $.queryPanel( - 'sum by(%s, %s, device) (rate(node_disk_read_bytes_total[$__rate_interval])) + %s' % [$._config.per_node_label, $._config.per_instance_label, $.filterNodeDiskContainer('ingester')], - '{{%s}} - {{device}}' % $._config.per_instance_label - ) + - $.stack + - { yaxes: $.yaxes('Bps') }, + $.containerDiskReadsPanel('Disk Reads', 'ingester') ) .addPanel( - $.panel('Disk Space Utilization') + - $.queryPanel('max by(persistentvolumeclaim) (kubelet_volume_stats_used_bytes{%s} / kubelet_volume_stats_capacity_bytes{%s}) and count by(persistentvolumeclaim) (kube_persistentvolumeclaim_labels{%s,label_name=~"ingester.*"})' % [$.namespaceMatcher(), $.namespaceMatcher(), $.namespaceMatcher()], '{{persistentvolumeclaim}}') + - { yaxes: $.yaxes('percentunit') }, + $.containerDiskSpaceUtilization('Disk Space Utilization', 'ingester'), ) ) + {