Break out device in disk IO rules/dashboard

Signed-off-by: beorn7 <beorn@grafana.com>
This commit is contained in:
beorn7 2019-07-18 15:59:35 +02:00
parent b8c4b0cb29
commit e01d9f9e78
2 changed files with 14 additions and 22 deletions

View File

@ -60,11 +60,11 @@ local g = import 'grafana-builder/grafana.libsonnet';
// 1 second per second doing I/O, normalize by metric cardinality for stacked charts. // 1 second per second doing I/O, normalize by metric cardinality for stacked charts.
g.queryPanel(||| g.queryPanel(|||
( (
instance:node_disk_io_time_seconds:rate1m{%(nodeExporterSelector)s} instance_device:node_disk_io_time_seconds:rate1m{%(nodeExporterSelector)s}
/ ignoring (instance) group_left / ignoring (instance, device) group_left
count without (instance) (instance:node_disk_io_time_seconds:rate1m{%(nodeExporterSelector)s}) count without (instance, device) (instance_device:node_disk_io_time_seconds:rate1m{%(nodeExporterSelector)s})
) )
||| % $._config, '{{instance}}', legendLink) + ||| % $._config, '{{instance}} {{device}}', legendLink) +
g.stack + g.stack +
{ yaxes: g.yaxes({ format: 'percentunit', max: 1 }) }, { yaxes: g.yaxes({ format: 'percentunit', max: 1 }) },
) )
@ -72,11 +72,11 @@ local g = import 'grafana-builder/grafana.libsonnet';
g.panel('Disk IO Saturation') + g.panel('Disk IO Saturation') +
g.queryPanel(||| g.queryPanel(|||
( (
instance:node_disk_io_time_weighted_seconds:rate1m{%(nodeExporterSelector)s} instance_device:node_disk_io_time_weighted_seconds:rate1m{%(nodeExporterSelector)s}
/ ignoring (instance) group_left / ignoring (instance, device) group_left
count without (instance) (instance:node_disk_io_time_weighted_seconds:rate1m{%(nodeExporterSelector)s}) count without (instance, device) (instance_device:node_disk_io_time_weighted_seconds:rate1m{%(nodeExporterSelector)s})
) )
||| % $._config, '{{instance}}', legendLink) + ||| % $._config, '{{instance}} {{device}}', legendLink) +
g.stack + g.stack +
{ yaxes: g.yaxes({ format: 'percentunit', max: 1 }) }, { yaxes: g.yaxes({ format: 'percentunit', max: 1 }) },
) )
@ -167,12 +167,12 @@ local g = import 'grafana-builder/grafana.libsonnet';
g.row('Disk') g.row('Disk')
.addPanel( .addPanel(
g.panel('Disk IO Utilisation') + g.panel('Disk IO Utilisation') +
g.queryPanel('instance:node_disk_io_time_seconds:rate1m{%(nodeExporterSelector)s, instance="$instance"}' % $._config, 'Utilisation') + g.queryPanel('instance_device:node_disk_io_time_seconds:rate1m{%(nodeExporterSelector)s, instance="$instance"}' % $._config, 'Utilisation {{device}}') +
{ yaxes: g.yaxes('percentunit') }, { yaxes: g.yaxes('percentunit') },
) )
.addPanel( .addPanel(
g.panel('Disk IO Saturation') + g.panel('Disk IO Saturation') +
g.queryPanel('instance:node_disk_io_time_weighted_seconds:rate1m{%(nodeExporterSelector)s, instance="$instance"}' % $._config, 'Saturation') + g.queryPanel('instance_device:node_disk_io_time_weighted_seconds:rate1m{%(nodeExporterSelector)s, instance="$instance"}' % $._config, 'Saturation {{device}}') +
{ yaxes: g.yaxes('percentunit') }, { yaxes: g.yaxes('percentunit') },
) )
) )

View File

@ -61,24 +61,16 @@
}, },
{ {
// Disk utilisation (seconds spent, 1 second rate) // Disk utilisation (seconds spent, 1 second rate)
// TODO: This should probably not aggregate over all devices but record: 'instance_device:node_disk_io_time_seconds:rate1m',
// keep them separate.
record: 'instance:node_disk_io_time_seconds:rate1m',
expr: ||| expr: |||
sum without (device) ( rate(node_disk_io_time_seconds_total{%(nodeExporterSelector)s, %(diskDeviceSelector)s}[1m])
rate(node_disk_io_time_seconds_total{%(nodeExporterSelector)s, %(diskDeviceSelector)s}[1m])
)
||| % $._config, ||| % $._config,
}, },
{ {
// Disk saturation (weighted seconds spent, 1 second rate) // Disk saturation (weighted seconds spent, 1 second rate)
// TODO: This should probably not aggregate over all devices but record: 'instance_device:node_disk_io_time_weighted_seconds:rate1m',
// keep them separate.
record: 'instance:node_disk_io_time_weighted_seconds:rate1m',
expr: ||| expr: |||
sum without (device) ( rate(node_disk_io_time_weighted_seconds_total{%(nodeExporterSelector)s, %(diskDeviceSelector)s}[1m])
rate(node_disk_io_time_weighted_seconds_total{%(nodeExporterSelector)s, %(diskDeviceSelector)s}[1m])
)
||| % $._config, ||| % $._config,
}, },
// TODO: For the following rules, consider configurable filtering to exclude more network // TODO: For the following rules, consider configurable filtering to exclude more network