summaryrefslogtreecommitdiffstats
path: root/monitoring
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-23 16:45:13 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-23 16:45:13 +0000
commit389020e14594e4894e28d1eb9103c210b142509e (patch)
tree2ba734cdd7a243f46dda7c3d0cc88c2293d9699f /monitoring
parentAdding upstream version 18.2.2. (diff)
downloadceph-upstream.tar.xz
ceph-upstream.zip
Adding upstream version 18.2.3.upstream/18.2.3upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'monitoring')
-rw-r--r--monitoring/ceph-mixin/dashboards/host.libsonnet75
-rw-r--r--monitoring/ceph-mixin/dashboards/osd.libsonnet285
-rw-r--r--monitoring/ceph-mixin/dashboards/piechart_panel.libsonnet73
-rw-r--r--monitoring/ceph-mixin/dashboards/pool.libsonnet287
-rw-r--r--monitoring/ceph-mixin/dashboards/rbd.libsonnet228
-rw-r--r--monitoring/ceph-mixin/dashboards/rgw.libsonnet67
-rw-r--r--monitoring/ceph-mixin/dashboards/utils.libsonnet83
-rw-r--r--monitoring/ceph-mixin/dashboards_out/ceph-cluster.json145
-rw-r--r--monitoring/ceph-mixin/dashboards_out/cephfs-overview.json22
-rw-r--r--monitoring/ceph-mixin/dashboards_out/host-details.json264
-rw-r--r--monitoring/ceph-mixin/dashboards_out/hosts-overview.json22
-rw-r--r--monitoring/ceph-mixin/dashboards_out/osd-device-details.json89
-rw-r--r--monitoring/ceph-mixin/dashboards_out/osds-overview.json725
-rw-r--r--monitoring/ceph-mixin/dashboards_out/pool-detail.json44
-rw-r--r--monitoring/ceph-mixin/dashboards_out/pool-overview.json891
-rw-r--r--monitoring/ceph-mixin/dashboards_out/radosgw-detail.json171
-rw-r--r--monitoring/ceph-mixin/dashboards_out/radosgw-overview.json130
-rw-r--r--monitoring/ceph-mixin/dashboards_out/radosgw-sync-overview.json44
-rw-r--r--monitoring/ceph-mixin/dashboards_out/rbd-details.json39
-rw-r--r--monitoring/ceph-mixin/dashboards_out/rbd-overview.json636
-rw-r--r--monitoring/ceph-mixin/prometheus_alerts.libsonnet65
-rw-r--r--monitoring/ceph-mixin/prometheus_alerts.yml62
-rw-r--r--monitoring/ceph-mixin/tests_alerts/test_alerts.yml144
-rw-r--r--monitoring/snmp/README.md1
24 files changed, 3472 insertions, 1120 deletions
diff --git a/monitoring/ceph-mixin/dashboards/host.libsonnet b/monitoring/ceph-mixin/dashboards/host.libsonnet
index 4fd35c3ed..674f678a1 100644
--- a/monitoring/ceph-mixin/dashboards/host.libsonnet
+++ b/monitoring/ceph-mixin/dashboards/host.libsonnet
@@ -719,19 +719,70 @@ local g = import 'grafonnet/grafana.libsonnet';
11,
9
),
- $.addTableSchema(
- '$datasource',
- 'This table shows the 10 hosts with the highest number of slow ops',
- { col: 2, desc: true },
- [
- $.overviewStyle('Instance', 'instance', 'string', 'short'),
- $.overviewStyle('Slow Ops', 'Value', 'number', 'none'),
- $.overviewStyle('', '/.*/', 'hidden', 'short'),
+
+ $.addTableExtended(
+ datasource='${datasource}',
+ title='Top Slow Ops per Host',
+ gridPosition={ h: 8, w: 6, x: 0, y: 30 },
+ options={
+ footer: {
+ fields: '',
+ reducer: ['sum'],
+ countRows: false,
+ enablePagination: false,
+ show: false,
+ },
+ frameIndex: 1,
+ showHeader: true,
+ },
+ custom={ align: 'null', cellOptions: { type: 'auto' }, filterable: true, inspect: false },
+ thresholds={
+ mode: 'absolute',
+ steps: [
+ { color: 'green', value: null },
+ { color: 'red', value: 80 },
+ ],
+ },
+ overrides=[
+ {
+ matcher: { id: 'byName', options: 'instance' },
+ properties: [
+ { id: 'displayName', value: 'Instance' },
+ { id: 'unit', value: 'short' },
+ { id: 'decimals', value: 2 },
+ { id: 'custom.align', value: null },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'Value' },
+ properties: [
+ { id: 'displayName', value: 'Slow Ops' },
+ { id: 'unit', value: 'none' },
+ { id: 'decimals', value: 2 },
+ { id: 'custom.align', value: null },
+ ],
+ },
],
- 'Top Slow Ops per Host',
- 'table'
+ pluginVersion='10.4.0'
)
- .addTarget(
+ .addTransformations([
+ {
+ id: 'merge',
+ options: { reducers: [] },
+ }
+ {
+ id: 'organize',
+ options: {
+ excludeByName: {
+ Time: true,
+ cluster: true,
+ },
+ indexByName: {},
+ renameByName: {},
+ includeByName: {},
+ },
+ },
+ ]).addTarget(
$.addTargetSchema(
|||
topk(10,
@@ -743,6 +794,6 @@ local g = import 'grafonnet/grafana.libsonnet';
1,
true
)
- ) + { gridPos: { x: 0, y: 40, w: 4, h: 8 } },
+ ),
]),
}
diff --git a/monitoring/ceph-mixin/dashboards/osd.libsonnet b/monitoring/ceph-mixin/dashboards/osd.libsonnet
index 0ea43c96f..ca25b0630 100644
--- a/monitoring/ceph-mixin/dashboards/osd.libsonnet
+++ b/monitoring/ceph-mixin/dashboards/osd.libsonnet
@@ -1,5 +1,6 @@
local g = import 'grafonnet/grafana.libsonnet';
+
(import 'utils.libsonnet') {
'osds-overview.json':
$.dashboardSchema(
@@ -89,19 +90,70 @@ local g = import 'grafonnet/grafana.libsonnet';
),
],
),
- $.addTableSchema(
- '$datasource',
- "This table shows the osd's that are delivering the 10 highest read latencies within the cluster",
- { col: 2, desc: true },
- [
- $.overviewStyle('OSD ID', 'ceph_daemon', 'string', 'short'),
- $.overviewStyle('Latency (ms)', 'Value', 'number', 'none'),
- $.overviewStyle('', '/.*/', 'hidden', 'short'),
+
+ $.addTableExtended(
+ datasource='${datasource}',
+ title='Highest READ Latencies',
+ gridPosition={ h: 8, w: 4, x: 8, y: 0 },
+ options={
+ footer: {
+ fields: '',
+ reducer: ['sum'],
+ countRows: false,
+ enablePagination: false,
+ show: false,
+ },
+ frameIndex: 1,
+ showHeader: true,
+ },
+ custom={ align: 'null', cellOptions: { type: 'auto' }, filterable: true, inspect: false },
+ thresholds={
+ mode: 'absolute',
+ steps: [
+ { color: 'green', value: null },
+ { color: 'red', value: 80 },
+ ],
+ },
+ overrides=[
+ {
+ matcher: { id: 'byName', options: 'ceph_daemon' },
+ properties: [
+ { id: 'displayName', value: 'OSD ID' },
+ { id: 'unit', value: 'short' },
+ { id: 'decimals', value: 2 },
+ { id: 'custom.align', value: null },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'Value' },
+ properties: [
+ { id: 'displayName', value: 'Latency (ms)' },
+ { id: 'unit', value: 'none' },
+ { id: 'decimals', value: 2 },
+ { id: 'custom.align', value: null },
+ ],
+ },
],
- 'Highest READ Latencies',
- 'table'
+ pluginVersion='10.4.0'
)
- .addTarget(
+ .addTransformations([
+ {
+ id: 'merge',
+ options: { reducers: [] },
+ },
+ {
+ id: 'organize',
+ options: {
+ excludeByName: {
+ Time: true,
+ cluster: true,
+ },
+ indexByName: {},
+ renameByName: {},
+ includeByName: {},
+ },
+ },
+ ]).addTarget(
$.addTargetSchema(
|||
topk(10,
@@ -119,7 +171,8 @@ local g = import 'grafonnet/grafana.libsonnet';
1,
true
)
- ) + { gridPos: { x: 8, y: 0, w: 4, h: 8 } },
+ ),
+
$.simpleGraphPanel(
{
'@95%ile write': '#e0752d',
@@ -164,21 +217,80 @@ local g = import 'grafonnet/grafana.libsonnet';
),
],
),
- $.addTableSchema(
- '$datasource',
- "This table shows the osd's that are delivering the 10 highest write latencies within the cluster",
- { col: 2, desc: true },
- [
- $.overviewStyle(
- 'OSD ID', 'ceph_daemon', 'string', 'short'
- ),
- $.overviewStyle('Latency (ms)', 'Value', 'number', 'none'),
- $.overviewStyle('', '/.*/', 'hidden', 'short'),
+
+ $.addTableExtended(
+ datasource='${datasource}',
+ title='Highest WRITE Latencies',
+ description="This table shows the osd's that are delivering the 10 highest write latencies within the cluster",
+ gridPosition={ h: 8, w: 4, x: 20, y: 0 },
+ options={
+ footer: {
+ fields: '',
+ reducer: ['sum'],
+ countRows: false,
+ enablePagination: false,
+ show: false,
+ },
+ frameIndex: 1,
+ showHeader: true,
+ },
+ custom={ align: 'null', cellOptions: { type: 'auto' }, filterable: true, inspect: false },
+ thresholds={
+ mode: 'absolute',
+ steps: [
+ { color: 'green', value: null },
+ { color: 'red', value: 80 },
+ ],
+ },
+ overrides=[
+ {
+ matcher: { id: 'byName', options: 'ceph_daemon' },
+ properties: [
+ { id: 'displayName', value: 'OSD ID' },
+ { id: 'unit', value: 'short' },
+ { id: 'decimals', value: 2 },
+ { id: 'custom.align', value: null },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'Value' },
+ properties: [
+ { id: 'displayName', value: 'Latency (ms)' },
+ { id: 'unit', value: 'none' },
+ { id: 'decimals', value: 2 },
+ { id: 'custom.align', value: null },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'Value' },
+ properties: [
+ { id: 'mappings', value: [{ type: 'value', options: { NaN: { text: '0.00', index: 0 } } }] },
+ { id: 'unit', value: 'none' },
+ { id: 'decimals', value: 2 },
+ { id: 'custom.align', value: null },
+ ],
+ },
],
- 'Highest WRITE Latencies',
- 'table'
+ pluginVersion='10.4.0'
)
- .addTarget(
+ .addTransformations([
+ {
+ id: 'merge',
+ options: { reducers: [] },
+ },
+ {
+ id: 'organize',
+ options: {
+ excludeByName: {
+ Time: true,
+ cluster: true,
+ },
+ indexByName: {},
+ renameByName: {},
+ includeByName: {},
+ },
+ },
+ ]).addTarget(
$.addTargetSchema(
|||
topk(10,
@@ -194,29 +306,20 @@ local g = import 'grafonnet/grafana.libsonnet';
1,
true
)
- ) + { gridPos: { x: 20, y: 0, w: 4, h: 8 } },
- $.simplePieChart(
- {}, '', 'OSD Types Summary'
- )
+ ),
+
+ $.pieChartPanel('OSD Types Summary', '', '$datasource', { x: 0, y: 8, w: 4, h: 8 }, 'table', 'bottom', true, ['percent'], { mode: 'single', sort: 'none' }, 'pie', ['percent', 'value'], 'palette-classic')
.addTarget(
$.addTargetSchema('count by (device_class) (ceph_osd_metadata{%(matchers)s})' % $.matchers(), '{{device_class}}')
- ) + { gridPos: { x: 0, y: 8, w: 4, h: 8 } },
- $.simplePieChart(
- { 'Non-Encrypted': '#E5AC0E' }, '', 'OSD Objectstore Types'
- )
- .addTarget(
- $.addTargetSchema(
- 'count(ceph_bluefs_wal_total_bytes{%(matchers)s})' % $.matchers(), 'bluestore', 'time_series', 2
- )
- )
- .addTarget(
- $.addTargetSchema(
- 'absent(ceph_bluefs_wal_total_bytes{%(matchers)s}) * count(ceph_osd_metadata{%(matchers)s})' % $.matchers(), 'filestore', 'time_series', 2
- )
- ) + { gridPos: { x: 4, y: 8, w: 4, h: 8 } },
- $.simplePieChart(
- {}, 'The pie chart shows the various OSD sizes used within the cluster', 'OSD Size Summary'
- )
+ ),
+ $.pieChartPanel('OSD Objectstore Types', '', '$datasource', { x: 4, y: 8, w: 4, h: 8 }, 'table', 'bottom', true, ['percent'], { mode: 'single', sort: 'none' }, 'pie', ['percent', 'value'], 'palette-classic')
+ .addTarget($.addTargetSchema(
+ 'count(ceph_bluefs_wal_total_bytes{%(matchers)s})' % $.matchers(), 'bluestore', 'time_series', 2
+ ))
+ .addTarget($.addTargetSchema(
+ 'absent(ceph_bluefs_wal_total_bytes{job=~"$job"}) * count(ceph_osd_metadata{job=~"$job"})' % $.matchers(), 'filestore', 'time_series', 2
+ )),
+ $.pieChartPanel('OSD Size Summary', 'The pie chart shows the various OSD sizes used within the cluster', '$datasource', { x: 8, y: 8, w: 4, h: 8 }, 'table', 'bottom', true, ['percent'], { mode: 'single', sort: 'none' }, 'pie', ['percent', 'value'], 'palette-classic')
.addTarget($.addTargetSchema(
'count(ceph_osd_stat_bytes{%(matchers)s} < 1099511627776)' % $.matchers(), '<1TB', 'time_series', 2
))
@@ -243,7 +346,7 @@ local g = import 'grafonnet/grafana.libsonnet';
))
.addTarget($.addTargetSchema(
'count(ceph_osd_stat_bytes{%(matchers)s} >= 13194139533312)' % $.matchers(), '<12TB+', 'time_series', 2
- )) + { gridPos: { x: 8, y: 8, w: 4, h: 8 } },
+ )),
g.graphPanel.new(bars=true,
datasource='$datasource',
title='Distribution of PGs per OSD',
@@ -257,7 +360,7 @@ local g = import 'grafonnet/grafana.libsonnet';
nullPointMode='null')
.addTarget($.addTargetSchema(
'ceph_osd_numpg{%(matchers)s}' % $.matchers(), 'PGs per OSD', 'time_series', 1, true
- )) + { gridPos: { x: 12, y: 8, w: 8, h: 8 } },
+ )) + { type: 'timeseries' } + { fieldConfig: { defaults: { unit: 'short', custom: { fillOpacity: 8, showPoints: 'never' } } } } + { gridPos: { x: 12, y: 8, w: 8, h: 8 } },
$.gaugeSingleStatPanel(
'percentunit',
'OSD onode Hits Ratio',
@@ -300,19 +403,75 @@ local g = import 'grafonnet/grafana.libsonnet';
.addTargets([$.addTargetSchema(
'round(sum(rate(ceph_pool_wr{%(matchers)s}[$__rate_interval])))' % $.matchers(), 'Writes'
)]),
- $.addTableSchema(
- '$datasource',
- 'This table shows the 10 OSDs with the highest number of slow ops',
- { col: 2, desc: true },
- [
- $.overviewStyle('OSD ID', 'ceph_daemon', 'string', 'short'),
- $.overviewStyle('Slow Ops', 'Value', 'number', 'none'),
- $.overviewStyle('', '/.*/', 'hidden', 'short'),
+
+ $.addTableExtended(
+ datasource='${datasource}',
+ title='Top Slow Ops',
+ description='This table shows the 10 OSDs with the highest number of slow ops',
+ gridPosition={ h: 8, w: 5, x: 0, y: 25 },
+ options={
+ footer: {
+ fields: '',
+ reducer: ['sum'],
+ countRows: false,
+ enablePagination: false,
+ show: false,
+ },
+ frameIndex: 1,
+ showHeader: true,
+ },
+ custom={ align: 'null', cellOptions: { type: 'auto' }, filterable: true, inspect: false },
+ thresholds={
+ mode: 'absolute',
+ steps: [
+ { color: 'green', value: null },
+ { color: 'red', value: 80 },
+ ],
+ },
+ overrides=[
+ {
+ matcher: { id: 'byName', options: 'ceph_daemon' },
+ properties: [
+ { id: 'displayName', value: 'OSD ID' },
+ { id: 'unit', value: 'short' },
+ { id: 'decimals', value: 2 },
+ { id: 'custom.align', value: null },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'Value' },
+ properties: [
+ { id: 'displayName', value: 'Slow Ops' },
+ { id: 'unit', value: 'none' },
+ { id: 'decimals', value: 2 },
+ { id: 'custom.align', value: null },
+ ],
+ },
],
- 'Top Slow Ops',
- 'table'
+ pluginVersion='10.4.0'
)
- .addTarget(
+ .addTransformations([
+ {
+ id: 'merge',
+ options: { reducers: [] },
+ },
+ {
+ id: 'organize',
+ options: {
+ excludeByName: {
+ Time: true,
+ __name__: true,
+ instance: true,
+ job: true,
+ type: true,
+ cluster: true,
+ },
+ indexByName: {},
+ renameByName: {},
+ includeByName: {},
+ },
+ },
+ ]).addTarget(
$.addTargetSchema(
|||
topk(10,
@@ -324,7 +483,7 @@ local g = import 'grafonnet/grafana.libsonnet';
1,
true
)
- ) + { gridPos: { x: 0, y: 20, w: 4, h: 8 } },
+ ),
]),
'osd-device-details.json':
local OsdDeviceDetailsPanel(title,
@@ -342,7 +501,7 @@ local g = import 'grafonnet/grafana.libsonnet';
$.graphPanelSchema({},
title,
description,
- 'null',
+ 'null as zero',
false,
formatY1,
'short',
@@ -357,7 +516,7 @@ local g = import 'grafonnet/grafana.libsonnet';
legendFormat1),
$.addTargetSchema(expr2, legendFormat2),
]
- ) + { gridPos: { x: x, y: y, w: w, h: h } };
+ ) + { type: 'timeseries' } + { fieldConfig: { defaults: { unit: formatY1, custom: { fillOpacity: 8, showPoints: 'never' } } } } + { gridPos: { x: x, y: y, w: w, h: h } };
$.dashboardSchema(
'OSD device details',
@@ -613,6 +772,6 @@ local g = import 'grafonnet/grafana.libsonnet';
)
||| % $.matchers(),
'{{device}} on {{instance}}'
- )) + { gridPos: { x: 18, y: 11, w: 6, h: 9 } },
+ )) + { type: 'timeseries' } + { fieldConfig: { defaults: { unit: 'percentunit', custom: { fillOpacity: 8, showPoints: 'never' } } } } + { gridPos: { x: 18, y: 11, w: 6, h: 9 } },
]),
}
diff --git a/monitoring/ceph-mixin/dashboards/piechart_panel.libsonnet b/monitoring/ceph-mixin/dashboards/piechart_panel.libsonnet
new file mode 100644
index 000000000..68ff71954
--- /dev/null
+++ b/monitoring/ceph-mixin/dashboards/piechart_panel.libsonnet
@@ -0,0 +1,73 @@
+{
+ /**
+ * Creates a pie chart panel.
+ *
+ * @name pieChartPanel.new
+ *
+ * @param title The title of the pie chart panel.
+ * @param description (default `''`) Description of the panel
+ * @param datasource (optional) Datasource
+ * @param pieType (default `'pie'`) Type of pie chart (one of pie or donut)
+ *
+ * @method addTarget(target) Adds a target object.
+ */
+ new(
+ title,
+ description='',
+ datasource=null,
+ gridPos={},
+ displayMode='table',
+ placement='bottom',
+ showLegend=true,
+ displayLabels=[],
+ tooltip={},
+ pieType='pie',
+ values=[],
+ colorMode='auto',
+ overrides=[],
+ reduceOptions={},
+ ):: {
+ type: 'piechart',
+ [if description != null then 'description']: description,
+ title: title,
+ gridPos: gridPos,
+ datasource: datasource,
+ options: {
+ legend: {
+ calcs: [],
+ values: values,
+ displayMode: displayMode,
+ placement: placement,
+ showLegend: showLegend,
+ },
+ pieType: pieType,
+ tooltip: tooltip,
+ displayLabels: displayLabels,
+ reduceOptions: reduceOptions,
+ },
+ fieldConfig: {
+ defaults: {
+ color: { mode: colorMode },
+ mappings: [],
+ custom: {
+ hideFrom: {
+ legend: false,
+ tooltip: false,
+ viz: false,
+ },
+ },
+ },
+ overrides: overrides,
+ },
+ targets: [
+ ],
+ _nextTarget:: 0,
+ addTarget(target):: self {
+ // automatically ref id in added targets.
+ local nextTarget = super._nextTarget,
+ _nextTarget: nextTarget + 1,
+ targets+: [target { refId: std.char(std.codepoint('A') + nextTarget) }],
+ },
+ addTargets(targets):: std.foldl(function(p, t) p.addTarget(t), targets, self),
+ },
+}
diff --git a/monitoring/ceph-mixin/dashboards/pool.libsonnet b/monitoring/ceph-mixin/dashboards/pool.libsonnet
index 6444335d9..87839963f 100644
--- a/monitoring/ceph-mixin/dashboards/pool.libsonnet
+++ b/monitoring/ceph-mixin/dashboards/pool.libsonnet
@@ -158,36 +158,264 @@ local g = import 'grafonnet/grafana.libsonnet';
3,
3
),
- $.addTableSchema(
- '$datasource',
- '',
- { col: 5, desc: true },
- [
- $.overviewStyle('', 'Time', 'hidden', 'short'),
- $.overviewStyle('', 'instance', 'hidden', 'short'),
- $.overviewStyle('', 'job', 'hidden', 'short'),
- $.overviewStyle('Pool Name', 'name', 'string', 'short'),
- $.overviewStyle('Pool ID', 'pool_id', 'hidden', 'none'),
- $.overviewStyle('Compression Factor', 'Value #A', 'number', 'none'),
- $.overviewStyle('% Used', 'Value #D', 'number', 'percentunit', 'value', ['70', '85']),
- $.overviewStyle('Usable Free', 'Value #B', 'number', 'bytes'),
- $.overviewStyle('Compression Eligibility', 'Value #C', 'number', 'percent'),
- $.overviewStyle('Compression Savings', 'Value #E', 'number', 'bytes'),
- $.overviewStyle('Growth (5d)', 'Value #F', 'number', 'bytes', 'value', ['0', '0']),
- $.overviewStyle('IOPS', 'Value #G', 'number', 'none'),
- $.overviewStyle('Bandwidth', 'Value #H', 'number', 'Bps'),
- $.overviewStyle('', '__name__', 'hidden', 'short'),
- $.overviewStyle('', 'type', 'hidden', 'short'),
- $.overviewStyle('', 'compression_mode', 'hidden', 'short'),
- $.overviewStyle('Type', 'description', 'string', 'short'),
- $.overviewStyle('Stored', 'Value #J', 'number', 'bytes'),
- $.overviewStyle('', 'Value #I', 'hidden', 'short'),
- $.overviewStyle('Compression', 'Value #K', 'string', 'short', null, [], [{ text: 'ON', value: '1' }]),
+
+ $.addTableExtended(
+ datasource='${datasource}',
+ title='Pool Overview',
+ gridPosition={ h: 6, w: 24, x: 0, y: 3 },
+ options={
+ footer: {
+ fields: '',
+ reducer: ['sum'],
+ countRows: false,
+ enablePagination: false,
+ show: false,
+ },
+ frameIndex: 1,
+ showHeader: true,
+ },
+ custom={ align: 'auto', cellOptions: { type: 'auto' }, filterable: true, inspect: false },
+ thresholds={
+ mode: 'absolute',
+ steps: [
+ { color: 'green', value: null },
+ { color: 'red', value: 80 },
+ ],
+ },
+ overrides=[
+ {
+ matcher: { id: 'byName', options: 'Time' },
+ properties: [
+ { id: 'unit', value: 'short' },
+ { id: 'decimals', value: 2 },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'instance' },
+ properties: [
+ { id: 'unit', value: 'short' },
+ { id: 'decimals', value: 2 },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'job' },
+ properties: [
+ { id: 'unit', value: 'short' },
+ { id: 'decimals', value: 2 },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'name' },
+ properties: [
+ { id: 'displayName', value: 'Pool Name' },
+ { id: 'unit', value: 'short' },
+ { id: 'decimals', value: 2 },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'pool_id' },
+ properties: [
+ { id: 'displayName', value: 'Pool ID' },
+ { id: 'unit', value: 'none' },
+ { id: 'decimals', value: 2 },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'Value #A' },
+ properties: [
+ { id: 'displayName', value: 'Compression Factor' },
+ { id: 'unit', value: 'none' },
+ { id: 'decimals', value: 2 },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'Value #D' },
+ properties: [
+ { id: 'displayName', value: '% Used' },
+ { id: 'unit', value: 'percentunit' },
+ { id: 'decimals', value: 2 },
+ { id: 'custom.cellOptions', value: { type: 'color-text' } },
+ {
+ id: 'thresholds',
+ value: {
+ mode: 'absolute',
+ steps: [
+ {
+ color: 'rgba(245, 54, 54, 0.9)',
+ value: null,
+ },
+ {
+ color: 'rgba(237, 129, 40, 0.89)',
+ value: 70,
+ },
+ {
+ color: 'rgba(50, 172, 45, 0.97)',
+ value: 85,
+ },
+ ],
+ },
+ },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'Value #B' },
+ properties: [
+ { id: 'displayName', value: 'Usable Free' },
+ { id: 'unit', value: 'bytes' },
+ { id: 'decimals', value: 2 },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'Value #C' },
+ properties: [
+ { id: 'displayName', value: 'Compression Eligibility' },
+ { id: 'unit', value: 'percent' },
+ { id: 'decimals', value: 2 },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'Value #E' },
+ properties: [
+ { id: 'displayName', value: 'Compression Savings' },
+ { id: 'unit', value: 'bytes' },
+ { id: 'decimals', value: 2 },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'Value #F' },
+ properties: [
+ { id: 'displayName', value: 'Growth (5d)' },
+ { id: 'unit', value: 'bytes' },
+ { id: 'decimals', value: 2 },
+ { id: 'custom.cellOptions', value: { type: 'color-text' } },
+ {
+ id: 'thresholds',
+ value: {
+ mode: 'absolute',
+ steps: [
+ {
+ color: 'rgba(245, 54, 54, 0.9)',
+ value: null,
+ },
+ {
+ color: 'rgba(237, 129, 40, 0.89)',
+ value: 70,
+ },
+ {
+ color: 'rgba(50, 172, 45, 0.97)',
+ value: 85,
+ },
+ ],
+ },
+ },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'Value #G' },
+ properties: [
+ { id: 'displayName', value: 'IOPS' },
+ { id: 'unit', value: 'none' },
+ { id: 'decimals', value: 2 },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'Value #H' },
+ properties: [
+ { id: 'displayName', value: 'Bandwidth' },
+ { id: 'unit', value: 'Bps' },
+ { id: 'decimals', value: 2 },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: '__name__' },
+ properties: [
+ { id: 'unit', value: 'short' },
+ { id: 'decimals', value: 2 },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'type' },
+ properties: [
+ { id: 'unit', value: 'short' },
+ { id: 'decimals', value: 2 },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'compression_mode' },
+ properties: [
+ { id: 'unit', value: 'short' },
+ { id: 'decimals', value: 2 },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'description' },
+ properties: [
+ { id: 'displayName', value: 'Type' },
+ { id: 'unit', value: 'short' },
+ { id: 'decimals', value: 2 },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'Value #J' },
+ properties: [
+ { id: 'displayName', value: 'Stored' },
+ { id: 'unit', value: 'bytes' },
+ { id: 'decimals', value: 2 },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'Value #I' },
+ properties: [
+ { id: 'unit', value: 'short' },
+ { id: 'decimals', value: 2 },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'Value #K' },
+ properties: [
+ { id: 'displayName', value: 'Compression' },
+ { id: 'unit', value: 'short' },
+ { id: 'decimals', value: 2 },
+ ],
+ },
],
- 'Pool Overview',
- 'table'
+ pluginVersion='10.4.0'
)
- .addTargets(
+ .addTransformations([
+ {
+ id: 'merge',
+ options: {},
+ },
+ {
+ id: 'seriesToRows',
+ options: {},
+ },
+ {
+ id: 'organize',
+ options: {
+ excludeByName: {
+ Time: true,
+ 'Value #A': true,
+ instance: true,
+ job: true,
+ pool_id: true,
+ 'Value #B': false,
+ 'Value #C': true,
+ __name__: true,
+ compression_mode: true,
+ type: true,
+ 'Value #I': true,
+ 'Value #K': true,
+ 'Value #D': false,
+ 'Value #E': true,
+ cluster: true,
+ },
+ indexByName: {},
+ renameByName: {},
+ includeByName: {},
+ },
+ },
+ ]).addTargets(
[
$.addTargetSchema(
|||
@@ -286,7 +514,8 @@ local g = import 'grafonnet/grafana.libsonnet';
),
$.addTargetSchema('', 'L', '', '', null),
]
- ) + { gridPos: { x: 0, y: 3, w: 24, h: 6 } },
+ ),
+
$.simpleGraphPanel(
{},
'Top $topk Client IOPS by Pool',
diff --git a/monitoring/ceph-mixin/dashboards/rbd.libsonnet b/monitoring/ceph-mixin/dashboards/rbd.libsonnet
index 0eca5a877..36cd3ff1b 100644
--- a/monitoring/ceph-mixin/dashboards/rbd.libsonnet
+++ b/monitoring/ceph-mixin/dashboards/rbd.libsonnet
@@ -22,7 +22,7 @@ local u = import 'utils.libsonnet';
'{{pool}} Write'),
$.addTargetSchema(expr2, '{{pool}} Read'),
]
- ) + { gridPos: { x: x, y: y, w: w, h: h } };
+ ) + { type: 'timeseries' } + { fieldConfig: { defaults: { unit: formatY1, custom: { fillOpacity: 8, showPoints: 'never' } } } } + { gridPos: { x: x, y: y, w: w, h: h } };
$.dashboardSchema(
'RBD Details',
@@ -133,7 +133,7 @@ local u = import 'utils.libsonnet';
$.graphPanelSchema({},
title,
'',
- 'null',
+ 'null as zero',
false,
formatY1,
'short',
@@ -149,7 +149,7 @@ local u = import 'utils.libsonnet';
$.addTargetSchema(expr2,
legendFormat2),
]
- ) + { gridPos: { x: x, y: y, w: w, h: h } };
+ ) + { type: 'timeseries' } + { fieldConfig: { defaults: { unit: formatY1, custom: { fillOpacity: 8, showPoints: 'never' } } } } + { gridPos: { x: x, y: y, w: w, h: h } };
$.dashboardSchema(
'RBD Overview',
@@ -240,20 +240,68 @@ local u = import 'utils.libsonnet';
8,
7
),
- $.addTableSchema(
- '$datasource',
- '',
- { col: 3, desc: true },
- [
- $.overviewStyle('Pool', 'pool', 'string', 'short'),
- $.overviewStyle('Image', 'image', 'string', 'short'),
- $.overviewStyle('IOPS', 'Value', 'number', 'iops'),
- $.overviewStyle('', '/.*/', 'hidden', 'short'),
+
+ $.addTableExtended(
+ datasource='${datasource}',
+ title='Highest IOPS',
+ description='RBD per-image IO statistics are disabled by default.\n\nPlease refer to https://docs.ceph.com/en/latest/mgr/prometheus/#rbd-io-statistics for information about how to enable those optionally.',
+ gridPosition={ h: 7, w: 8, x: 0, y: 7 },
+ options={
+ footer: {
+ fields: '',
+ reducer: ['sum'],
+ countRows: false,
+ enablePagination: false,
+ show: false,
+ },
+ frameIndex: 1,
+ showHeader: true,
+ },
+ custom={ align: 'null', cellOptions: { type: 'auto' }, filterable: true, inspect: false },
+ thresholds={
+ mode: 'absolute',
+ steps: [
+ { color: 'green', value: null },
+ { color: 'red', value: 80 },
+ ],
+ },
+ overrides=[
+ {
+ matcher: { id: 'byName', options: 'pool' },
+ properties: [
+ { id: 'displayName', value: 'Pool' },
+ { id: 'unit', value: 'short' },
+ { id: 'decimals', value: 2 },
+ { id: 'custom.align', value: null },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'image' },
+ properties: [
+ { id: 'displayName', value: 'Image' },
+ { id: 'unit', value: 'short' },
+ { id: 'decimals', value: 2 },
+ { id: 'custom.align', value: null },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'Value' },
+ properties: [
+ { id: 'displayName', value: 'IOPS' },
+ { id: 'unit', value: 'iops' },
+ { id: 'decimals', value: 2 },
+ { id: 'custom.align', value: null },
+ ],
+ },
],
- 'Highest IOPS',
- 'table'
+ pluginVersion='10.4.0'
)
- .addTarget(
+ .addTransformations([
+ {
+ id: 'merge',
+ options: { reducers: [] },
+ },
+ ]).addTarget(
$.addTargetSchema(
|||
topk(10,
@@ -270,21 +318,69 @@ local u = import 'utils.libsonnet';
1,
true
)
- ) + { gridPos: { x: 0, y: 7, w: 8, h: 7 } },
- $.addTableSchema(
- '$datasource',
- '',
- { col: 3, desc: true },
- [
- $.overviewStyle('Pool', 'pool', 'string', 'short'),
- $.overviewStyle('Image', 'image', 'string', 'short'),
- $.overviewStyle('Throughput', 'Value', 'number', 'Bps'),
- $.overviewStyle('', '/.*/', 'hidden', 'short'),
+ ),
+
+ $.addTableExtended(
+ datasource='${datasource}',
+ title='Highest Throughput',
+ description='RBD per-image IO statistics are disabled by default.\n\nPlease refer to https://docs.ceph.com/en/latest/mgr/prometheus/#rbd-io-statistics for information about how to enable those optionally.',
+ gridPosition={ h: 7, w: 8, x: 8, y: 7 },
+ options={
+ footer: {
+ fields: '',
+ reducer: ['sum'],
+ countRows: false,
+ enablePagination: false,
+ show: false,
+ },
+ frameIndex: 1,
+ showHeader: true,
+ },
+ custom={ align: 'null', cellOptions: { type: 'auto' }, filterable: true, inspect: false },
+ thresholds={
+ mode: 'absolute',
+ steps: [
+ { color: 'green', value: null },
+ { color: 'red', value: 80 },
+ ],
+ },
+ overrides=[
+ {
+ matcher: { id: 'byName', options: 'pool' },
+ properties: [
+ { id: 'displayName', value: 'Pool' },
+ { id: 'unit', value: 'short' },
+ { id: 'decimals', value: 2 },
+ { id: 'custom.align', value: null },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'image' },
+ properties: [
+ { id: 'displayName', value: 'Image' },
+ { id: 'unit', value: 'short' },
+ { id: 'decimals', value: 2 },
+ { id: 'custom.align', value: null },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'Value' },
+ properties: [
+ { id: 'displayName', value: 'Throughput' },
+ { id: 'unit', value: 'Bps' },
+ { id: 'decimals', value: 2 },
+ { id: 'custom.align', value: null },
+ ],
+ },
],
- 'Highest Throughput',
- 'table'
+ pluginVersion='10.4.0'
)
- .addTarget(
+ .addTransformations([
+ {
+ id: 'merge',
+ options: { reducers: [] },
+ },
+ ]).addTarget(
$.addTargetSchema(
|||
topk(10,
@@ -301,21 +397,69 @@ local u = import 'utils.libsonnet';
1,
true
)
- ) + { gridPos: { x: 8, y: 7, w: 8, h: 7 } },
- $.addTableSchema(
- '$datasource',
- '',
- { col: 3, desc: true },
- [
- $.overviewStyle('Pool', 'pool', 'string', 'short'),
- $.overviewStyle('Image', 'image', 'string', 'short'),
- $.overviewStyle('Latency', 'Value', 'number', 'ns'),
- $.overviewStyle('', '/.*/', 'hidden', 'short'),
+ ),
+
+ $.addTableExtended(
+ datasource='${datasource}',
+ title='Highest Latency',
+ description='RBD per-image IO statistics are disabled by default.\n\nPlease refer to https://docs.ceph.com/en/latest/mgr/prometheus/#rbd-io-statistics for information about how to enable those optionally.',
+ gridPosition={ h: 7, w: 8, x: 16, y: 7 },
+ options={
+ footer: {
+ fields: '',
+ reducer: ['sum'],
+ countRows: false,
+ enablePagination: false,
+ show: false,
+ },
+ frameIndex: 1,
+ showHeader: true,
+ },
+ custom={ align: 'null', cellOptions: { type: 'auto' }, filterable: true, inspect: false },
+ thresholds={
+ mode: 'absolute',
+ steps: [
+ { color: 'green', value: null },
+ { color: 'red', value: 80 },
+ ],
+ },
+ overrides=[
+ {
+ matcher: { id: 'byName', options: 'pool' },
+ properties: [
+ { id: 'displayName', value: 'Pool' },
+ { id: 'unit', value: 'short' },
+ { id: 'decimals', value: 2 },
+ { id: 'custom.align', value: null },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'image' },
+ properties: [
+ { id: 'displayName', value: 'Image' },
+ { id: 'unit', value: 'short' },
+ { id: 'decimals', value: 2 },
+ { id: 'custom.align', value: null },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'Value' },
+ properties: [
+ { id: 'displayName', value: 'Latency' },
+ { id: 'unit', value: 'ns' },
+ { id: 'decimals', value: 2 },
+ { id: 'custom.align', value: null },
+ ],
+ },
],
- 'Highest Latency',
- 'table'
+ pluginVersion='10.4.0'
)
- .addTarget(
+ .addTransformations([
+ {
+ id: 'merge',
+ options: { reducers: [] },
+ },
+ ]).addTarget(
$.addTargetSchema(
|||
topk(10,
@@ -332,6 +476,6 @@ local u = import 'utils.libsonnet';
1,
true
)
- ) + { gridPos: { x: 16, y: 7, w: 8, h: 7 } },
+ ),
]),
}
diff --git a/monitoring/ceph-mixin/dashboards/rgw.libsonnet b/monitoring/ceph-mixin/dashboards/rgw.libsonnet
index 892480d1c..557f1ddcc 100644
--- a/monitoring/ceph-mixin/dashboards/rgw.libsonnet
+++ b/monitoring/ceph-mixin/dashboards/rgw.libsonnet
@@ -24,7 +24,7 @@ local u = import 'utils.libsonnet';
'{{source_zone}}'
),
]
- ) + { gridPos: { x: x, y: y, w: w, h: h } };
+ ) + { type: 'timeseries' } + { fieldConfig: { defaults: { unit: formatY1, custom: { fillOpacity: 8, showPoints: 'never' } } } } + { gridPos: { x: x, y: y, w: w, h: h } };
$.dashboardSchema(
'RGW Sync Overview',
@@ -140,7 +140,7 @@ local u = import 'utils.libsonnet';
{},
title,
description,
- 'null',
+ 'null as zero',
false,
formatY1,
formatY2,
@@ -158,7 +158,7 @@ local u = import 'utils.libsonnet';
)
.addTargets(
[$.addTargetSchema(expr1, legendFormat1)]
- ) + { gridPos: { x: x, y: y, w: w, h: h } };
+ ) + { type: 'timeseries' } + { fieldConfig: { defaults: { unit: formatY1, custom: { fillOpacity: 8, showPoints: 'never' } } } } + { gridPos: { x: x, y: y, w: w, h: h } };
$.dashboardSchema(
'RGW Overview',
@@ -658,7 +658,7 @@ local u = import 'utils.libsonnet';
$.graphPanelSchema(aliasColors,
title,
description,
- 'null',
+ 'null as zero',
false,
formatY1,
formatY2,
@@ -669,7 +669,7 @@ local u = import 'utils.libsonnet';
'$datasource')
.addTargets(
[$.addTargetSchema(expr1, legendFormat1), $.addTargetSchema(expr2, legendFormat2)]
- ) + { gridPos: { x: x, y: y, w: w, h: h } };
+ ) + { type: 'timeseries' } + { fieldConfig: { defaults: { unit: formatY1, custom: { fillOpacity: 8, showPoints: 'never' } } } } + { gridPos: { x: x, y: y, w: w, h: h } };
$.dashboardSchema(
'RGW Instance Detail',
@@ -825,15 +825,52 @@ local u = import 'utils.libsonnet';
),
]
),
- $.simplePieChart(
- {
- GETs: '#7eb26d',
- 'Other (HEAD,POST,DELETE)': '#447ebc',
- PUTs: '#eab839',
- Requests: '#3f2b5b',
- Failures: '#bf1b00',
- }, '', 'Workload Breakdown'
- )
+
+ $.pieChartPanel('Workload Breakdown',
+ '',
+ '$datasource',
+ { x: 20, y: 1, w: 4, h: 8 },
+ 'table',
+ 'bottom',
+ true,
+ [],
+ { mode: 'single', sort: 'none' },
+ 'pie',
+ ['percent', 'value'],
+ 'palette-classic',
+ overrides=[
+ {
+ matcher: { id: 'byName', options: 'Failures' },
+ properties: [
+ { id: 'color', value: { mode: 'fixed', fixedColor: '#bf1b00' } },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'GETs' },
+ properties: [
+ { id: 'color', value: { mode: 'fixed', fixedColor: '#7eb26d' } },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'Other (HEAD,POST,DELETE)' },
+ properties: [
+ { id: 'color', value: { mode: 'fixed', fixedColor: '#447ebc' } },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'PUTs' },
+ properties: [
+ { id: 'color', value: { mode: 'fixed', fixedColor: '#eab839' } },
+ ],
+ },
+ {
+ matcher: { id: 'byName', options: 'Requests' },
+ properties: [
+ { id: 'color', value: { mode: 'fixed', fixedColor: '#3f2b5b' } },
+ ],
+ },
+ ],
+ reduceOptions={ values: false, calcs: ['lastNotNull'], fields: '' })
.addTarget($.addTargetSchema(
|||
rate(ceph_rgw_failed_req{%(matchers)s}[$__rate_interval]) *
@@ -867,6 +904,6 @@ local u = import 'utils.libsonnet';
ceph_rgw_metadata{%(matchers)s, ceph_daemon=~"$rgw_servers"}
||| % $.matchers(),
'Other (DELETE,LIST) {{ceph_daemon}}'
- )) + { gridPos: { x: 20, y: 1, w: 4, h: 8 } },
+ )),
]),
}
diff --git a/monitoring/ceph-mixin/dashboards/utils.libsonnet b/monitoring/ceph-mixin/dashboards/utils.libsonnet
index a7774c7ce..5575d6205 100644
--- a/monitoring/ceph-mixin/dashboards/utils.libsonnet
+++ b/monitoring/ceph-mixin/dashboards/utils.libsonnet
@@ -1,4 +1,5 @@
local g = import 'grafonnet/grafana.libsonnet';
+local pieChartPanel = import 'piechart_panel.libsonnet';
{
_config:: error 'must provide _config',
@@ -144,14 +145,6 @@ local g = import 'grafonnet/grafana.libsonnet';
title=title,
valueName=valueName),
- addTableSchema(datasource, description, sort, styles, title, transform)::
- g.tablePanel.new(datasource=datasource,
- description=description,
- sort=sort,
- styles=styles,
- title=title,
- transform=transform),
-
addStyle(alias,
colorMode,
colors,
@@ -266,7 +259,7 @@ local g = import 'grafonnet/grafana.libsonnet';
'$datasource')
.addTargets(
[$.addTargetSchema(expr, legendFormat)]
- ) + { gridPos: { x: x, y: y, w: w, h: h } },
+ ) + { type: 'timeseries' } + { fieldConfig: { defaults: { unit: formatY1, custom: { fillOpacity: 8, showPoints: 'never' } } } } + { gridPos: { x: x, y: y, w: w, h: h } },
simpleSingleStatPanel(format,
title,
@@ -330,4 +323,76 @@ local g = import 'grafonnet/grafana.libsonnet';
'pie',
title,
'current'),
+
+ pieChartPanel(
+ title,
+ description='',
+ datasource=null,
+ gridPos={},
+ displayMode='table',
+ placement='bottom',
+ showLegend=true,
+ displayLabels=[],
+ tooltip={},
+ pieType='pie',
+ values=[],
+ colorMode='auto',
+ overrides=[],
+ reduceOptions={},
+ )::
+ pieChartPanel.new(
+ title,
+ description=description,
+ datasource=datasource,
+ gridPos=gridPos,
+ displayMode=displayMode,
+ placement=placement,
+ showLegend=showLegend,
+ displayLabels=displayLabels,
+ tooltip=tooltip,
+ pieType=pieType,
+ values=values,
+ colorMode=colorMode,
+ overrides=overrides,
+ reduceOptions=reduceOptions,
+ ),
+
+ addTableExtended(
+ title='',
+ datasource=null,
+ description=null,
+ sort=null,
+ styles='',
+ transform=null,
+ pluginVersion='9.1.3',
+ options=null,
+ gridPosition={},
+ custom=null,
+ decimals=null,
+ thresholds=null,
+ unit=null,
+ overrides=[],
+ color=null
+ )::
+ g.tablePanel.new(datasource=datasource,
+ description=description,
+ sort=sort,
+ styles=styles,
+ title=title,
+ transform=transform) + {
+ pluginVersion: pluginVersion,
+ gridPos: gridPosition,
+ [if options != null then 'options']: options,
+ fieldConfig+: {
+ defaults+: {
+ [if custom != null then 'custom']: custom,
+ [if decimals != null then 'decimals']: decimals,
+ [if thresholds != null then 'thresholds']: thresholds,
+ [if unit != null then 'unit']: unit,
+ [if color != null then 'color']: color,
+
+ },
+ overrides: overrides,
+ },
+ },
}
diff --git a/monitoring/ceph-mixin/dashboards_out/ceph-cluster.json b/monitoring/ceph-mixin/dashboards_out/ceph-cluster.json
index 2cd151ae1..b73eaefd8 100644
--- a/monitoring/ceph-mixin/dashboards_out/ceph-cluster.json
+++ b/monitoring/ceph-mixin/dashboards_out/ceph-cluster.json
@@ -256,7 +256,93 @@
}
],
"title": "OSDs",
- "type": "stat"
+ "type": "stat",
+ "fieldConfig": {
+ "defaults": {
+ "mappings": [],
+ "thresholds": {
+ "mode": "percentage",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "All"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Out"
+ },
+ "properties": [
+ {
+ "id": "thresholds",
+ "value": {
+ "mode": "percentage",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "orange",
+ "value": 0.1
+ },
+ {
+ "value": 10,
+ "color": "red"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Down"
+ },
+ "properties": [
+ {
+ "id": "thresholds",
+ "value": {
+ "mode": "percentage",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "orange",
+ "value": 0.1
+ },
+ {
+ "value": 10,
+ "color": "red"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ }
},
{
"clusterName": "",
@@ -517,6 +603,15 @@
"dashLength": 10,
"dashes": false,
"datasource": "$datasource",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "short"
+ }
+ },
"fill": 0,
"gridPos": {
"h": 6,
@@ -640,7 +735,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -673,6 +768,15 @@
"dashLength": 10,
"dashes": false,
"datasource": "$datasource",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "ms"
+ }
+ },
"fill": 0,
"gridPos": {
"h": 6,
@@ -746,7 +850,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -779,6 +883,15 @@
"dashLength": 10,
"dashes": false,
"datasource": "$datasource",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "Bps"
+ }
+ },
"fill": 1,
"gridPos": {
"h": 9,
@@ -838,7 +951,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -871,6 +984,15 @@
"dashLength": 10,
"dashes": false,
"datasource": "$datasource",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "Bps"
+ }
+ },
"fill": 1,
"gridPos": {
"h": 9,
@@ -917,7 +1039,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -1073,6 +1195,15 @@
"dashLength": 10,
"dashes": false,
"datasource": "$datasource",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "ops"
+ }
+ },
"fill": 0,
"gridPos": {
"h": 9,
@@ -1120,7 +1251,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -1276,4 +1407,4 @@
"timezone": "",
"title": "Ceph - Cluster",
"version": 13
- }
+}
diff --git a/monitoring/ceph-mixin/dashboards_out/cephfs-overview.json b/monitoring/ceph-mixin/dashboards_out/cephfs-overview.json
index 3e7aeef45..50c850ab1 100644
--- a/monitoring/ceph-mixin/dashboards_out/cephfs-overview.json
+++ b/monitoring/ceph-mixin/dashboards_out/cephfs-overview.json
@@ -63,6 +63,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "none"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -127,7 +136,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -161,6 +170,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "none"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -213,7 +231,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
diff --git a/monitoring/ceph-mixin/dashboards_out/host-details.json b/monitoring/ceph-mixin/dashboards_out/host-details.json
index 7a5ac2591..e85bc64ec 100644
--- a/monitoring/ceph-mixin/dashboards_out/host-details.json
+++ b/monitoring/ceph-mixin/dashboards_out/host-details.json
@@ -156,6 +156,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "Shows the CPU breakdown. When multiple servers are selected, only the first host's cpu data is shown",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "percent"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -208,7 +217,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -249,6 +258,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "bytes"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -330,7 +348,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -364,6 +382,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "Show the network load (rx,tx) across all interfaces (excluding loopback 'lo')",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "decbytes"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -428,7 +455,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -462,6 +489,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "pps"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -526,7 +562,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -642,6 +678,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "pps"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -706,7 +751,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -759,6 +804,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "For any OSD devices on the host, this chart shows the iops per physical device. Each device is shown by it's name and corresponding OSD id value",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "ops"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -823,7 +877,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -857,6 +911,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "For OSD hosts, this chart shows the disk bandwidth (read bytes/sec + write bytes/sec) of the physical OSD device. Each device is shown by device name, and corresponding OSD id",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "Bps"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -921,7 +984,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -955,6 +1018,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "For OSD hosts, this chart shows the latency at the physical drive. Each drive is shown by device name, with it's corresponding OSD id",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "s"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -1007,7 +1079,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -1041,6 +1113,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "Show disk utilization % (util) of any OSD devices on the host by the physical device name and associated OSD id.",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "percent"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -1093,7 +1174,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -1122,73 +1203,105 @@
},
{
"columns": [ ],
- "datasource": "$datasource",
- "description": "This table shows the 10 hosts with the highest number of slow ops",
+ "datasource": "${datasource}",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "align": "null",
+ "cellOptions": {
+ "type": "auto"
+ },
+ "filterable": true,
+ "inspect": false
+ },
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "instance"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Instance"
+ },
+ {
+ "id": "unit",
+ "value": "short"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ },
+ {
+ "id": "custom.align",
+ "value": null
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Slow Ops"
+ },
+ {
+ "id": "unit",
+ "value": "none"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ },
+ {
+ "id": "custom.align",
+ "value": null
+ }
+ ]
+ }
+ ]
+ },
"gridPos": {
"h": 8,
- "w": 4,
+ "w": 6,
"x": 0,
- "y": 40
+ "y": 30
},
"id": 15,
"links": [ ],
- "sort": {
- "col": 2,
- "desc": true
- },
- "styles": [
- {
- "alias": "Instance",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "instance",
- "thresholds": [ ],
- "type": "string",
- "unit": "short",
- "valueMaps": [ ]
- },
- {
- "alias": "Slow Ops",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
+ "options": {
+ "footer": {
+ "countRows": false,
+ "enablePagination": false,
+ "fields": "",
+ "reducer": [
+ "sum"
],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "Value",
- "thresholds": [ ],
- "type": "number",
- "unit": "none",
- "valueMaps": [ ]
+ "show": false
},
- {
- "alias": "",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "/.*/",
- "thresholds": [ ],
- "type": "hidden",
- "unit": "short",
- "valueMaps": [ ]
- }
- ],
+ "frameIndex": 1,
+ "showHeader": true
+ },
+ "pluginVersion": "10.4.0",
+ "styles": "",
"targets": [
{
"expr": "topk(10,\n (sum by (instance)(ceph_daemon_health_metrics{type=\"SLOW_OPS\", ceph_daemon=~\"osd.*\"}))\n)\n",
@@ -1202,7 +1315,20 @@
"timeFrom": null,
"timeShift": null,
"title": "Top Slow Ops per Host",
- "transform": "table",
+ "transformations": [
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {
+ "Time": true,
+ "cluster": true
+ },
+ "includeByName": { },
+ "indexByName": { },
+ "renameByName": { }
+ }
+ }
+ ],
"type": "table"
}
],
diff --git a/monitoring/ceph-mixin/dashboards_out/hosts-overview.json b/monitoring/ceph-mixin/dashboards_out/hosts-overview.json
index f1cd4c499..ef8f12abe 100644
--- a/monitoring/ceph-mixin/dashboards_out/hosts-overview.json
+++ b/monitoring/ceph-mixin/dashboards_out/hosts-overview.json
@@ -547,6 +547,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "Show the top 10 busiest hosts by cpu",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "percent"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -599,7 +608,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -633,6 +642,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "Top 10 hosts by network load",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "Bps"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -685,7 +703,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
diff --git a/monitoring/ceph-mixin/dashboards_out/osd-device-details.json b/monitoring/ceph-mixin/dashboards_out/osd-device-details.json
index 384516fb0..359f5522c 100644
--- a/monitoring/ceph-mixin/dashboards_out/osd-device-details.json
+++ b/monitoring/ceph-mixin/dashboards_out/osd-device-details.json
@@ -63,6 +63,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "s"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -87,7 +96,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -127,7 +136,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -161,6 +170,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "short"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -185,7 +203,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -225,7 +243,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -259,6 +277,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "bytes"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -283,7 +310,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -323,7 +350,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -376,6 +403,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "s"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -400,7 +436,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -440,7 +476,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -474,6 +510,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "short"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -498,7 +543,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -538,7 +583,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -572,6 +617,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "Bps"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -596,7 +650,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -636,7 +690,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -670,6 +724,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "percentunit"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -722,7 +785,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
diff --git a/monitoring/ceph-mixin/dashboards_out/osds-overview.json b/monitoring/ceph-mixin/dashboards_out/osds-overview.json
index b34c66422..b64307d32 100644
--- a/monitoring/ceph-mixin/dashboards_out/osds-overview.json
+++ b/monitoring/ceph-mixin/dashboards_out/osds-overview.json
@@ -58,6 +58,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "ms"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -124,7 +133,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -153,8 +162,82 @@
},
{
"columns": [ ],
- "datasource": "$datasource",
- "description": "This table shows the osd's that are delivering the 10 highest read latencies within the cluster",
+ "datasource": "${datasource}",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "align": "null",
+ "cellOptions": {
+ "type": "auto"
+ },
+ "filterable": true,
+ "inspect": false
+ },
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "ceph_daemon"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "OSD ID"
+ },
+ {
+ "id": "unit",
+ "value": "short"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ },
+ {
+ "id": "custom.align",
+ "value": null
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Latency (ms)"
+ },
+ {
+ "id": "unit",
+ "value": "none"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ },
+ {
+ "id": "custom.align",
+ "value": null
+ }
+ ]
+ }
+ ]
+ },
"gridPos": {
"h": 8,
"w": 4,
@@ -163,63 +246,21 @@
},
"id": 3,
"links": [ ],
- "sort": {
- "col": 2,
- "desc": true
- },
- "styles": [
- {
- "alias": "OSD ID",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
+ "options": {
+ "footer": {
+ "countRows": false,
+ "enablePagination": false,
+ "fields": "",
+ "reducer": [
+ "sum"
],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "ceph_daemon",
- "thresholds": [ ],
- "type": "string",
- "unit": "short",
- "valueMaps": [ ]
+ "show": false
},
- {
- "alias": "Latency (ms)",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "Value",
- "thresholds": [ ],
- "type": "number",
- "unit": "none",
- "valueMaps": [ ]
- },
- {
- "alias": "",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "/.*/",
- "thresholds": [ ],
- "type": "hidden",
- "unit": "short",
- "valueMaps": [ ]
- }
- ],
+ "frameIndex": 1,
+ "showHeader": true
+ },
+ "pluginVersion": "10.4.0",
+ "styles": "",
"targets": [
{
"expr": "topk(10,\n (sort(\n (\n rate(ceph_osd_op_r_latency_sum{job=~\"$job\"}[$__rate_interval]) /\n on (ceph_daemon) rate(ceph_osd_op_r_latency_count{job=~\"$job\"}[$__rate_interval]) *\n 1000\n )\n ))\n)\n",
@@ -233,7 +274,26 @@
"timeFrom": null,
"timeShift": null,
"title": "Highest READ Latencies",
- "transform": "table",
+ "transformations": [
+ {
+ "id": "merge",
+ "options": {
+ "reducers": [ ]
+ }
+ },
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {
+ "Time": true,
+ "cluster": true
+ },
+ "includeByName": { },
+ "indexByName": { },
+ "renameByName": { }
+ }
+ }
+ ],
"type": "table"
},
{
@@ -245,6 +305,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "ms"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -311,7 +380,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -340,8 +409,117 @@
},
{
"columns": [ ],
- "datasource": "$datasource",
+ "datasource": "${datasource}",
"description": "This table shows the osd's that are delivering the 10 highest write latencies within the cluster",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "align": "null",
+ "cellOptions": {
+ "type": "auto"
+ },
+ "filterable": true,
+ "inspect": false
+ },
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "ceph_daemon"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "OSD ID"
+ },
+ {
+ "id": "unit",
+ "value": "short"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ },
+ {
+ "id": "custom.align",
+ "value": null
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Latency (ms)"
+ },
+ {
+ "id": "unit",
+ "value": "none"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ },
+ {
+ "id": "custom.align",
+ "value": null
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value"
+ },
+ "properties": [
+ {
+ "id": "mappings",
+ "value": [
+ {
+ "options": {
+ "NaN": {
+ "index": 0,
+ "text": "0.00"
+ }
+ },
+ "type": "value"
+ }
+ ]
+ },
+ {
+ "id": "unit",
+ "value": "none"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ },
+ {
+ "id": "custom.align",
+ "value": null
+ }
+ ]
+ }
+ ]
+ },
"gridPos": {
"h": 8,
"w": 4,
@@ -350,63 +528,21 @@
},
"id": 5,
"links": [ ],
- "sort": {
- "col": 2,
- "desc": true
- },
- "styles": [
- {
- "alias": "OSD ID",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
+ "options": {
+ "footer": {
+ "countRows": false,
+ "enablePagination": false,
+ "fields": "",
+ "reducer": [
+ "sum"
],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "ceph_daemon",
- "thresholds": [ ],
- "type": "string",
- "unit": "short",
- "valueMaps": [ ]
+ "show": false
},
- {
- "alias": "Latency (ms)",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "Value",
- "thresholds": [ ],
- "type": "number",
- "unit": "none",
- "valueMaps": [ ]
- },
- {
- "alias": "",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "/.*/",
- "thresholds": [ ],
- "type": "hidden",
- "unit": "short",
- "valueMaps": [ ]
- }
- ],
+ "frameIndex": 1,
+ "showHeader": true
+ },
+ "pluginVersion": "10.4.0",
+ "styles": "",
"targets": [
{
"expr": "topk(10,\n (sort(\n (rate(ceph_osd_op_w_latency_sum{job=~\"$job\"}[$__rate_interval]) /\n on (ceph_daemon) rate(ceph_osd_op_w_latency_count{job=~\"$job\"}[$__rate_interval]) *\n 1000)\n ))\n)\n",
@@ -420,13 +556,47 @@
"timeFrom": null,
"timeShift": null,
"title": "Highest WRITE Latencies",
- "transform": "table",
+ "transformations": [
+ {
+ "id": "merge",
+ "options": {
+ "reducers": [ ]
+ }
+ },
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {
+ "Time": true,
+ "cluster": true
+ },
+ "includeByName": { },
+ "indexByName": { },
+ "renameByName": { }
+ }
+ }
+ ],
"type": "table"
},
{
- "aliasColors": { },
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ }
+ },
+ "mappings": [ ]
+ },
+ "overrides": [ ]
+ },
"gridPos": {
"h": 8,
"w": 4,
@@ -434,13 +604,27 @@
"y": 8
},
"id": 6,
- "legend": {
- "percentage": true,
- "show": true,
- "values": true
+ "options": {
+ "displayLabels": [
+ "percent"
+ ],
+ "legend": {
+ "calcs": [ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "values": [
+ "percent",
+ "value"
+ ]
+ },
+ "pieType": "pie",
+ "reduceOptions": { },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
},
- "legendType": "Under graph",
- "pieType": "pie",
"targets": [
{
"expr": "count by (device_class) (ceph_osd_metadata{job=~\"$job\"})",
@@ -451,15 +635,27 @@
}
],
"title": "OSD Types Summary",
- "type": "grafana-piechart-panel",
- "valueName": "current"
+ "type": "piechart"
},
{
- "aliasColors": {
- "Non-Encrypted": "#E5AC0E"
- },
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ }
+ },
+ "mappings": [ ]
+ },
+ "overrides": [ ]
+ },
"gridPos": {
"h": 8,
"w": 4,
@@ -467,13 +663,27 @@
"y": 8
},
"id": 7,
- "legend": {
- "percentage": true,
- "show": true,
- "values": true
+ "options": {
+ "displayLabels": [
+ "percent"
+ ],
+ "legend": {
+ "calcs": [ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "values": [
+ "percent",
+ "value"
+ ]
+ },
+ "pieType": "pie",
+ "reduceOptions": { },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
},
- "legendType": "Under graph",
- "pieType": "pie",
"targets": [
{
"expr": "count(ceph_bluefs_wal_total_bytes{job=~\"$job\"})",
@@ -491,13 +701,27 @@
}
],
"title": "OSD Objectstore Types",
- "type": "grafana-piechart-panel",
- "valueName": "current"
+ "type": "piechart"
},
{
- "aliasColors": { },
"datasource": "$datasource",
"description": "The pie chart shows the various OSD sizes used within the cluster",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ }
+ },
+ "mappings": [ ]
+ },
+ "overrides": [ ]
+ },
"gridPos": {
"h": 8,
"w": 4,
@@ -505,13 +729,27 @@
"y": 8
},
"id": 8,
- "legend": {
- "percentage": true,
- "show": true,
- "values": true
+ "options": {
+ "displayLabels": [
+ "percent"
+ ],
+ "legend": {
+ "calcs": [ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "values": [
+ "percent",
+ "value"
+ ]
+ },
+ "pieType": "pie",
+ "reduceOptions": { },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
},
- "legendType": "Under graph",
- "pieType": "pie",
"targets": [
{
"expr": "count(ceph_osd_stat_bytes{job=~\"$job\"} < 1099511627776)",
@@ -578,8 +816,7 @@
}
],
"title": "OSD Size Summary",
- "type": "grafana-piechart-panel",
- "valueName": "current"
+ "type": "piechart"
},
{
"aliasColors": { },
@@ -587,6 +824,15 @@
"dashLength": 10,
"dashes": false,
"datasource": "$datasource",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "short"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -640,7 +886,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": 20,
"mode": "histogram",
@@ -775,6 +1021,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "Show the read/write workload profile overtime",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "short"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -834,7 +1089,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -863,73 +1118,106 @@
},
{
"columns": [ ],
- "datasource": "$datasource",
+ "datasource": "${datasource}",
"description": "This table shows the 10 OSDs with the highest number of slow ops",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "align": "null",
+ "cellOptions": {
+ "type": "auto"
+ },
+ "filterable": true,
+ "inspect": false
+ },
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "ceph_daemon"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "OSD ID"
+ },
+ {
+ "id": "unit",
+ "value": "short"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ },
+ {
+ "id": "custom.align",
+ "value": null
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Slow Ops"
+ },
+ {
+ "id": "unit",
+ "value": "none"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ },
+ {
+ "id": "custom.align",
+ "value": null
+ }
+ ]
+ }
+ ]
+ },
"gridPos": {
"h": 8,
- "w": 4,
+ "w": 5,
"x": 0,
- "y": 20
+ "y": 25
},
"id": 13,
"links": [ ],
- "sort": {
- "col": 2,
- "desc": true
- },
- "styles": [
- {
- "alias": "OSD ID",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "ceph_daemon",
- "thresholds": [ ],
- "type": "string",
- "unit": "short",
- "valueMaps": [ ]
- },
- {
- "alias": "Slow Ops",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
+ "options": {
+ "footer": {
+ "countRows": false,
+ "enablePagination": false,
+ "fields": "",
+ "reducer": [
+ "sum"
],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "Value",
- "thresholds": [ ],
- "type": "number",
- "unit": "none",
- "valueMaps": [ ]
+ "show": false
},
- {
- "alias": "",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "/.*/",
- "thresholds": [ ],
- "type": "hidden",
- "unit": "short",
- "valueMaps": [ ]
- }
- ],
+ "frameIndex": 1,
+ "showHeader": true
+ },
+ "pluginVersion": "10.4.0",
+ "styles": "",
"targets": [
{
"expr": "topk(10,\n (ceph_daemon_health_metrics{type=\"SLOW_OPS\", ceph_daemon=~\"osd.*\"})\n)\n",
@@ -943,7 +1231,30 @@
"timeFrom": null,
"timeShift": null,
"title": "Top Slow Ops",
- "transform": "table",
+ "transformations": [
+ {
+ "id": "merge",
+ "options": {
+ "reducers": [ ]
+ }
+ },
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {
+ "Time": true,
+ "__name__": true,
+ "cluster": true,
+ "instance": true,
+ "job": true,
+ "type": true
+ },
+ "includeByName": { },
+ "indexByName": { },
+ "renameByName": { }
+ }
+ }
+ ],
"type": "table"
}
],
diff --git a/monitoring/ceph-mixin/dashboards_out/pool-detail.json b/monitoring/ceph-mixin/dashboards_out/pool-detail.json
index dc8b4152a..b43e38ccb 100644
--- a/monitoring/ceph-mixin/dashboards_out/pool-detail.json
+++ b/monitoring/ceph-mixin/dashboards_out/pool-detail.json
@@ -216,6 +216,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "ops"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -268,7 +277,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -305,6 +314,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "iops"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -369,7 +387,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -406,6 +424,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "Bps"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -470,7 +497,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -507,6 +534,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "short"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -559,7 +595,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
diff --git a/monitoring/ceph-mixin/dashboards_out/pool-overview.json b/monitoring/ceph-mixin/dashboards_out/pool-overview.json
index 7f042aa5b..a819ca537 100644
--- a/monitoring/ceph-mixin/dashboards_out/pool-overview.json
+++ b/monitoring/ceph-mixin/dashboards_out/pool-overview.json
@@ -684,8 +684,458 @@
},
{
"columns": [ ],
- "datasource": "$datasource",
- "description": "",
+ "datasource": "${datasource}",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "align": "auto",
+ "cellOptions": {
+ "type": "auto"
+ },
+ "filterable": true,
+ "inspect": false
+ },
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Time"
+ },
+ "properties": [
+ {
+ "id": "unit",
+ "value": "short"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "instance"
+ },
+ "properties": [
+ {
+ "id": "unit",
+ "value": "short"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "job"
+ },
+ "properties": [
+ {
+ "id": "unit",
+ "value": "short"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "name"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Pool Name"
+ },
+ {
+ "id": "unit",
+ "value": "short"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "pool_id"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Pool ID"
+ },
+ {
+ "id": "unit",
+ "value": "none"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #A"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Compression Factor"
+ },
+ {
+ "id": "unit",
+ "value": "none"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #D"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "% Used"
+ },
+ {
+ "id": "unit",
+ "value": "percentunit"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ },
+ {
+ "id": "custom.cellOptions",
+ "value": {
+ "type": "color-text"
+ }
+ },
+ {
+ "id": "thresholds",
+ "value": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "rgba(245, 54, 54, 0.9)",
+ "value": null
+ },
+ {
+ "color": "rgba(237, 129, 40, 0.89)",
+ "value": 70
+ },
+ {
+ "color": "rgba(50, 172, 45, 0.97)",
+ "value": 85
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #B"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Usable Free"
+ },
+ {
+ "id": "unit",
+ "value": "bytes"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #C"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Compression Eligibility"
+ },
+ {
+ "id": "unit",
+ "value": "percent"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #E"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Compression Savings"
+ },
+ {
+ "id": "unit",
+ "value": "bytes"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #F"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Growth (5d)"
+ },
+ {
+ "id": "unit",
+ "value": "bytes"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ },
+ {
+ "id": "custom.cellOptions",
+ "value": {
+ "type": "color-text"
+ }
+ },
+ {
+ "id": "thresholds",
+ "value": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "rgba(245, 54, 54, 0.9)",
+ "value": null
+ },
+ {
+ "color": "rgba(237, 129, 40, 0.89)",
+ "value": 70
+ },
+ {
+ "color": "rgba(50, 172, 45, 0.97)",
+ "value": 85
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #G"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "IOPS"
+ },
+ {
+ "id": "unit",
+ "value": "none"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #H"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Bandwidth"
+ },
+ {
+ "id": "unit",
+ "value": "Bps"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "__name__"
+ },
+ "properties": [
+ {
+ "id": "unit",
+ "value": "short"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "type"
+ },
+ "properties": [
+ {
+ "id": "unit",
+ "value": "short"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "compression_mode"
+ },
+ "properties": [
+ {
+ "id": "unit",
+ "value": "short"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "description"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Type"
+ },
+ {
+ "id": "unit",
+ "value": "short"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #J"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Stored"
+ },
+ {
+ "id": "unit",
+ "value": "bytes"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #I"
+ },
+ "properties": [
+ {
+ "id": "unit",
+ "value": "short"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #K"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Compression"
+ },
+ {
+ "id": "unit",
+ "value": "short"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ }
+ ]
+ }
+ ]
+ },
"gridPos": {
"h": 6,
"w": 24,
@@ -694,363 +1144,21 @@
},
"id": 10,
"links": [ ],
- "sort": {
- "col": 5,
- "desc": true
- },
- "styles": [
- {
- "alias": "",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "Time",
- "thresholds": [ ],
- "type": "hidden",
- "unit": "short",
- "valueMaps": [ ]
- },
- {
- "alias": "",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "instance",
- "thresholds": [ ],
- "type": "hidden",
- "unit": "short",
- "valueMaps": [ ]
- },
- {
- "alias": "",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "job",
- "thresholds": [ ],
- "type": "hidden",
- "unit": "short",
- "valueMaps": [ ]
- },
- {
- "alias": "Pool Name",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "name",
- "thresholds": [ ],
- "type": "string",
- "unit": "short",
- "valueMaps": [ ]
- },
- {
- "alias": "Pool ID",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "pool_id",
- "thresholds": [ ],
- "type": "hidden",
- "unit": "none",
- "valueMaps": [ ]
- },
- {
- "alias": "Compression Factor",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "Value #A",
- "thresholds": [ ],
- "type": "number",
- "unit": "none",
- "valueMaps": [ ]
- },
- {
- "alias": "% Used",
- "colorMode": "value",
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "Value #D",
- "thresholds": [
- "70",
- "85"
- ],
- "type": "number",
- "unit": "percentunit",
- "valueMaps": [ ]
- },
- {
- "alias": "Usable Free",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "Value #B",
- "thresholds": [ ],
- "type": "number",
- "unit": "bytes",
- "valueMaps": [ ]
- },
- {
- "alias": "Compression Eligibility",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
+ "options": {
+ "footer": {
+ "countRows": false,
+ "enablePagination": false,
+ "fields": "",
+ "reducer": [
+ "sum"
],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "Value #C",
- "thresholds": [ ],
- "type": "number",
- "unit": "percent",
- "valueMaps": [ ]
+ "show": false
},
- {
- "alias": "Compression Savings",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "Value #E",
- "thresholds": [ ],
- "type": "number",
- "unit": "bytes",
- "valueMaps": [ ]
- },
- {
- "alias": "Growth (5d)",
- "colorMode": "value",
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "Value #F",
- "thresholds": [
- "0",
- "0"
- ],
- "type": "number",
- "unit": "bytes",
- "valueMaps": [ ]
- },
- {
- "alias": "IOPS",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "Value #G",
- "thresholds": [ ],
- "type": "number",
- "unit": "none",
- "valueMaps": [ ]
- },
- {
- "alias": "Bandwidth",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "Value #H",
- "thresholds": [ ],
- "type": "number",
- "unit": "Bps",
- "valueMaps": [ ]
- },
- {
- "alias": "",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "__name__",
- "thresholds": [ ],
- "type": "hidden",
- "unit": "short",
- "valueMaps": [ ]
- },
- {
- "alias": "",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "type",
- "thresholds": [ ],
- "type": "hidden",
- "unit": "short",
- "valueMaps": [ ]
- },
- {
- "alias": "",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "compression_mode",
- "thresholds": [ ],
- "type": "hidden",
- "unit": "short",
- "valueMaps": [ ]
- },
- {
- "alias": "Type",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "description",
- "thresholds": [ ],
- "type": "string",
- "unit": "short",
- "valueMaps": [ ]
- },
- {
- "alias": "Stored",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "Value #J",
- "thresholds": [ ],
- "type": "number",
- "unit": "bytes",
- "valueMaps": [ ]
- },
- {
- "alias": "",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "Value #I",
- "thresholds": [ ],
- "type": "hidden",
- "unit": "short",
- "valueMaps": [ ]
- },
- {
- "alias": "Compression",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "Value #K",
- "thresholds": [ ],
- "type": "string",
- "unit": "short",
- "valueMaps": [
- {
- "text": "ON",
- "value": "1"
- }
- ]
- }
- ],
+ "frameIndex": 1,
+ "showHeader": true
+ },
+ "pluginVersion": "10.4.0",
+ "styles": "",
"targets": [
{
"expr": "(\n ceph_pool_compress_under_bytes{job=~\"$job\"} /\n ceph_pool_compress_bytes_used{job=~\"$job\"} > 0\n) and on(pool_id) (\n (\n (ceph_pool_compress_under_bytes{job=~\"$job\"} > 0) /\n ceph_pool_stored_raw{job=~\"$job\"}\n ) * 100 > 0.5\n)\n",
@@ -1151,7 +1259,41 @@
"timeFrom": null,
"timeShift": null,
"title": "Pool Overview",
- "transform": "table",
+ "transformations": [
+ {
+ "id": "merge",
+ "options": { }
+ },
+ {
+ "id": "seriesToRows",
+ "options": { }
+ },
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {
+ "Time": true,
+ "Value #A": true,
+ "Value #B": false,
+ "Value #C": true,
+ "Value #D": false,
+ "Value #E": true,
+ "Value #I": true,
+ "Value #K": true,
+ "__name__": true,
+ "cluster": true,
+ "compression_mode": true,
+ "instance": true,
+ "job": true,
+ "pool_id": true,
+ "type": true
+ },
+ "includeByName": { },
+ "indexByName": { },
+ "renameByName": { }
+ }
+ }
+ ],
"type": "table"
},
{
@@ -1161,6 +1303,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "This chart shows the sum of read and write IOPS from all clients by pool",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "short"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -1220,7 +1371,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -1254,6 +1405,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "The chart shows the sum of read and write bytes from all clients, by pool",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "Bps"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -1306,7 +1466,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -1340,6 +1500,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "Historical view of capacity usage, to help identify growth and trends in pool consumption",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "bytes"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -1392,7 +1561,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
diff --git a/monitoring/ceph-mixin/dashboards_out/radosgw-detail.json b/monitoring/ceph-mixin/dashboards_out/radosgw-detail.json
index a0f8f3537..8c6ad6d68 100644
--- a/monitoring/ceph-mixin/dashboards_out/radosgw-detail.json
+++ b/monitoring/ceph-mixin/dashboards_out/radosgw-detail.json
@@ -69,6 +69,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "s"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -93,7 +102,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -128,7 +137,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -162,6 +171,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "bytes"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -186,7 +204,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -221,7 +239,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -261,6 +279,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "short"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -285,7 +312,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -334,7 +361,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -362,15 +389,100 @@
]
},
{
- "aliasColors": {
- "Failures": "#bf1b00",
- "GETs": "#7eb26d",
- "Other (HEAD,POST,DELETE)": "#447ebc",
- "PUTs": "#eab839",
- "Requests": "#3f2b5b"
- },
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ }
+ },
+ "mappings": [ ]
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Failures"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#bf1b00",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "GETs"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#7eb26d",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Other (HEAD,POST,DELETE)"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#447ebc",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "PUTs"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#eab839",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Requests"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#3f2b5b",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ },
"gridPos": {
"h": 8,
"w": 4,
@@ -378,13 +490,31 @@
"y": 1
},
"id": 6,
- "legend": {
- "percentage": true,
- "show": true,
- "values": true
+ "options": {
+ "displayLabels": [ ],
+ "legend": {
+ "calcs": [ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true,
+ "values": [
+ "percent",
+ "value"
+ ]
+ },
+ "pieType": "pie",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
},
- "legendType": "Under graph",
- "pieType": "pie",
"targets": [
{
"expr": "rate(ceph_rgw_failed_req{job=~\"$job\"}[$__rate_interval]) *\n on (instance_id) group_left (ceph_daemon) ceph_rgw_metadata{job=~\"$job\", ceph_daemon=~\"$rgw_servers\"}\n",
@@ -416,8 +546,7 @@
}
],
"title": "Workload Breakdown",
- "type": "grafana-piechart-panel",
- "valueName": "current"
+ "type": "piechart"
}
],
"refresh": "30s",
diff --git a/monitoring/ceph-mixin/dashboards_out/radosgw-overview.json b/monitoring/ceph-mixin/dashboards_out/radosgw-overview.json
index 77d69e4f3..92e416764 100644
--- a/monitoring/ceph-mixin/dashboards_out/radosgw-overview.json
+++ b/monitoring/ceph-mixin/dashboards_out/radosgw-overview.json
@@ -63,6 +63,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "s"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -87,7 +96,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -122,7 +131,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -156,6 +165,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "none"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -180,7 +198,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -208,7 +226,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -242,6 +260,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "Latencies are shown stacked, without a yaxis to provide a visual indication of GET latency imbalance across RGW hosts",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "s"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -266,7 +293,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -294,7 +321,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -328,6 +355,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "Total bytes transferred in/out of all radosgw instances within the cluster",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "bytes"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -352,7 +388,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -387,7 +423,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -421,6 +457,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "Total bytes transferred in/out through get/put operations, by radosgw instance",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "bytes"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -445,7 +490,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -473,7 +518,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -507,6 +552,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "Latencies are shown stacked, without a yaxis to provide a visual indication of PUT latency imbalance across RGW hosts",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "s"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -531,7 +585,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -559,7 +613,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -612,6 +666,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "short"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -636,7 +699,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -696,7 +759,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -730,6 +793,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "short"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -754,7 +826,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -835,7 +907,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -869,6 +941,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "short"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -893,7 +974,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -942,7 +1023,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -976,6 +1057,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "short"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -1000,7 +1090,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -1056,7 +1146,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
diff --git a/monitoring/ceph-mixin/dashboards_out/radosgw-sync-overview.json b/monitoring/ceph-mixin/dashboards_out/radosgw-sync-overview.json
index e0c3037d5..09227b958 100644
--- a/monitoring/ceph-mixin/dashboards_out/radosgw-sync-overview.json
+++ b/monitoring/ceph-mixin/dashboards_out/radosgw-sync-overview.json
@@ -44,6 +44,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "Bps"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -96,7 +105,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -130,6 +139,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "short"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -182,7 +200,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -216,6 +234,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "ms"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -268,7 +295,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -302,6 +329,15 @@
"dashes": false,
"datasource": "$datasource",
"description": "",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "short"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -354,7 +390,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
diff --git a/monitoring/ceph-mixin/dashboards_out/rbd-details.json b/monitoring/ceph-mixin/dashboards_out/rbd-details.json
index f64de312a..36cd346a5 100644
--- a/monitoring/ceph-mixin/dashboards_out/rbd-details.json
+++ b/monitoring/ceph-mixin/dashboards_out/rbd-details.json
@@ -43,7 +43,16 @@
"dashLength": 10,
"dashes": false,
"datasource": "$datasource",
- "description": "",
+ "description": "RBD per-image IO statistics are disabled by default.\n\nPlease refer to https://docs.ceph.com/en/latest/mgr/prometheus/#rbd-io-statistics for information about how to enable those optionally.",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "iops"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -103,7 +112,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -136,7 +145,16 @@
"dashLength": 10,
"dashes": false,
"datasource": "$datasource",
- "description": "",
+ "description": "RBD per-image IO statistics are disabled by default.\n\nPlease refer to https://docs.ceph.com/en/latest/mgr/prometheus/#rbd-io-statistics for information about how to enable those optionally.",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "Bps"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -196,7 +214,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -229,7 +247,16 @@
"dashLength": 10,
"dashes": false,
"datasource": "$datasource",
- "description": "",
+ "description": "RBD per-image IO statistics are disabled by default.\n\nPlease refer to https://docs.ceph.com/en/latest/mgr/prometheus/#rbd-io-statistics for information about how to enable those optionally.",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "ns"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -289,7 +316,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
diff --git a/monitoring/ceph-mixin/dashboards_out/rbd-overview.json b/monitoring/ceph-mixin/dashboards_out/rbd-overview.json
index e017280e0..dcef22ad3 100644
--- a/monitoring/ceph-mixin/dashboards_out/rbd-overview.json
+++ b/monitoring/ceph-mixin/dashboards_out/rbd-overview.json
@@ -55,7 +55,16 @@
"dashLength": 10,
"dashes": false,
"datasource": "$datasource",
- "description": "",
+ "description": "RBD per-image IO statistics are disabled by default.\n\nPlease refer to https://docs.ceph.com/en/latest/mgr/prometheus/#rbd-io-statistics for information about how to enable those optionally.",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "short"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -80,7 +89,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -115,7 +124,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -148,7 +157,16 @@
"dashLength": 10,
"dashes": false,
"datasource": "$datasource",
- "description": "",
+ "description": "RBD per-image IO statistics are disabled by default.\n\nPlease refer to https://docs.ceph.com/en/latest/mgr/prometheus/#rbd-io-statistics for information about how to enable those optionally.",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "Bps"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -173,7 +191,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -208,7 +226,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -241,7 +259,16 @@
"dashLength": 10,
"dashes": false,
"datasource": "$datasource",
- "description": "",
+ "description": "RBD per-image IO statistics are disabled by default.\n\nPlease refer to https://docs.ceph.com/en/latest/mgr/prometheus/#rbd-io-statistics for information about how to enable those optionally.",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "fillOpacity": 8,
+ "showPoints": "never"
+ },
+ "unit": "ns"
+ }
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
@@ -266,7 +293,7 @@
"lines": true,
"linewidth": 1,
"links": [ ],
- "nullPointMode": "null",
+ "nullPointMode": "null as zero",
"percentage": false,
"pointradius": 5,
"points": false,
@@ -301,7 +328,7 @@
"sort": 0,
"value_type": "individual"
},
- "type": "graph",
+ "type": "timeseries",
"xaxis": {
"buckets": null,
"mode": "time",
@@ -330,8 +357,107 @@
},
{
"columns": [ ],
- "datasource": "$datasource",
- "description": "",
+ "datasource": "${datasource}",
+ "description": "RBD per-image IO statistics are disabled by default.\n\nPlease refer to https://docs.ceph.com/en/latest/mgr/prometheus/#rbd-io-statistics for information about how to enable those optionally.",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "align": "null",
+ "cellOptions": {
+ "type": "auto"
+ },
+ "filterable": true,
+ "inspect": false
+ },
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "pool"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Pool"
+ },
+ {
+ "id": "unit",
+ "value": "short"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ },
+ {
+ "id": "custom.align",
+ "value": null
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "image"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Image"
+ },
+ {
+ "id": "unit",
+ "value": "short"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ },
+ {
+ "id": "custom.align",
+ "value": null
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "IOPS"
+ },
+ {
+ "id": "unit",
+ "value": "iops"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ },
+ {
+ "id": "custom.align",
+ "value": null
+ }
+ ]
+ }
+ ]
+ },
"gridPos": {
"h": 7,
"w": 8,
@@ -340,80 +466,21 @@
},
"id": 5,
"links": [ ],
- "sort": {
- "col": 3,
- "desc": true
- },
- "styles": [
- {
- "alias": "Pool",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "pool",
- "thresholds": [ ],
- "type": "string",
- "unit": "short",
- "valueMaps": [ ]
- },
- {
- "alias": "Image",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "image",
- "thresholds": [ ],
- "type": "string",
- "unit": "short",
- "valueMaps": [ ]
- },
- {
- "alias": "IOPS",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
+ "options": {
+ "footer": {
+ "countRows": false,
+ "enablePagination": false,
+ "fields": "",
+ "reducer": [
+ "sum"
],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "Value",
- "thresholds": [ ],
- "type": "number",
- "unit": "iops",
- "valueMaps": [ ]
+ "show": false
},
- {
- "alias": "",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "/.*/",
- "thresholds": [ ],
- "type": "hidden",
- "unit": "short",
- "valueMaps": [ ]
- }
- ],
+ "frameIndex": 1,
+ "showHeader": true
+ },
+ "pluginVersion": "10.4.0",
+ "styles": "",
"targets": [
{
"expr": "topk(10,\n (\n sort((\n rate(ceph_rbd_write_ops{job=~\"$job\"}[$__rate_interval]) +\n on (image, pool, namespace) rate(ceph_rbd_read_ops{job=~\"$job\"}[$__rate_interval])\n ))\n )\n)\n",
@@ -427,13 +494,119 @@
"timeFrom": null,
"timeShift": null,
"title": "Highest IOPS",
- "transform": "table",
+ "transformations": [
+ {
+ "id": "merge",
+ "options": {
+ "reducers": [ ]
+ }
+ }
+ ],
"type": "table"
},
{
"columns": [ ],
- "datasource": "$datasource",
- "description": "",
+ "datasource": "${datasource}",
+ "description": "RBD per-image IO statistics are disabled by default.\n\nPlease refer to https://docs.ceph.com/en/latest/mgr/prometheus/#rbd-io-statistics for information about how to enable those optionally.",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "align": "null",
+ "cellOptions": {
+ "type": "auto"
+ },
+ "filterable": true,
+ "inspect": false
+ },
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "pool"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Pool"
+ },
+ {
+ "id": "unit",
+ "value": "short"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ },
+ {
+ "id": "custom.align",
+ "value": null
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "image"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Image"
+ },
+ {
+ "id": "unit",
+ "value": "short"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ },
+ {
+ "id": "custom.align",
+ "value": null
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Throughput"
+ },
+ {
+ "id": "unit",
+ "value": "Bps"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ },
+ {
+ "id": "custom.align",
+ "value": null
+ }
+ ]
+ }
+ ]
+ },
"gridPos": {
"h": 7,
"w": 8,
@@ -442,80 +615,21 @@
},
"id": 6,
"links": [ ],
- "sort": {
- "col": 3,
- "desc": true
- },
- "styles": [
- {
- "alias": "Pool",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
+ "options": {
+ "footer": {
+ "countRows": false,
+ "enablePagination": false,
+ "fields": "",
+ "reducer": [
+ "sum"
],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "pool",
- "thresholds": [ ],
- "type": "string",
- "unit": "short",
- "valueMaps": [ ]
+ "show": false
},
- {
- "alias": "Image",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "image",
- "thresholds": [ ],
- "type": "string",
- "unit": "short",
- "valueMaps": [ ]
- },
- {
- "alias": "Throughput",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "Value",
- "thresholds": [ ],
- "type": "number",
- "unit": "Bps",
- "valueMaps": [ ]
- },
- {
- "alias": "",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "/.*/",
- "thresholds": [ ],
- "type": "hidden",
- "unit": "short",
- "valueMaps": [ ]
- }
- ],
+ "frameIndex": 1,
+ "showHeader": true
+ },
+ "pluginVersion": "10.4.0",
+ "styles": "",
"targets": [
{
"expr": "topk(10,\n sort(\n sum(\n rate(ceph_rbd_read_bytes{job=~\"$job\"}[$__rate_interval]) +\n rate(ceph_rbd_write_bytes{job=~\"$job\"}[$__rate_interval])\n ) by (pool, image, namespace)\n )\n)\n",
@@ -529,13 +643,119 @@
"timeFrom": null,
"timeShift": null,
"title": "Highest Throughput",
- "transform": "table",
+ "transformations": [
+ {
+ "id": "merge",
+ "options": {
+ "reducers": [ ]
+ }
+ }
+ ],
"type": "table"
},
{
"columns": [ ],
- "datasource": "$datasource",
- "description": "",
+ "datasource": "${datasource}",
+ "description": "RBD per-image IO statistics are disabled by default.\n\nPlease refer to https://docs.ceph.com/en/latest/mgr/prometheus/#rbd-io-statistics for information about how to enable those optionally.",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "align": "null",
+ "cellOptions": {
+ "type": "auto"
+ },
+ "filterable": true,
+ "inspect": false
+ },
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "pool"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Pool"
+ },
+ {
+ "id": "unit",
+ "value": "short"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ },
+ {
+ "id": "custom.align",
+ "value": null
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "image"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Image"
+ },
+ {
+ "id": "unit",
+ "value": "short"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ },
+ {
+ "id": "custom.align",
+ "value": null
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Latency"
+ },
+ {
+ "id": "unit",
+ "value": "ns"
+ },
+ {
+ "id": "decimals",
+ "value": 2
+ },
+ {
+ "id": "custom.align",
+ "value": null
+ }
+ ]
+ }
+ ]
+ },
"gridPos": {
"h": 7,
"w": 8,
@@ -544,80 +764,21 @@
},
"id": 7,
"links": [ ],
- "sort": {
- "col": 3,
- "desc": true
- },
- "styles": [
- {
- "alias": "Pool",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "pool",
- "thresholds": [ ],
- "type": "string",
- "unit": "short",
- "valueMaps": [ ]
- },
- {
- "alias": "Image",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
+ "options": {
+ "footer": {
+ "countRows": false,
+ "enablePagination": false,
+ "fields": "",
+ "reducer": [
+ "sum"
],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "image",
- "thresholds": [ ],
- "type": "string",
- "unit": "short",
- "valueMaps": [ ]
+ "show": false
},
- {
- "alias": "Latency",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "Value",
- "thresholds": [ ],
- "type": "number",
- "unit": "ns",
- "valueMaps": [ ]
- },
- {
- "alias": "",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "/.*/",
- "thresholds": [ ],
- "type": "hidden",
- "unit": "short",
- "valueMaps": [ ]
- }
- ],
+ "frameIndex": 1,
+ "showHeader": true
+ },
+ "pluginVersion": "10.4.0",
+ "styles": "",
"targets": [
{
"expr": "topk(10,\n sum(\n rate(ceph_rbd_write_latency_sum{job=~\"$job\"}[$__rate_interval]) /\n clamp_min(rate(ceph_rbd_write_latency_count{job=~\"$job\"}[$__rate_interval]), 1) +\n rate(ceph_rbd_read_latency_sum{job=~\"$job\"}[$__rate_interval]) /\n clamp_min(rate(ceph_rbd_read_latency_count{job=~\"$job\"}[$__rate_interval]), 1)\n ) by (pool, image, namespace)\n)\n",
@@ -631,7 +792,14 @@
"timeFrom": null,
"timeShift": null,
"title": "Highest Latency",
- "transform": "table",
+ "transformations": [
+ {
+ "id": "merge",
+ "options": {
+ "reducers": [ ]
+ }
+ }
+ ],
"type": "table"
}
],
diff --git a/monitoring/ceph-mixin/prometheus_alerts.libsonnet b/monitoring/ceph-mixin/prometheus_alerts.libsonnet
index b7ec0da2f..a6ab4c2a3 100644
--- a/monitoring/ceph-mixin/prometheus_alerts.libsonnet
+++ b/monitoring/ceph-mixin/prometheus_alerts.libsonnet
@@ -690,6 +690,71 @@
],
},
{
+ name: 'hardware',
+ rules: [
+ {
+ alert: 'HardwareStorageError',
+ 'for': '30s',
+ expr: 'ceph_health_detail{name="HARDWARE_STORAGE"} > 0',
+ labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.13.1' },
+ annotations: {
+ summary: 'Storage devices error(s) detected%(cluster)s' % $.MultiClusterSummary(),
+ description: 'Some storage devices are in error. Check `ceph health detail`.',
+ },
+ },
+ {
+ alert: 'HardwareMemoryError',
+ 'for': '30s',
+ expr: 'ceph_health_detail{name="HARDWARE_MEMORY"} > 0',
+ labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.13.2' },
+ annotations: {
+ summary: 'DIMM error(s) detected%(cluster)s' % $.MultiClusterSummary(),
+ description: 'DIMM error(s) detected. Check `ceph health detail`.',
+ },
+ },
+ {
+ alert: 'HardwareProcessorError',
+ 'for': '30s',
+ expr: 'ceph_health_detail{name="HARDWARE_PROCESSOR"} > 0',
+ labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.13.3' },
+ annotations: {
+ summary: 'Processor error(s) detected%(cluster)s' % $.MultiClusterSummary(),
+ description: 'Processor error(s) detected. Check `ceph health detail`.',
+ },
+ },
+ {
+ alert: 'HardwareNetworkError',
+ 'for': '30s',
+ expr: 'ceph_health_detail{name="HARDWARE_NETWORK"} > 0',
+ labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.13.4' },
+ annotations: {
+ summary: 'Network error(s) detected%(cluster)s' % $.MultiClusterSummary(),
+ description: 'Network error(s) detected. Check `ceph health detail`.',
+ },
+ },
+ {
+ alert: 'HardwarePowerError',
+ 'for': '30s',
+ expr: 'ceph_health_detail{name="HARDWARE_POWER"} > 0',
+ labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.13.5' },
+ annotations: {
+ summary: 'Power supply error(s) detected%(cluster)s' % $.MultiClusterSummary(),
+ description: 'Power supply error(s) detected. Check `ceph health detail`.',
+ },
+ },
+ {
+ alert: 'HardwareFanError',
+ 'for': '30s',
+ expr: 'ceph_health_detail{name="HARDWARE_FANS"} > 0',
+ labels: { severity: 'critical', type: 'ceph_default', oid: '1.3.6.1.4.1.50495.1.2.1.13.6' },
+ annotations: {
+ summary: 'Fan error(s) detected%(cluster)s' % $.MultiClusterSummary(),
+ description: 'Fan error(s) detected. Check `ceph health detail`.',
+ },
+ },
+ ],
+ },
+ {
name: 'PrometheusServer',
rules: [
{
diff --git a/monitoring/ceph-mixin/prometheus_alerts.yml b/monitoring/ceph-mixin/prometheus_alerts.yml
index 4a3e6acf3..e491c753f 100644
--- a/monitoring/ceph-mixin/prometheus_alerts.yml
+++ b/monitoring/ceph-mixin/prometheus_alerts.yml
@@ -614,6 +614,68 @@ groups:
labels:
severity: "warning"
type: "ceph_default"
+ - name: "hardware"
+ rules:
+ - alert: "HardwareStorageError"
+ annotations:
+ description: "Some storage devices are in error. Check `ceph health detail`."
+ summary: "Storage devices error(s) detected"
+ expr: "ceph_health_detail{name=\"HARDWARE_STORAGE\"} > 0"
+ for: "30s"
+ labels:
+ oid: "1.3.6.1.4.1.50495.1.2.1.13.1"
+ severity: "critical"
+ type: "ceph_default"
+ - alert: "HardwareMemoryError"
+ annotations:
+ description: "DIMM error(s) detected. Check `ceph health detail`."
+ summary: "DIMM error(s) detected"
+ expr: "ceph_health_detail{name=\"HARDWARE_MEMORY\"} > 0"
+ for: "30s"
+ labels:
+ oid: "1.3.6.1.4.1.50495.1.2.1.13.2"
+ severity: "critical"
+ type: "ceph_default"
+ - alert: "HardwareProcessorError"
+ annotations:
+ description: "Processor error(s) detected. Check `ceph health detail`."
+ summary: "Processor error(s) detected"
+ expr: "ceph_health_detail{name=\"HARDWARE_PROCESSOR\"} > 0"
+ for: "30s"
+ labels:
+ oid: "1.3.6.1.4.1.50495.1.2.1.13.3"
+ severity: "critical"
+ type: "ceph_default"
+ - alert: "HardwareNetworkError"
+ annotations:
+ description: "Network error(s) detected. Check `ceph health detail`."
+ summary: "Network error(s) detected"
+ expr: "ceph_health_detail{name=\"HARDWARE_NETWORK\"} > 0"
+ for: "30s"
+ labels:
+ oid: "1.3.6.1.4.1.50495.1.2.1.13.4"
+ severity: "critical"
+ type: "ceph_default"
+ - alert: "HardwarePowerError"
+ annotations:
+ description: "Power supply error(s) detected. Check `ceph health detail`."
+ summary: "Power supply error(s) detected"
+ expr: "ceph_health_detail{name=\"HARDWARE_POWER\"} > 0"
+ for: "30s"
+ labels:
+ oid: "1.3.6.1.4.1.50495.1.2.1.13.5"
+ severity: "critical"
+ type: "ceph_default"
+ - alert: "HardwareFanError"
+ annotations:
+ description: "Fan error(s) detected. Check `ceph health detail`."
+ summary: "Fan error(s) detected"
+ expr: "ceph_health_detail{name=\"HARDWARE_FANS\"} > 0"
+ for: "30s"
+ labels:
+ oid: "1.3.6.1.4.1.50495.1.2.1.13.6"
+ severity: "critical"
+ type: "ceph_default"
- name: "PrometheusServer"
rules:
- alert: "PrometheusJobMissing"
diff --git a/monitoring/ceph-mixin/tests_alerts/test_alerts.yml b/monitoring/ceph-mixin/tests_alerts/test_alerts.yml
index 1aaea88e7..4768af7de 100644
--- a/monitoring/ceph-mixin/tests_alerts/test_alerts.yml
+++ b/monitoring/ceph-mixin/tests_alerts/test_alerts.yml
@@ -1886,3 +1886,147 @@ tests:
documentation: https://docs.ceph.com/en/latest/rados/operations/health-checks/#recent-crash
summary: One or more Ceph daemons have crashed, and are pending acknowledgement
description: One or more daemons have crashed recently, and need to be acknowledged. This notification ensures that software crashes do not go unseen. To acknowledge a crash, use the 'ceph crash archive <id>' command.
+ - interval: 30s
+ input_series:
+ - series: 'ceph_health_detail{name="HARDWARE_STORAGE"}'
+ values: '1+0x40'
+ promql_expr_test:
+ - expr: ceph_health_detail{name="HARDWARE_STORAGE"} > 0
+ eval_time: 2m
+ exp_samples:
+ - labels: '{__name__="ceph_health_detail", name="HARDWARE_STORAGE"}'
+ value: 1
+ alert_rule_test:
+ - eval_time: 1m
+ alertname: HardwareStorageError
+ - eval_time: 5m
+ alertname: HardwareStorageError
+ exp_alerts:
+ - exp_labels:
+ name: HARDWARE_STORAGE
+ severity: critical
+ type: ceph_default
+ oid: 1.3.6.1.4.1.50495.1.2.1.13.1
+ exp_annotations:
+ summary: Storage devices error(s) detected
+ description: "Some storage devices are in error. Check `ceph health detail`."
+ - interval: 30s
+ input_series:
+ - series: 'ceph_health_detail{name="HARDWARE_MEMORY"}'
+ values: '1+0x40'
+ promql_expr_test:
+ - expr: ceph_health_detail{name="HARDWARE_MEMORY"} > 0
+ eval_time: 2m
+ exp_samples:
+ - labels: '{__name__="ceph_health_detail", name="HARDWARE_MEMORY"}'
+ value: 1
+ alert_rule_test:
+ - eval_time: 1m
+ alertname: HardwareMemoryError
+ - eval_time: 5m
+ alertname: HardwareMemoryError
+ exp_alerts:
+ - exp_labels:
+ name: HARDWARE_MEMORY
+ severity: critical
+ type: ceph_default
+ oid: 1.3.6.1.4.1.50495.1.2.1.13.2
+ exp_annotations:
+ summary: DIMM error(s) detected
+ description: "DIMM error(s) detected. Check `ceph health detail`."
+ - interval: 30s
+ input_series:
+ - series: 'ceph_health_detail{name="HARDWARE_PROCESSOR"}'
+ values: '1+0x40'
+ promql_expr_test:
+ - expr: ceph_health_detail{name="HARDWARE_PROCESSOR"} > 0
+ eval_time: 2m
+ exp_samples:
+ - labels: '{__name__="ceph_health_detail", name="HARDWARE_PROCESSOR"}'
+ value: 1
+ alert_rule_test:
+ - eval_time: 1m
+ alertname: HardwareProcessorError
+ - eval_time: 5m
+ alertname: HardwareProcessorError
+ exp_alerts:
+ - exp_labels:
+ name: HARDWARE_PROCESSOR
+ severity: critical
+ type: ceph_default
+ oid: 1.3.6.1.4.1.50495.1.2.1.13.3
+ exp_annotations:
+ summary: Processor error(s) detected
+ description: "Processor error(s) detected. Check `ceph health detail`."
+ - interval: 30s
+ input_series:
+ - series: 'ceph_health_detail{name="HARDWARE_NETWORK"}'
+ values: '1+0x40'
+ promql_expr_test:
+ - expr: ceph_health_detail{name="HARDWARE_NETWORK"} > 0
+ eval_time: 2m
+ exp_samples:
+ - labels: '{__name__="ceph_health_detail", name="HARDWARE_NETWORK"}'
+ value: 1
+ alert_rule_test:
+ - eval_time: 1m
+ alertname: HardwareNetworkError
+ - eval_time: 5m
+ alertname: HardwareNetworkError
+ exp_alerts:
+ - exp_labels:
+ name: HARDWARE_NETWORK
+ severity: critical
+ type: ceph_default
+ oid: 1.3.6.1.4.1.50495.1.2.1.13.4
+ exp_annotations:
+ summary: Network error(s) detected
+ description: "Network error(s) detected. Check `ceph health detail`."
+ - interval: 30s
+ input_series:
+ - series: 'ceph_health_detail{name="HARDWARE_POWER"}'
+ values: '1+0x40'
+ promql_expr_test:
+ - expr: ceph_health_detail{name="HARDWARE_POWER"} > 0
+ eval_time: 2m
+ exp_samples:
+ - labels: '{__name__="ceph_health_detail", name="HARDWARE_POWER"}'
+ value: 1
+ alert_rule_test:
+ - eval_time: 1m
+ alertname: HardwarePowerError
+ - eval_time: 5m
+ alertname: HardwarePowerError
+ exp_alerts:
+ - exp_labels:
+ name: HARDWARE_POWER
+ severity: critical
+ type: ceph_default
+ oid: 1.3.6.1.4.1.50495.1.2.1.13.5
+ exp_annotations:
+ summary: Power supply error(s) detected
+ description: "Power supply error(s) detected. Check `ceph health detail`."
+ - interval: 30s
+ input_series:
+ - series: 'ceph_health_detail{name="HARDWARE_FANS"}'
+ values: '1+0x40'
+ promql_expr_test:
+ - expr: ceph_health_detail{name="HARDWARE_FANS"} > 0
+ eval_time: 2m
+ exp_samples:
+ - labels: '{__name__="ceph_health_detail", name="HARDWARE_FANS"}'
+ value: 1
+ alert_rule_test:
+ - eval_time: 1m
+ alertname: HardwareFanError
+ - eval_time: 5m
+ alertname: HardwareFanError
+ exp_alerts:
+ - exp_labels:
+ name: HARDWARE_FANS
+ severity: critical
+ type: ceph_default
+ oid: 1.3.6.1.4.1.50495.1.2.1.13.6
+ exp_annotations:
+ summary: Fan error(s) detected
+ description: "Fan error(s) detected. Check `ceph health detail`."
diff --git a/monitoring/snmp/README.md b/monitoring/snmp/README.md
index 1a5b60955..c96dffa3d 100644
--- a/monitoring/snmp/README.md
+++ b/monitoring/snmp/README.md
@@ -40,6 +40,7 @@ internet private enterprise ceph ceph Notifications Prometheus Notific
.10 (Rados)
.11 (cephadm)
.12 (prometheus)
+ .13 (hardware)
```
Individual alerts are placed within the appropriate alert category. For example, to add