Files
yucca/o11y/dashboards/yucca-spice-blockdb-bluefs.json
T

1328 lines
34 KiB
JSON

{
"uid": "yucca-spice-blockdb-bluefs",
"title": "Ceph / block.db + BlueFS",
"description": "Per-OSD block.db utilization, spillover, and the derived sizing constant for the spice cluster. Filtered to device_class=hdd throughout. Provisioned by ansible (ceph_deploy); edit the file in the repo, not in Grafana.",
"tags": [
"spice",
"ceph",
"bluestore",
"bluefs",
"prod"
],
"timezone": "",
"editable": true,
"graphTooltip": 1,
"schemaVersion": 39,
"version": 1,
"refresh": "1m",
"time": {
"from": "now-7d",
"to": "now"
},
"timepicker": {},
"annotations": {
"list": []
},
"links": [],
"templating": {
"list": [
{
"name": "datasource",
"type": "datasource",
"query": "prometheus",
"label": "Data Source",
"refresh": 1,
"hide": 0,
"current": {
"text": "VictoriaMetrics Fleet",
"value": "VictoriaMetricsFleet"
},
"options": [],
"regex": "/^VictoriaMetrics Fleet$/",
"skipUrlSync": false
},
{
"allValue": ".*",
"current": {
"selected": true,
"text": [
"All"
],
"value": [
"$__all"
]
},
"datasource": {
"uid": "$datasource"
},
"includeAll": true,
"label": "Env",
"multi": true,
"name": "env",
"options": [],
"query": "label_values(up{project=\"yucca\"}, env)",
"refresh": 1,
"regex": "",
"sort": 1,
"type": "query"
},
{
"allValue": ".*",
"current": {
"selected": true,
"text": [
"All"
],
"value": [
"$__all"
]
},
"datasource": {
"uid": "$datasource"
},
"includeAll": true,
"label": "Provider",
"multi": true,
"name": "provider",
"options": [],
"query": "label_values(up{project=\"yucca\", env=~\"$env\"}, provider)",
"refresh": 1,
"regex": "",
"sort": 1,
"type": "query"
},
{
"allValue": ".*",
"current": {
"selected": true,
"text": [
"All"
],
"value": [
"$__all"
]
},
"datasource": {
"uid": "$datasource"
},
"includeAll": true,
"label": "Region",
"multi": true,
"name": "region",
"options": [],
"query": "label_values(up{project=\"yucca\", env=~\"$env\", provider=~\"$provider\"}, region)",
"refresh": 1,
"regex": "",
"sort": 1,
"type": "query"
},
{
"name": "cluster",
"type": "query",
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"query": "label_values(ceph_health_status{env=~\"$env\", provider=~\"$provider\", region=~\"$region\"}, cluster)",
"label": "Cluster",
"refresh": 1,
"hide": 0,
"includeAll": false,
"multi": false,
"allValue": null,
"current": {},
"options": [],
"regex": "",
"sort": 1,
"skipUrlSync": false
}
]
},
"panels": [
{
"id": 1,
"type": "text",
"title": "How to read this",
"gridPos": {
"h": 4,
"w": 24,
"x": 0,
"y": 0
},
"options": {
"mode": "markdown",
"content": "Panels cover HDD OSDs only. SSD OSDs are colocated, so their `ceph_bluefs_db_total_bytes` is the whole data device rather than a block.db LV, and including them makes utilization look idle.\n\nWatch spillover first: an OSD with `slow_used_bytes > 0` has filled its block.db and is writing RocksDB onto the spinner. Utilization is the early warning. The volume selector exposes 122 GiB of each 128 GiB LV, so real pressure runs slightly above the percentages shown here."
}
},
{
"id": 2,
"type": "row",
"title": "Spillover tripwire",
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 4
},
"panels": []
},
{
"id": 3,
"type": "stat",
"title": "OSDs spilling to HDD",
"description": "HDD OSDs with slow_used_bytes > 0. Anything above zero means block.db is exhausted on that OSD and RocksDB has spilled onto the data device.",
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"gridPos": {
"h": 5,
"w": 6,
"x": 0,
"y": 5
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"expr": "count((ceph_bluefs_slow_used_bytes{cluster=~\"$cluster\"} > 0) * on(ceph_daemon) group_left(hostname) ceph_osd_metadata{cluster=~\"$cluster\", device_class=\"hdd\"}) or vector(0)",
"refId": "A",
"legendFormat": ""
}
],
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"orientation": "auto",
"textMode": "auto",
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto"
},
"fieldConfig": {
"defaults": {
"unit": "none",
"decimals": 0,
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 1
}
]
}
},
"overrides": []
}
},
{
"id": 4,
"type": "stat",
"title": "Worst spillover",
"description": "Largest slow_used_bytes on any single HDD OSD.",
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"gridPos": {
"h": 5,
"w": 6,
"x": 6,
"y": 5
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"expr": "max((ceph_bluefs_slow_used_bytes{cluster=~\"$cluster\"} > 0) * on(ceph_daemon) group_left(hostname) ceph_osd_metadata{cluster=~\"$cluster\", device_class=\"hdd\"}) or vector(0)",
"refId": "A",
"legendFormat": ""
}
],
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"orientation": "auto",
"textMode": "auto",
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto"
},
"fieldConfig": {
"defaults": {
"unit": "bytes",
"decimals": null,
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 1
}
]
}
},
"overrides": []
}
},
{
"id": 5,
"type": "stat",
"title": "Max block.db utilization",
"description": "Fullest single HDD OSD's block.db. Note the volume selector exposes 122 GiB of the 128 GiB LV, so effective pressure is slightly higher than this raw ratio.",
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"gridPos": {
"h": 5,
"w": 6,
"x": 12,
"y": 5
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"expr": "max(100 * (ceph_bluefs_db_used_bytes{cluster=~\"$cluster\"} / ceph_bluefs_db_total_bytes{cluster=~\"$cluster\"}) * on(ceph_daemon) group_left(hostname) ceph_osd_metadata{cluster=~\"$cluster\", device_class=\"hdd\"})",
"refId": "A",
"legendFormat": ""
}
],
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"orientation": "auto",
"textMode": "auto",
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto"
},
"fieldConfig": {
"defaults": {
"unit": "percent",
"decimals": 1,
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "#EAB839",
"value": 70
},
{
"color": "red",
"value": 85
}
]
}
},
"overrides": []
}
},
{
"id": 6,
"type": "stat",
"title": "Median block.db utilization",
"description": "Fleet median across HDD OSDs.",
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"gridPos": {
"h": 5,
"w": 6,
"x": 18,
"y": 5
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"expr": "quantile(0.5, 100 * (ceph_bluefs_db_used_bytes{cluster=~\"$cluster\"} / ceph_bluefs_db_total_bytes{cluster=~\"$cluster\"}) * on(ceph_daemon) group_left(hostname) ceph_osd_metadata{cluster=~\"$cluster\", device_class=\"hdd\"})",
"refId": "A",
"legendFormat": ""
}
],
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"orientation": "auto",
"textMode": "auto",
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto"
},
"fieldConfig": {
"defaults": {
"unit": "percent",
"decimals": 1,
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "#EAB839",
"value": 60
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
}
},
{
"id": 7,
"type": "timeseries",
"title": "Spillover bytes by OSD",
"description": "Empty is healthy. A series appearing here is the signal to act.",
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"gridPos": {
"h": 7,
"w": 24,
"x": 0,
"y": 10
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"expr": "(ceph_bluefs_slow_used_bytes{cluster=~\"$cluster\"} > 0) * on(ceph_daemon) group_left(hostname) ceph_osd_metadata{cluster=~\"$cluster\", device_class=\"hdd\"}",
"refId": "A",
"legendFormat": "{{ceph_daemon}} @ {{hostname}}"
}
],
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true,
"calcs": []
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"fieldConfig": {
"defaults": {
"unit": "bytes",
"min": 0,
"custom": {
"drawStyle": "line",
"lineWidth": 2,
"fillOpacity": 18,
"showPoints": "never",
"spanNulls": true,
"axisLabel": "",
"gradientMode": "none"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
},
"color": {
"mode": "palette-classic"
}
},
"overrides": []
}
},
{
"id": 8,
"type": "row",
"title": "block.db utilization",
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 17
},
"panels": []
},
{
"id": 9,
"type": "timeseries",
"title": "block.db utilization across HDD OSDs",
"description": "Spread matters more than the median: a widening max-to-median gap means metadata is landing unevenly, usually a hot bucket index or an unbalanced PG distribution.",
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"gridPos": {
"h": 9,
"w": 16,
"x": 0,
"y": 18
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"expr": "max(100 * (ceph_bluefs_db_used_bytes{cluster=~\"$cluster\"} / ceph_bluefs_db_total_bytes{cluster=~\"$cluster\"}) * on(ceph_daemon) group_left(hostname) ceph_osd_metadata{cluster=~\"$cluster\", device_class=\"hdd\"})",
"refId": "A",
"legendFormat": "max"
},
{
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"expr": "quantile(0.95, 100 * (ceph_bluefs_db_used_bytes{cluster=~\"$cluster\"} / ceph_bluefs_db_total_bytes{cluster=~\"$cluster\"}) * on(ceph_daemon) group_left(hostname) ceph_osd_metadata{cluster=~\"$cluster\", device_class=\"hdd\"})",
"refId": "B",
"legendFormat": "p95"
},
{
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"expr": "quantile(0.5, 100 * (ceph_bluefs_db_used_bytes{cluster=~\"$cluster\"} / ceph_bluefs_db_total_bytes{cluster=~\"$cluster\"}) * on(ceph_daemon) group_left(hostname) ceph_osd_metadata{cluster=~\"$cluster\", device_class=\"hdd\"})",
"refId": "C",
"legendFormat": "median"
}
],
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true,
"calcs": []
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"fieldConfig": {
"defaults": {
"unit": "percent",
"min": 0,
"custom": {
"drawStyle": "line",
"lineWidth": 2,
"fillOpacity": 8,
"showPoints": "never",
"spanNulls": true,
"axisLabel": "",
"gradientMode": "none"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
},
"color": {
"mode": "palette-classic"
},
"max": 100
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "max"
},
"properties": [
{
"id": "color",
"value": {
"mode": "fixed",
"fixedColor": "#d95926"
}
}
]
},
{
"matcher": {
"id": "byName",
"options": "p95"
},
"properties": [
{
"id": "color",
"value": {
"mode": "fixed",
"fixedColor": "#199e70"
}
}
]
},
{
"matcher": {
"id": "byName",
"options": "median"
},
"properties": [
{
"id": "color",
"value": {
"mode": "fixed",
"fixedColor": "#3987e5"
}
}
]
}
]
}
},
{
"id": 10,
"type": "bargauge",
"title": "Top 15 OSDs by block.db utilization",
"description": "Instant snapshot. Hostname is joined from ceph_osd_metadata.",
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"gridPos": {
"h": 9,
"w": 8,
"x": 16,
"y": 18
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"expr": "topk(15, 100 * (ceph_bluefs_db_used_bytes{cluster=~\"$cluster\"} / ceph_bluefs_db_total_bytes{cluster=~\"$cluster\"}) * on(ceph_daemon) group_left(hostname) ceph_osd_metadata{cluster=~\"$cluster\", device_class=\"hdd\"})",
"refId": "A",
"legendFormat": "{{ceph_daemon}} {{hostname}}",
"instant": true
}
],
"options": {
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"orientation": "horizontal",
"displayMode": "gradient",
"showUnfilled": true,
"minVizWidth": 8,
"minVizHeight": 10
},
"fieldConfig": {
"defaults": {
"unit": "percent",
"min": 0,
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "#EAB839",
"value": 70
},
{
"color": "red",
"value": 85
}
]
}
},
"overrides": []
}
},
{
"id": 11,
"type": "row",
"title": "Growth and sizing",
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 27
},
"panels": []
},
{
"id": 12,
"type": "timeseries",
"title": "block.db used per OSD",
"description": "Absolute bytes rather than a ratio, so the growth rate is readable directly.",
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 28
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"expr": "max(ceph_bluefs_db_used_bytes{cluster=~\"$cluster\"} * on(ceph_daemon) group_left(hostname) ceph_osd_metadata{cluster=~\"$cluster\", device_class=\"hdd\"})",
"refId": "A",
"legendFormat": "max"
},
{
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"expr": "quantile(0.5, ceph_bluefs_db_used_bytes{cluster=~\"$cluster\"} * on(ceph_daemon) group_left(hostname) ceph_osd_metadata{cluster=~\"$cluster\", device_class=\"hdd\"})",
"refId": "B",
"legendFormat": "median"
}
],
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true,
"calcs": []
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"fieldConfig": {
"defaults": {
"unit": "bytes",
"min": 0,
"custom": {
"drawStyle": "line",
"lineWidth": 2,
"fillOpacity": 8,
"showPoints": "never",
"spanNulls": true,
"axisLabel": "",
"gradientMode": "none"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
},
"color": {
"mode": "palette-classic"
}
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "max"
},
"properties": [
{
"id": "color",
"value": {
"mode": "fixed",
"fixedColor": "#d95926"
}
}
]
},
{
"matcher": {
"id": "byName",
"options": "median"
},
"properties": [
{
"id": "color",
"value": {
"mode": "fixed",
"fixedColor": "#3987e5"
}
}
]
}
]
}
},
{
"id": 13,
"type": "timeseries",
"title": "Cluster fill",
"description": "Deliberately a separate panel rather than a second axis on the block.db chart. CAVEAT: ceph_cluster_total_bytes counts each OSD's block.db LV inside raw HDD capacity, about 84 TiB fleet-wide, so this reads slightly low. Use pool metrics for capacity decisions; this panel is for correlating db growth against fill.",
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 28
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"expr": "100 * ceph_cluster_total_used_bytes{cluster=~\"$cluster\"} / ceph_cluster_total_bytes{cluster=~\"$cluster\"}",
"refId": "A",
"legendFormat": "raw used"
}
],
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true,
"calcs": []
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"fieldConfig": {
"defaults": {
"unit": "percent",
"min": 0,
"custom": {
"drawStyle": "line",
"lineWidth": 2,
"fillOpacity": 8,
"showPoints": "never",
"spanNulls": true,
"axisLabel": "",
"gradientMode": "none"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
},
"color": {
"mode": "palette-classic"
},
"max": 100
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "raw used"
},
"properties": [
{
"id": "color",
"value": {
"mode": "fixed",
"fixedColor": "#199e70"
}
}
]
}
]
}
},
{
"id": 14,
"type": "timeseries",
"title": "block.db GiB per TiB stored on the OSD",
"description": "The sizing constant, derived live. If this climbs, average object size is falling and the crossover analysis needs redoing. It moves before spillover does.",
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 36
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"expr": "quantile(0.5, (ceph_bluefs_db_used_bytes{cluster=~\"$cluster\"} / 1073741824) / (ceph_osd_stat_bytes_used{cluster=~\"$cluster\"} / 1099511627776) * on(ceph_daemon) group_left(hostname) ceph_osd_metadata{cluster=~\"$cluster\", device_class=\"hdd\"})",
"refId": "A",
"legendFormat": "median"
},
{
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"expr": "max((ceph_bluefs_db_used_bytes{cluster=~\"$cluster\"} / 1073741824) / (ceph_osd_stat_bytes_used{cluster=~\"$cluster\"} / 1099511627776) * on(ceph_daemon) group_left(hostname) ceph_osd_metadata{cluster=~\"$cluster\", device_class=\"hdd\"})",
"refId": "B",
"legendFormat": "max"
}
],
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true,
"calcs": []
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"fieldConfig": {
"defaults": {
"unit": "none",
"min": 0,
"custom": {
"drawStyle": "line",
"lineWidth": 2,
"fillOpacity": 8,
"showPoints": "never",
"spanNulls": true,
"axisLabel": "",
"gradientMode": "none"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
},
"color": {
"mode": "palette-classic"
}
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "median"
},
"properties": [
{
"id": "color",
"value": {
"mode": "fixed",
"fixedColor": "#3987e5"
}
}
]
},
{
"matcher": {
"id": "byName",
"options": "max"
},
"properties": [
{
"id": "color",
"value": {
"mode": "fixed",
"fixedColor": "#d95926"
}
}
]
}
]
}
},
{
"id": 15,
"type": "timeseries",
"title": "BlueStore onode cache hit rate",
"description": "Fleet-wide onode cache effectiveness. Driven by osd_memory_target, which is unset on spice and therefore at the 4 GiB default. Raising it is the cheapest lever on small-object metadata performance and needs no OSD rebuild.",
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 36
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"expr": "100 * sum(rate(ceph_bluestore_onode_hits{cluster=~\"$cluster\"}[$__rate_interval])) / (sum(rate(ceph_bluestore_onode_hits{cluster=~\"$cluster\"}[$__rate_interval])) + sum(rate(ceph_bluestore_onode_misses{cluster=~\"$cluster\"}[$__rate_interval])))",
"refId": "A",
"legendFormat": "hit rate"
}
],
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true,
"calcs": []
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"fieldConfig": {
"defaults": {
"unit": "percent",
"min": 0,
"custom": {
"drawStyle": "line",
"lineWidth": 2,
"fillOpacity": 8,
"showPoints": "never",
"spanNulls": true,
"axisLabel": "",
"gradientMode": "none"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
},
"color": {
"mode": "palette-classic"
},
"max": 100
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "hit rate"
},
"properties": [
{
"id": "color",
"value": {
"mode": "fixed",
"fixedColor": "#199e70"
}
}
]
}
]
}
},
{
"id": 16,
"type": "row",
"title": "BlueFS internals",
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 44
},
"panels": []
},
{
"id": 17,
"type": "timeseries",
"title": "BlueFS file count per OSD",
"description": "SST plus WAL file count. A step change usually means a compaction storm.",
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"gridPos": {
"h": 7,
"w": 12,
"x": 0,
"y": 45
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"expr": "max(ceph_bluefs_num_files{cluster=~\"$cluster\"} * on(ceph_daemon) group_left(hostname) ceph_osd_metadata{cluster=~\"$cluster\", device_class=\"hdd\"})",
"refId": "A",
"legendFormat": "max"
},
{
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"expr": "quantile(0.5, ceph_bluefs_num_files{cluster=~\"$cluster\"} * on(ceph_daemon) group_left(hostname) ceph_osd_metadata{cluster=~\"$cluster\", device_class=\"hdd\"})",
"refId": "B",
"legendFormat": "median"
}
],
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true,
"calcs": []
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"fieldConfig": {
"defaults": {
"unit": "none",
"min": 0,
"custom": {
"drawStyle": "line",
"lineWidth": 2,
"fillOpacity": 8,
"showPoints": "never",
"spanNulls": true,
"axisLabel": "",
"gradientMode": "none"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
},
"color": {
"mode": "palette-classic"
}
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "max"
},
"properties": [
{
"id": "color",
"value": {
"mode": "fixed",
"fixedColor": "#d95926"
}
}
]
},
{
"matcher": {
"id": "byName",
"options": "median"
},
"properties": [
{
"id": "color",
"value": {
"mode": "fixed",
"fixedColor": "#3987e5"
}
}
]
}
]
}
},
{
"id": 18,
"type": "timeseries",
"title": "BlueFS logged bytes per OSD",
"description": "BlueFS journal volume. Rides on the same NVMe as block.db and the OS.",
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"gridPos": {
"h": 7,
"w": 12,
"x": 12,
"y": 45
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"expr": "max(ceph_bluefs_logged_bytes{cluster=~\"$cluster\"} * on(ceph_daemon) group_left(hostname) ceph_osd_metadata{cluster=~\"$cluster\", device_class=\"hdd\"})",
"refId": "A",
"legendFormat": "max"
},
{
"datasource": {
"type": "prometheus",
"uid": "$datasource"
},
"expr": "quantile(0.5, ceph_bluefs_logged_bytes{cluster=~\"$cluster\"} * on(ceph_daemon) group_left(hostname) ceph_osd_metadata{cluster=~\"$cluster\", device_class=\"hdd\"})",
"refId": "B",
"legendFormat": "median"
}
],
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true,
"calcs": []
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"fieldConfig": {
"defaults": {
"unit": "bytes",
"min": 0,
"custom": {
"drawStyle": "line",
"lineWidth": 2,
"fillOpacity": 8,
"showPoints": "never",
"spanNulls": true,
"axisLabel": "",
"gradientMode": "none"
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
},
"color": {
"mode": "palette-classic"
}
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "max"
},
"properties": [
{
"id": "color",
"value": {
"mode": "fixed",
"fixedColor": "#d95926"
}
}
]
},
{
"matcher": {
"id": "byName",
"options": "median"
},
"properties": [
{
"id": "color",
"value": {
"mode": "fixed",
"fixedColor": "#3987e5"
}
}
]
}
]
}
}
]
}