]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
monitoring: Add nvmeof performance grafana dashboard 61751/head
authorVallari Agrawal <vallari.agrawal@ibm.com>
Fri, 21 Mar 2025 07:59:34 +0000 (13:29 +0530)
committerVallari Agrawal <vallari.agrawal@ibm.com>
Thu, 3 Apr 2025 10:18:03 +0000 (15:48 +0530)
Signed-off-by: Vallari Agrawal <vallari.agrawal@ibm.com>
monitoring/ceph-mixin/dashboards.libsonnet
monitoring/ceph-mixin/dashboards/ceph-nvmeof-performance.libsonnet [new file with mode: 0644]
monitoring/ceph-mixin/dashboards_out/ceph-nvmeof-performance.json [new file with mode: 0644]

index 75f4be402573356724ca9532afe1e774786a87c4..2362d7943e0be24fe88804195babc3c676565732 100644 (file)
@@ -11,5 +11,6 @@
     (import 'dashboards/multi-cluster.libsonnet') +
     (import 'dashboards/smb-overview.libsonnet') +
     (import 'dashboards/ceph-nvmeof.libsonnet') +
+    (import 'dashboards/ceph-nvmeof-performance.libsonnet') +
     { _config:: $._config },
 }
diff --git a/monitoring/ceph-mixin/dashboards/ceph-nvmeof-performance.libsonnet b/monitoring/ceph-mixin/dashboards/ceph-nvmeof-performance.libsonnet
new file mode 100644 (file)
index 0000000..a79456d
--- /dev/null
@@ -0,0 +1,430 @@
+local g = import 'grafonnet/grafana.libsonnet';
+
+
+(import 'utils.libsonnet') {
+  'ceph-nvmeof-performance.json': $.dashboardSchema(
+    'Ceph NVMe-oF Gateways - Performance',
+    'Ceph NVMe-oF gateways overview',
+    'feeuv1dno43r4deed',
+    'now-15m',
+    '10s',
+    '39',
+    $._config.dashboardTags,
+    ''
+  )
+                                  .addAnnotation(
+    $.addAnnotationSchema(
+      1,
+      '-- Grafana --',
+      true,
+      true,
+      'rgba(0, 211, 255, 1)',
+      'Annotations & Alerts',
+      'dashboard'
+    )
+  ).addLink(
+    $.addLinkSchema(
+      asDropdown=true,
+      icon='external link',
+      includeVars=true,
+      keepTime=true,
+      tags=[],
+      targetBlank=false,
+      title='Browse Dashboards',
+      tooltip='',
+      type='dashboards',
+      url=''
+    ),
+  ).addTemplate(
+    g.template.datasource('datasource', 'prometheus', 'default', label='Data Source')
+  ).addTemplate(
+    $.addTemplateSchema(
+      name='cluster',
+      datasource='$datasource',
+      query='label_values(ceph_health_status, cluster)',
+      refresh=1,
+      includeAll=false,
+      sort=1,
+      label='cluster',
+      regex='(.*)',
+      multi=false,
+      current={ selected: false, text: '840834cc-05a3-11f0-baba-0200229b9601', value: '840834cc-05a3-11f0-baba-0200229b9601' }
+    )
+  ).addTemplate(
+    $.addTemplateSchema(
+      name='group',
+      datasource='$datasource',
+      query='label_values(ceph_nvmeof_gateway_info,group)',
+      refresh=2,
+      includeAll=true,
+      sort=0,
+      label='Gateway Group',
+      regex='',
+      multi=false,
+      current={ selected: false, text: 'All', value: '$__all' }
+    )
+  ).addTemplate(
+    $.addTemplateSchema(
+      name='gateway',
+      datasource='$datasource',
+      query="label_values(ceph_nvmeof_gateway_info{group=~'$group'},hostname)",
+      refresh=2,
+      includeAll=true,
+      sort=0,
+      label='Gateway Hostname',
+      regex='',
+      multi=false,
+      current={ selected: false, text: 'All', value: '$__all' }
+    )
+  ).addTemplate(
+    $.addTemplateSchema(
+      name='subsystem',
+      datasource='$datasource',
+      query="label_values(ceph_nvmeof_subsystem_metadata{group=~'$group'},nqn)",
+      refresh=1,
+      includeAll=true,
+      sort=0,
+      label='Subsystem NQN',
+      regex='',
+      multi=false,
+      current={ selected: false, text: 'All', value: '$__all' }
+    )
+  ).addPanels([
+    $.addRowSchema(collapse=false, showTitle=true, title='Performance') + { gridPos: { x: 0, y: 0, w: 24, h: 1 } },
+
+    $.timeSeriesPanel(
+      title='AVG Reactor CPU Usage by Gateway',
+      description='',
+      gridPosition={ x: 0, y: 1, w: 8, h: 8 },
+      lineInterpolation='linear',
+      lineWidth=1,
+      drawStyle='line',
+      axisPlacement='auto',
+      datasource='$datasource',
+      pointSize=5,
+      showPoints='auto',
+      unit='percentunit',
+      displayMode='list',
+      showLegend=true,
+      placement='bottom',
+      tooltip={ maxHeight: 600, mode: 'multi', sort: 'desc' },
+      stackingMode='none',
+      spanNulls=false,
+      decimals=null,
+      thresholdsMode='absolute',
+      noValue=null,
+    ).addThresholds([
+      { color: 'green', value: null },
+      { color: 'red', value: 80 },
+    ])
+    .addTarget(
+      $.addTargetSchema(
+        expr="avg by(instance) (rate(ceph_nvmeof_reactor_seconds_total{mode='busy',instance=~'$gateway'}[1m]))",
+        format='',
+        instant=false,
+        legendFormat='{{name}}',
+        range=true,
+        datasource='$datasource',
+      )
+    ),
+
+    $.timeSeriesPanel(
+      title='Reactor Threads CPU Usage : $gateway',
+      description='',
+      gridPosition={ x: 8, y: 1, w: 8, h: 8 },
+      lineInterpolation='linear',
+      lineWidth=1,
+      drawStyle='line',
+      axisPlacement='auto',
+      datasource='$datasource',
+      pointSize=5,
+      showPoints='auto',
+      unit='percentunit',
+      displayMode='list',
+      showLegend=true,
+      placement='bottom',
+      tooltip={ maxHeight: 600, mode: 'multi', sort: 'desc' },
+      stackingMode='none',
+      spanNulls=false,
+      decimals=null,
+      thresholdsMode='absolute',
+      noValue=null,
+    ).addThresholds([
+      { color: 'green', value: null },
+      { color: 'red', value: 80 },
+    ])
+    .addTarget(
+      $.addTargetSchema(
+        expr="avg by (instance) (rate(ceph_nvmeof_reactor_seconds_total{mode='busy', instance=~'$gateway.*'}[1m]))\n",
+        format='',
+        instant=false,
+        legendFormat='{{name}}',
+        range=true,
+        datasource='$datasource',
+      )
+    ),
+
+    $.timeSeriesPanel(
+      title='AVG I/O Latency',
+      description='',
+      gridPosition={ x: 16, y: 1, w: 8, h: 8 },
+      lineInterpolation='linear',
+      lineWidth=1,
+      drawStyle='line',
+      axisPlacement='auto',
+      datasource='$datasource',
+      pointSize=5,
+      showPoints='auto',
+      unit='s',
+      displayMode='list',
+      showLegend=true,
+      placement='bottom',
+      tooltip={ maxHeight: 600, mode: 'multi', sort: 'desc' },
+      stackingMode='none',
+      spanNulls=false,
+      decimals=null,
+      thresholdsMode='absolute',
+      noValue=null,
+    ).addThresholds([
+      { color: 'green', value: null },
+      { color: 'red', value: 80 },
+    ])
+    .addTarget(
+      $.addTargetSchema(
+        expr="avg((rate(ceph_nvmeof_bdev_read_seconds_total{instance=~'$gateway'}[30s]) / rate(ceph_nvmeof_bdev_reads_completed_total{instance=~'$gateway'}[30s])) > 0)\n",
+        format='time_series',
+        instant=false,
+        legendFormat='Reads',
+        range=true,
+        datasource='$datasource',
+      )
+    )
+    .addTarget(
+      $.addTargetSchema(
+        expr="avg((rate(ceph_nvmeof_bdev_write_seconds_total{instance=~'$gateway'}[30s]) / rate(ceph_nvmeof_bdev_writes_completed_total{instance=~'$gateway'}[30s])) > 0)",
+        format='time_series',
+        instant=false,
+        legendFormat='Writes',
+        range=true,
+        datasource='$datasource',
+      )
+    ),
+
+    $.timeSeriesPanel(
+      title='IOPS by Gateway',
+      description='',
+      gridPosition={ x: 0, y: 9, w: 8, h: 8 },
+      lineInterpolation='linear',
+      lineWidth=1,
+      drawStyle='line',
+      axisPlacement='auto',
+      datasource='$datasource',
+      pointSize=5,
+      showPoints='auto',
+      unit='locale',
+      displayMode='list',
+      showLegend=true,
+      placement='bottom',
+      tooltip={ maxHeight: 600, mode: 'multi', sort: 'desc' },
+      stackingMode='none',
+      spanNulls=false,
+      decimals=null,
+      thresholdsMode='absolute',
+      noValue=null,
+    ).addThresholds([
+      { color: 'green', value: null },
+      { color: 'red', value: 80 },
+    ])
+    .addTarget(
+      $.addTargetSchema(
+        expr="sum by(instance) (rate(ceph_nvmeof_bdev_reads_completed_total{instance=~'$gateway'}[1m]) + rate(ceph_nvmeof_bdev_writes_completed_total{instance=~'$gateway'}[1m]))",
+        format='time_series',
+        instant=false,
+        legendFormat='__auto',
+        range=true,
+        datasource='$datasource',
+      )
+    ),
+
+    $.timeSeriesPanel(
+      title='IOPS by NVMe-oF Subsystem',
+      description='',
+      gridPosition={ x: 8, y: 9, w: 8, h: 8 },
+      lineInterpolation='linear',
+      lineWidth=1,
+      drawStyle='line',
+      axisPlacement='auto',
+      datasource='$datasource',
+      pointSize=5,
+      showPoints='auto',
+      unit='locale',
+      displayMode='list',
+      showLegend=true,
+      placement='bottom',
+      tooltip={ maxHeight: 600, mode: 'multi', sort: 'desc' },
+      stackingMode='none',
+      spanNulls=false,
+      decimals=null,
+      thresholdsMode='absolute',
+      noValue=null,
+    ).addThresholds([
+      { color: 'green', value: null },
+    ])
+    .addTarget(
+      $.addTargetSchema(
+        expr="\nsum by(nqn) ((rate(ceph_nvmeof_bdev_reads_completed_total{instance=~'$gateway'}[1m]) + rate(ceph_nvmeof_bdev_writes_completed_total{instance=~'$gateway'}[1m])) * on(instance,bdev_name) group_right ceph_nvmeof_subsystem_namespace_metadata{instance=~'$gateway'})",
+        format='time_series',
+        instant=false,
+        legendFormat='__auto',
+        range=true,
+        datasource='$datasource',
+      )
+    ),
+
+    $.timeSeriesPanel(
+      title='TOP 5 - IOPS by device for $subsystem',
+      description='',
+      gridPosition={ x: 16, y: 9, w: 8, h: 8 },
+      lineInterpolation='linear',
+      lineWidth=1,
+      drawStyle='line',
+      axisPlacement='auto',
+      datasource='$datasource',
+      pointSize=5,
+      showPoints='auto',
+      unit='locale',
+      displayMode='list',
+      showLegend=true,
+      placement='bottom',
+      tooltip={ maxHeight: 600, mode: 'multi', sort: 'desc' },
+      stackingMode='none',
+      spanNulls=false,
+      decimals=null,
+      thresholdsMode='absolute',
+      noValue=null,
+    ).addThresholds([
+      { color: 'green', value: null },
+      { color: 'red', value: 80 },
+    ])
+    .addTarget(
+      $.addTargetSchema(
+        expr="topk(5, (sum by(pool_name, rbd_name) (((rate(ceph_nvmeof_bdev_reads_completed_total{instance=~'$gateway'}[1m]) + rate(ceph_nvmeof_bdev_writes_completed_total{instance=~'$gateway'}[1m])) * on(instance,bdev_name) group_right ceph_nvmeof_bdev_metadata{instance=~'$gateway'}) * on(instance, bdev_name) group_left(nqn) ceph_nvmeof_subsystem_namespace_metadata{nqn=~'$subsystem',instance=~'$gateway'})))",
+        format='time_series',
+        instant=false,
+        legendFormat='{{pool_name}}/{{rbd_name}}',
+        range=true,
+        datasource='$datasource',
+      )
+    ),
+
+    $.timeSeriesPanel(
+      title='Throughput by Gateway',
+      description='',
+      gridPosition={ x: 0, y: 17, w: 8, h: 8 },
+      lineInterpolation='linear',
+      lineWidth=1,
+      drawStyle='line',
+      axisPlacement='auto',
+      datasource='$datasource',
+      pointSize=5,
+      showPoints='auto',
+      unit='binBps',
+      displayMode='list',
+      showLegend=true,
+      placement='bottom',
+      tooltip={ maxHeight: 600, mode: 'multi', sort: 'desc' },
+      stackingMode='normal',
+      spanNulls=false,
+      decimals=null,
+      thresholdsMode='absolute',
+      noValue=null,
+    ).addThresholds([
+      { color: 'green', value: null },
+      { color: 'red', value: 80 },
+    ])
+    .addTarget(
+      $.addTargetSchema(
+        expr="sum by(instance) (rate(ceph_nvmeof_bdev_read_bytes_total{instance=~'$gateway'}[1m]) + rate(ceph_nvmeof_bdev_written_bytes_total{instance=~'$gateway'}[1m]))",
+        format='time_series',
+        instant=false,
+        legendFormat='{{name}}',
+        range=true,
+        datasource='$datasource',
+      )
+    ),
+
+    $.timeSeriesPanel(
+      title='Throughput by NVMe-oF Subsystem',
+      description='',
+      gridPosition={ x: 8, y: 17, w: 8, h: 8 },
+      lineInterpolation='linear',
+      lineWidth=1,
+      drawStyle='line',
+      axisPlacement='auto',
+      datasource='$datasource',
+      pointSize=5,
+      showPoints='auto',
+      unit='binBps',
+      displayMode='list',
+      showLegend=true,
+      placement='bottom',
+      tooltip={ maxHeight: 600, mode: 'multi', sort: 'desc' },
+      stackingMode='none',
+      spanNulls=false,
+      decimals=null,
+      thresholdsMode='absolute',
+      noValue=null,
+    ).addThresholds([
+      { color: 'green', value: null },
+    ])
+    .addTarget(
+      $.addTargetSchema(
+        expr="\nsum by(nqn) ((rate(ceph_nvmeof_bdev_read_bytes_total{instance=~'$gateway'}[1m]) + rate(ceph_nvmeof_bdev_written_bytes_total{instance=~'$gateway'}[1m])) * on(instance,bdev_name) group_right ceph_nvmeof_subsystem_namespace_metadata{instance=~'$gateway'})",
+        format='time_series',
+        instant=false,
+        legendFormat='__auto',
+        range=true,
+        datasource='$datasource',
+      )
+    ),
+
+    $.timeSeriesPanel(
+      title='TOP 5 - Throughput by device for $subsystem',
+      description='',
+      gridPosition={ x: 16, y: 17, w: 8, h: 8 },
+      lineInterpolation='linear',
+      lineWidth=1,
+      drawStyle='line',
+      axisPlacement='auto',
+      datasource='$datasource',
+      pointSize=5,
+      showPoints='auto',
+      unit='binBps',
+      displayMode='list',
+      showLegend=true,
+      placement='bottom',
+      tooltip={ maxHeight: 600, mode: 'multi', sort: 'desc' },
+      stackingMode='none',
+      spanNulls=false,
+      decimals=null,
+      thresholdsMode='absolute',
+      noValue=null,
+    ).addThresholds([
+      { color: 'green', value: null },
+      { color: 'red', value: 80 },
+    ])
+    .addTarget(
+      $.addTargetSchema(
+        expr="topk(5, (sum by(pool_name, rbd_name) (((rate(ceph_nvmeof_bdev_read_bytes_total{instance=~'$gateway'}[1m]) + rate(ceph_nvmeof_bdev_written_bytes_total{instance=~'$gateway'}[1m])) * on(instance,bdev_name) group_right ceph_nvmeof_bdev_metadata{instance=~'$gateway'}) * on(instance, bdev_name) group_left(nqn) ceph_nvmeof_subsystem_namespace_metadata{nqn=~'$subsystem',instance=~'$gateway'})))",
+        format='time_series',
+        instant=false,
+        legendFormat='{{name}}',
+        range=true,
+        datasource='$datasource',
+      )
+    ),
+
+  ]),
+
+  // end
+}
diff --git a/monitoring/ceph-mixin/dashboards_out/ceph-nvmeof-performance.json b/monitoring/ceph-mixin/dashboards_out/ceph-nvmeof-performance.json
new file mode 100644 (file)
index 0000000..9ea9f21
--- /dev/null
@@ -0,0 +1,1072 @@
+{
+   "__inputs": [ ],
+   "__requires": [ ],
+   "annotations": {
+      "list": [
+         {
+            "builtIn": 1,
+            "datasource": "-- Grafana --",
+            "enable": true,
+            "hide": true,
+            "iconColor": "rgba(0, 211, 255, 1)",
+            "name": "Annotations & Alerts",
+            "showIn": 0,
+            "tags": [ ],
+            "type": "dashboard"
+         }
+      ]
+   },
+   "description": "Ceph NVMe-oF gateways overview",
+   "editable": false,
+   "gnetId": null,
+   "graphTooltip": 0,
+   "hideControls": false,
+   "id": null,
+   "links": [
+      {
+         "asDropdown": true,
+         "icon": "external link",
+         "includeVars": true,
+         "keepTime": true,
+         "tags": [ ],
+         "targetBlank": false,
+         "title": "Browse Dashboards",
+         "tooltip": "",
+         "type": "dashboards",
+         "url": ""
+      }
+   ],
+   "panels": [
+      {
+         "collapse": false,
+         "collapsed": false,
+         "gridPos": {
+            "h": 1,
+            "w": 24,
+            "x": 0,
+            "y": 0
+         },
+         "id": 2,
+         "panels": [ ],
+         "repeat": null,
+         "repeatIteration": null,
+         "repeatRowId": null,
+         "showTitle": true,
+         "title": "Performance",
+         "titleSize": "h6",
+         "type": "row"
+      },
+      {
+         "datasource": "$datasource",
+         "description": "",
+         "fieldConfig": {
+            "defaults": {
+               "color": {
+                  "mode": "palette-classic"
+               },
+               "custom": {
+                  "axisCenteredZero": false,
+                  "axisColorMode": "text",
+                  "axisLabel": "",
+                  "axisPlacement": "auto",
+                  "barAlignment": 0,
+                  "drawStyle": "line",
+                  "fillOpacity": 8,
+                  "gradientMode": "none",
+                  "hideFrom": {
+                     "legend": false,
+                     "tooltip": false,
+                     "viz": false
+                  },
+                  "lineInterpolation": "linear",
+                  "lineWidth": 1,
+                  "pointSize": 5,
+                  "scaleDistribution": {
+                     "type": "linear"
+                  },
+                  "showPoints": "auto",
+                  "spanNulls": false,
+                  "stacking": {
+                     "group": "A",
+                     "mode": "none"
+                  },
+                  "thresholdsStyle": {
+                     "mode": "off"
+                  }
+               },
+               "thresholds": {
+                  "mode": "absolute",
+                  "steps": [
+                     {
+                        "color": "green",
+                        "value": null
+                     },
+                     {
+                        "color": "red",
+                        "value": 80
+                     }
+                  ]
+               },
+               "unit": "percentunit"
+            },
+            "overrides": [ ]
+         },
+         "gridPos": {
+            "h": 8,
+            "w": 8,
+            "x": 0,
+            "y": 1
+         },
+         "id": 3,
+         "options": {
+            "legend": {
+               "calcs": [ ],
+               "displayMode": "list",
+               "placement": "bottom",
+               "showLegend": true
+            },
+            "tooltip": {
+               "maxHeight": 600,
+               "mode": "multi",
+               "sort": "desc"
+            }
+         },
+         "pluginVersion": "9.1.3",
+         "seriesOverrides": [ ],
+         "targets": [
+            {
+               "datasource": "$datasource",
+               "expr": "avg by(instance) (rate(ceph_nvmeof_reactor_seconds_total{mode='busy',instance=~'$gateway'}[1m]))",
+               "format": "",
+               "instant": false,
+               "intervalFactor": 1,
+               "legendFormat": "{{name}}",
+               "range": true,
+               "refId": "A"
+            }
+         ],
+         "title": "AVG Reactor CPU Usage by Gateway",
+         "type": "timeseries"
+      },
+      {
+         "datasource": "$datasource",
+         "description": "",
+         "fieldConfig": {
+            "defaults": {
+               "color": {
+                  "mode": "palette-classic"
+               },
+               "custom": {
+                  "axisCenteredZero": false,
+                  "axisColorMode": "text",
+                  "axisLabel": "",
+                  "axisPlacement": "auto",
+                  "barAlignment": 0,
+                  "drawStyle": "line",
+                  "fillOpacity": 8,
+                  "gradientMode": "none",
+                  "hideFrom": {
+                     "legend": false,
+                     "tooltip": false,
+                     "viz": false
+                  },
+                  "lineInterpolation": "linear",
+                  "lineWidth": 1,
+                  "pointSize": 5,
+                  "scaleDistribution": {
+                     "type": "linear"
+                  },
+                  "showPoints": "auto",
+                  "spanNulls": false,
+                  "stacking": {
+                     "group": "A",
+                     "mode": "none"
+                  },
+                  "thresholdsStyle": {
+                     "mode": "off"
+                  }
+               },
+               "thresholds": {
+                  "mode": "absolute",
+                  "steps": [
+                     {
+                        "color": "green",
+                        "value": null
+                     },
+                     {
+                        "color": "red",
+                        "value": 80
+                     }
+                  ]
+               },
+               "unit": "percentunit"
+            },
+            "overrides": [ ]
+         },
+         "gridPos": {
+            "h": 8,
+            "w": 8,
+            "x": 8,
+            "y": 1
+         },
+         "id": 4,
+         "options": {
+            "legend": {
+               "calcs": [ ],
+               "displayMode": "list",
+               "placement": "bottom",
+               "showLegend": true
+            },
+            "tooltip": {
+               "maxHeight": 600,
+               "mode": "multi",
+               "sort": "desc"
+            }
+         },
+         "pluginVersion": "9.1.3",
+         "seriesOverrides": [ ],
+         "targets": [
+            {
+               "datasource": "$datasource",
+               "expr": "avg by (instance) (rate(ceph_nvmeof_reactor_seconds_total{mode='busy', instance=~'$gateway.*'}[1m]))\n",
+               "format": "",
+               "instant": false,
+               "intervalFactor": 1,
+               "legendFormat": "{{name}}",
+               "range": true,
+               "refId": "A"
+            }
+         ],
+         "title": "Reactor Threads CPU Usage : $gateway",
+         "type": "timeseries"
+      },
+      {
+         "datasource": "$datasource",
+         "description": "",
+         "fieldConfig": {
+            "defaults": {
+               "color": {
+                  "mode": "palette-classic"
+               },
+               "custom": {
+                  "axisCenteredZero": false,
+                  "axisColorMode": "text",
+                  "axisLabel": "",
+                  "axisPlacement": "auto",
+                  "barAlignment": 0,
+                  "drawStyle": "line",
+                  "fillOpacity": 8,
+                  "gradientMode": "none",
+                  "hideFrom": {
+                     "legend": false,
+                     "tooltip": false,
+                     "viz": false
+                  },
+                  "lineInterpolation": "linear",
+                  "lineWidth": 1,
+                  "pointSize": 5,
+                  "scaleDistribution": {
+                     "type": "linear"
+                  },
+                  "showPoints": "auto",
+                  "spanNulls": false,
+                  "stacking": {
+                     "group": "A",
+                     "mode": "none"
+                  },
+                  "thresholdsStyle": {
+                     "mode": "off"
+                  }
+               },
+               "thresholds": {
+                  "mode": "absolute",
+                  "steps": [
+                     {
+                        "color": "green",
+                        "value": null
+                     },
+                     {
+                        "color": "red",
+                        "value": 80
+                     }
+                  ]
+               },
+               "unit": "s"
+            },
+            "overrides": [ ]
+         },
+         "gridPos": {
+            "h": 8,
+            "w": 8,
+            "x": 16,
+            "y": 1
+         },
+         "id": 5,
+         "options": {
+            "legend": {
+               "calcs": [ ],
+               "displayMode": "list",
+               "placement": "bottom",
+               "showLegend": true
+            },
+            "tooltip": {
+               "maxHeight": 600,
+               "mode": "multi",
+               "sort": "desc"
+            }
+         },
+         "pluginVersion": "9.1.3",
+         "seriesOverrides": [ ],
+         "targets": [
+            {
+               "datasource": "$datasource",
+               "expr": "avg((rate(ceph_nvmeof_bdev_read_seconds_total{instance=~'$gateway'}[30s]) / rate(ceph_nvmeof_bdev_reads_completed_total{instance=~'$gateway'}[30s])) > 0)\n",
+               "format": "time_series",
+               "instant": false,
+               "intervalFactor": 1,
+               "legendFormat": "Reads",
+               "range": true,
+               "refId": "A"
+            },
+            {
+               "datasource": "$datasource",
+               "expr": "avg((rate(ceph_nvmeof_bdev_write_seconds_total{instance=~'$gateway'}[30s]) / rate(ceph_nvmeof_bdev_writes_completed_total{instance=~'$gateway'}[30s])) > 0)",
+               "format": "time_series",
+               "instant": false,
+               "intervalFactor": 1,
+               "legendFormat": "Writes",
+               "range": true,
+               "refId": "B"
+            }
+         ],
+         "title": "AVG I/O Latency",
+         "type": "timeseries"
+      },
+      {
+         "datasource": "$datasource",
+         "description": "",
+         "fieldConfig": {
+            "defaults": {
+               "color": {
+                  "mode": "palette-classic"
+               },
+               "custom": {
+                  "axisCenteredZero": false,
+                  "axisColorMode": "text",
+                  "axisLabel": "",
+                  "axisPlacement": "auto",
+                  "barAlignment": 0,
+                  "drawStyle": "line",
+                  "fillOpacity": 8,
+                  "gradientMode": "none",
+                  "hideFrom": {
+                     "legend": false,
+                     "tooltip": false,
+                     "viz": false
+                  },
+                  "lineInterpolation": "linear",
+                  "lineWidth": 1,
+                  "pointSize": 5,
+                  "scaleDistribution": {
+                     "type": "linear"
+                  },
+                  "showPoints": "auto",
+                  "spanNulls": false,
+                  "stacking": {
+                     "group": "A",
+                     "mode": "none"
+                  },
+                  "thresholdsStyle": {
+                     "mode": "off"
+                  }
+               },
+               "thresholds": {
+                  "mode": "absolute",
+                  "steps": [
+                     {
+                        "color": "green",
+                        "value": null
+                     },
+                     {
+                        "color": "red",
+                        "value": 80
+                     }
+                  ]
+               },
+               "unit": "locale"
+            },
+            "overrides": [ ]
+         },
+         "gridPos": {
+            "h": 8,
+            "w": 8,
+            "x": 0,
+            "y": 9
+         },
+         "id": 6,
+         "options": {
+            "legend": {
+               "calcs": [ ],
+               "displayMode": "list",
+               "placement": "bottom",
+               "showLegend": true
+            },
+            "tooltip": {
+               "maxHeight": 600,
+               "mode": "multi",
+               "sort": "desc"
+            }
+         },
+         "pluginVersion": "9.1.3",
+         "seriesOverrides": [ ],
+         "targets": [
+            {
+               "datasource": "$datasource",
+               "expr": "sum by(instance) (rate(ceph_nvmeof_bdev_reads_completed_total{instance=~'$gateway'}[1m]) + rate(ceph_nvmeof_bdev_writes_completed_total{instance=~'$gateway'}[1m]))",
+               "format": "time_series",
+               "instant": false,
+               "intervalFactor": 1,
+               "legendFormat": "__auto",
+               "range": true,
+               "refId": "A"
+            }
+         ],
+         "title": "IOPS by Gateway",
+         "type": "timeseries"
+      },
+      {
+         "datasource": "$datasource",
+         "description": "",
+         "fieldConfig": {
+            "defaults": {
+               "color": {
+                  "mode": "palette-classic"
+               },
+               "custom": {
+                  "axisCenteredZero": false,
+                  "axisColorMode": "text",
+                  "axisLabel": "",
+                  "axisPlacement": "auto",
+                  "barAlignment": 0,
+                  "drawStyle": "line",
+                  "fillOpacity": 8,
+                  "gradientMode": "none",
+                  "hideFrom": {
+                     "legend": false,
+                     "tooltip": false,
+                     "viz": false
+                  },
+                  "lineInterpolation": "linear",
+                  "lineWidth": 1,
+                  "pointSize": 5,
+                  "scaleDistribution": {
+                     "type": "linear"
+                  },
+                  "showPoints": "auto",
+                  "spanNulls": false,
+                  "stacking": {
+                     "group": "A",
+                     "mode": "none"
+                  },
+                  "thresholdsStyle": {
+                     "mode": "off"
+                  }
+               },
+               "thresholds": {
+                  "mode": "absolute",
+                  "steps": [
+                     {
+                        "color": "green",
+                        "value": null
+                     }
+                  ]
+               },
+               "unit": "locale"
+            },
+            "overrides": [ ]
+         },
+         "gridPos": {
+            "h": 8,
+            "w": 8,
+            "x": 8,
+            "y": 9
+         },
+         "id": 7,
+         "options": {
+            "legend": {
+               "calcs": [ ],
+               "displayMode": "list",
+               "placement": "bottom",
+               "showLegend": true
+            },
+            "tooltip": {
+               "maxHeight": 600,
+               "mode": "multi",
+               "sort": "desc"
+            }
+         },
+         "pluginVersion": "9.1.3",
+         "seriesOverrides": [ ],
+         "targets": [
+            {
+               "datasource": "$datasource",
+               "expr": "\nsum by(nqn) ((rate(ceph_nvmeof_bdev_reads_completed_total{instance=~'$gateway'}[1m]) + rate(ceph_nvmeof_bdev_writes_completed_total{instance=~'$gateway'}[1m])) * on(instance,bdev_name) group_right ceph_nvmeof_subsystem_namespace_metadata{instance=~'$gateway'})",
+               "format": "time_series",
+               "instant": false,
+               "intervalFactor": 1,
+               "legendFormat": "__auto",
+               "range": true,
+               "refId": "A"
+            }
+         ],
+         "title": "IOPS by NVMe-oF Subsystem",
+         "type": "timeseries"
+      },
+      {
+         "datasource": "$datasource",
+         "description": "",
+         "fieldConfig": {
+            "defaults": {
+               "color": {
+                  "mode": "palette-classic"
+               },
+               "custom": {
+                  "axisCenteredZero": false,
+                  "axisColorMode": "text",
+                  "axisLabel": "",
+                  "axisPlacement": "auto",
+                  "barAlignment": 0,
+                  "drawStyle": "line",
+                  "fillOpacity": 8,
+                  "gradientMode": "none",
+                  "hideFrom": {
+                     "legend": false,
+                     "tooltip": false,
+                     "viz": false
+                  },
+                  "lineInterpolation": "linear",
+                  "lineWidth": 1,
+                  "pointSize": 5,
+                  "scaleDistribution": {
+                     "type": "linear"
+                  },
+                  "showPoints": "auto",
+                  "spanNulls": false,
+                  "stacking": {
+                     "group": "A",
+                     "mode": "none"
+                  },
+                  "thresholdsStyle": {
+                     "mode": "off"
+                  }
+               },
+               "thresholds": {
+                  "mode": "absolute",
+                  "steps": [
+                     {
+                        "color": "green",
+                        "value": null
+                     },
+                     {
+                        "color": "red",
+                        "value": 80
+                     }
+                  ]
+               },
+               "unit": "locale"
+            },
+            "overrides": [ ]
+         },
+         "gridPos": {
+            "h": 8,
+            "w": 8,
+            "x": 16,
+            "y": 9
+         },
+         "id": 8,
+         "options": {
+            "legend": {
+               "calcs": [ ],
+               "displayMode": "list",
+               "placement": "bottom",
+               "showLegend": true
+            },
+            "tooltip": {
+               "maxHeight": 600,
+               "mode": "multi",
+               "sort": "desc"
+            }
+         },
+         "pluginVersion": "9.1.3",
+         "seriesOverrides": [ ],
+         "targets": [
+            {
+               "datasource": "$datasource",
+               "expr": "topk(5, (sum by(pool_name, rbd_name) (((rate(ceph_nvmeof_bdev_reads_completed_total{instance=~'$gateway'}[1m]) + rate(ceph_nvmeof_bdev_writes_completed_total{instance=~'$gateway'}[1m])) * on(instance,bdev_name) group_right ceph_nvmeof_bdev_metadata{instance=~'$gateway'}) * on(instance, bdev_name) group_left(nqn) ceph_nvmeof_subsystem_namespace_metadata{nqn=~'$subsystem',instance=~'$gateway'})))",
+               "format": "time_series",
+               "instant": false,
+               "intervalFactor": 1,
+               "legendFormat": "{{pool_name}}/{{rbd_name}}",
+               "range": true,
+               "refId": "A"
+            }
+         ],
+         "title": "TOP 5 - IOPS by device for $subsystem",
+         "type": "timeseries"
+      },
+      {
+         "datasource": "$datasource",
+         "description": "",
+         "fieldConfig": {
+            "defaults": {
+               "color": {
+                  "mode": "palette-classic"
+               },
+               "custom": {
+                  "axisCenteredZero": false,
+                  "axisColorMode": "text",
+                  "axisLabel": "",
+                  "axisPlacement": "auto",
+                  "barAlignment": 0,
+                  "drawStyle": "line",
+                  "fillOpacity": 8,
+                  "gradientMode": "none",
+                  "hideFrom": {
+                     "legend": false,
+                     "tooltip": false,
+                     "viz": false
+                  },
+                  "lineInterpolation": "linear",
+                  "lineWidth": 1,
+                  "pointSize": 5,
+                  "scaleDistribution": {
+                     "type": "linear"
+                  },
+                  "showPoints": "auto",
+                  "spanNulls": false,
+                  "stacking": {
+                     "group": "A",
+                     "mode": "normal"
+                  },
+                  "thresholdsStyle": {
+                     "mode": "off"
+                  }
+               },
+               "thresholds": {
+                  "mode": "absolute",
+                  "steps": [
+                     {
+                        "color": "green",
+                        "value": null
+                     },
+                     {
+                        "color": "red",
+                        "value": 80
+                     }
+                  ]
+               },
+               "unit": "binBps"
+            },
+            "overrides": [ ]
+         },
+         "gridPos": {
+            "h": 8,
+            "w": 8,
+            "x": 0,
+            "y": 17
+         },
+         "id": 9,
+         "options": {
+            "legend": {
+               "calcs": [ ],
+               "displayMode": "list",
+               "placement": "bottom",
+               "showLegend": true
+            },
+            "tooltip": {
+               "maxHeight": 600,
+               "mode": "multi",
+               "sort": "desc"
+            }
+         },
+         "pluginVersion": "9.1.3",
+         "seriesOverrides": [ ],
+         "targets": [
+            {
+               "datasource": "$datasource",
+               "expr": "sum by(instance) (rate(ceph_nvmeof_bdev_read_bytes_total{instance=~'$gateway'}[1m]) + rate(ceph_nvmeof_bdev_written_bytes_total{instance=~'$gateway'}[1m]))",
+               "format": "time_series",
+               "instant": false,
+               "intervalFactor": 1,
+               "legendFormat": "{{name}}",
+               "range": true,
+               "refId": "A"
+            }
+         ],
+         "title": "Throughput by Gateway",
+         "type": "timeseries"
+      },
+      {
+         "datasource": "$datasource",
+         "description": "",
+         "fieldConfig": {
+            "defaults": {
+               "color": {
+                  "mode": "palette-classic"
+               },
+               "custom": {
+                  "axisCenteredZero": false,
+                  "axisColorMode": "text",
+                  "axisLabel": "",
+                  "axisPlacement": "auto",
+                  "barAlignment": 0,
+                  "drawStyle": "line",
+                  "fillOpacity": 8,
+                  "gradientMode": "none",
+                  "hideFrom": {
+                     "legend": false,
+                     "tooltip": false,
+                     "viz": false
+                  },
+                  "lineInterpolation": "linear",
+                  "lineWidth": 1,
+                  "pointSize": 5,
+                  "scaleDistribution": {
+                     "type": "linear"
+                  },
+                  "showPoints": "auto",
+                  "spanNulls": false,
+                  "stacking": {
+                     "group": "A",
+                     "mode": "none"
+                  },
+                  "thresholdsStyle": {
+                     "mode": "off"
+                  }
+               },
+               "thresholds": {
+                  "mode": "absolute",
+                  "steps": [
+                     {
+                        "color": "green",
+                        "value": null
+                     }
+                  ]
+               },
+               "unit": "binBps"
+            },
+            "overrides": [ ]
+         },
+         "gridPos": {
+            "h": 8,
+            "w": 8,
+            "x": 8,
+            "y": 17
+         },
+         "id": 10,
+         "options": {
+            "legend": {
+               "calcs": [ ],
+               "displayMode": "list",
+               "placement": "bottom",
+               "showLegend": true
+            },
+            "tooltip": {
+               "maxHeight": 600,
+               "mode": "multi",
+               "sort": "desc"
+            }
+         },
+         "pluginVersion": "9.1.3",
+         "seriesOverrides": [ ],
+         "targets": [
+            {
+               "datasource": "$datasource",
+               "expr": "\nsum by(nqn) ((rate(ceph_nvmeof_bdev_read_bytes_total{instance=~'$gateway'}[1m]) + rate(ceph_nvmeof_bdev_written_bytes_total{instance=~'$gateway'}[1m])) * on(instance,bdev_name) group_right ceph_nvmeof_subsystem_namespace_metadata{instance=~'$gateway'})",
+               "format": "time_series",
+               "instant": false,
+               "intervalFactor": 1,
+               "legendFormat": "__auto",
+               "range": true,
+               "refId": "A"
+            }
+         ],
+         "title": "Throughput by NVMe-oF Subsystem",
+         "type": "timeseries"
+      },
+      {
+         "datasource": "$datasource",
+         "description": "",
+         "fieldConfig": {
+            "defaults": {
+               "color": {
+                  "mode": "palette-classic"
+               },
+               "custom": {
+                  "axisCenteredZero": false,
+                  "axisColorMode": "text",
+                  "axisLabel": "",
+                  "axisPlacement": "auto",
+                  "barAlignment": 0,
+                  "drawStyle": "line",
+                  "fillOpacity": 8,
+                  "gradientMode": "none",
+                  "hideFrom": {
+                     "legend": false,
+                     "tooltip": false,
+                     "viz": false
+                  },
+                  "lineInterpolation": "linear",
+                  "lineWidth": 1,
+                  "pointSize": 5,
+                  "scaleDistribution": {
+                     "type": "linear"
+                  },
+                  "showPoints": "auto",
+                  "spanNulls": false,
+                  "stacking": {
+                     "group": "A",
+                     "mode": "none"
+                  },
+                  "thresholdsStyle": {
+                     "mode": "off"
+                  }
+               },
+               "thresholds": {
+                  "mode": "absolute",
+                  "steps": [
+                     {
+                        "color": "green",
+                        "value": null
+                     },
+                     {
+                        "color": "red",
+                        "value": 80
+                     }
+                  ]
+               },
+               "unit": "binBps"
+            },
+            "overrides": [ ]
+         },
+         "gridPos": {
+            "h": 8,
+            "w": 8,
+            "x": 16,
+            "y": 17
+         },
+         "id": 11,
+         "options": {
+            "legend": {
+               "calcs": [ ],
+               "displayMode": "list",
+               "placement": "bottom",
+               "showLegend": true
+            },
+            "tooltip": {
+               "maxHeight": 600,
+               "mode": "multi",
+               "sort": "desc"
+            }
+         },
+         "pluginVersion": "9.1.3",
+         "seriesOverrides": [ ],
+         "targets": [
+            {
+               "datasource": "$datasource",
+               "expr": "topk(5, (sum by(pool_name, rbd_name) (((rate(ceph_nvmeof_bdev_read_bytes_total{instance=~'$gateway'}[1m]) + rate(ceph_nvmeof_bdev_written_bytes_total{instance=~'$gateway'}[1m])) * on(instance,bdev_name) group_right ceph_nvmeof_bdev_metadata{instance=~'$gateway'}) * on(instance, bdev_name) group_left(nqn) ceph_nvmeof_subsystem_namespace_metadata{nqn=~'$subsystem',instance=~'$gateway'})))",
+               "format": "time_series",
+               "instant": false,
+               "intervalFactor": 1,
+               "legendFormat": "{{name}}",
+               "range": true,
+               "refId": "A"
+            }
+         ],
+         "title": "TOP 5 - Throughput by device for $subsystem",
+         "type": "timeseries"
+      }
+   ],
+   "refresh": "10s",
+   "rows": [ ],
+   "schemaVersion": "39",
+   "style": "dark",
+   "tags": [
+      "ceph-mixin"
+   ],
+   "templating": {
+      "list": [
+         {
+            "current": {
+               "text": "default",
+               "value": "default"
+            },
+            "hide": 0,
+            "label": "Data Source",
+            "name": "datasource",
+            "options": [ ],
+            "query": "prometheus",
+            "refresh": 1,
+            "regex": "",
+            "type": "datasource"
+         },
+         {
+            "allValue": null,
+            "current": {
+               "text": {
+                  "selected": false,
+                  "text": "840834cc-05a3-11f0-baba-0200229b9601",
+                  "value": "840834cc-05a3-11f0-baba-0200229b9601"
+               },
+               "value": {
+                  "selected": false,
+                  "text": "840834cc-05a3-11f0-baba-0200229b9601",
+                  "value": "840834cc-05a3-11f0-baba-0200229b9601"
+               }
+            },
+            "datasource": "$datasource",
+            "hide": 0,
+            "includeAll": false,
+            "label": "cluster",
+            "multi": false,
+            "name": "cluster",
+            "options": [ ],
+            "query": "label_values(ceph_health_status, cluster)",
+            "refresh": 1,
+            "regex": "(.*)",
+            "sort": 1,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
+         {
+            "allValue": null,
+            "current": {
+               "text": {
+                  "selected": false,
+                  "text": "All",
+                  "value": "$__all"
+               },
+               "value": {
+                  "selected": false,
+                  "text": "All",
+                  "value": "$__all"
+               }
+            },
+            "datasource": "$datasource",
+            "hide": 0,
+            "includeAll": true,
+            "label": "Gateway Group",
+            "multi": false,
+            "name": "group",
+            "options": [ ],
+            "query": "label_values(ceph_nvmeof_gateway_info,group)",
+            "refresh": 2,
+            "regex": "",
+            "sort": 0,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
+         {
+            "allValue": null,
+            "current": {
+               "text": {
+                  "selected": false,
+                  "text": "All",
+                  "value": "$__all"
+               },
+               "value": {
+                  "selected": false,
+                  "text": "All",
+                  "value": "$__all"
+               }
+            },
+            "datasource": "$datasource",
+            "hide": 0,
+            "includeAll": true,
+            "label": "Gateway Hostname",
+            "multi": false,
+            "name": "gateway",
+            "options": [ ],
+            "query": "label_values(ceph_nvmeof_gateway_info{group=~'$group'},hostname)",
+            "refresh": 2,
+            "regex": "",
+            "sort": 0,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         },
+         {
+            "allValue": null,
+            "current": {
+               "text": {
+                  "selected": false,
+                  "text": "All",
+                  "value": "$__all"
+               },
+               "value": {
+                  "selected": false,
+                  "text": "All",
+                  "value": "$__all"
+               }
+            },
+            "datasource": "$datasource",
+            "hide": 0,
+            "includeAll": true,
+            "label": "Subsystem NQN",
+            "multi": false,
+            "name": "subsystem",
+            "options": [ ],
+            "query": "label_values(ceph_nvmeof_subsystem_metadata{group=~'$group'},nqn)",
+            "refresh": 1,
+            "regex": "",
+            "sort": 0,
+            "tagValuesQuery": "",
+            "tags": [ ],
+            "tagsQuery": "",
+            "type": "query",
+            "useTags": false
+         }
+      ]
+   },
+   "time": {
+      "from": "now-15m",
+      "to": "now"
+   },
+   "timepicker": {
+      "refresh_intervals": [
+         "5s",
+         "10s",
+         "30s",
+         "1m",
+         "5m",
+         "15m",
+         "30m",
+         "1h",
+         "2h",
+         "1d"
+      ],
+      "time_options": [
+         "5m",
+         "15m",
+         "1h",
+         "6h",
+         "12h",
+         "24h",
+         "2d",
+         "7d",
+         "30d"
+      ]
+   },
+   "timezone": "",
+   "title": "Ceph NVMe-oF Gateways - Performance",
+   "uid": "feeuv1dno43r4deed",
+   "version": 0
+}