{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"enable": true,
"hide": true,
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 1,
"id": null,
"links": [],
"liveNow": false,
"panels": [
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 0
},
"id": 100,
"title": "1. Bucket ListObjectsV2 Bottleneck & Lock Contention Identification",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"custom": {
"drawStyle": "line",
"lineInterpolation": "smooth",
"lineWidth": 2
},
"unit": "short"
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 8,
"x": 0,
"y": 1
},
"id": 1,
"options": {
"legend": {
"calcs": [
"mean",
"max",
"lastNotNull"
],
"displayMode": "table",
"placement": "bottom"
},
"tooltip": {
"mode": "multi"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"expr": "topk(10, minio_cluster_usage_buckets_objects_count{namespace=~\"$namespace\"})",
"legendFormat": "{{bucket}} (Objects)",
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"expr": "topk(5, minio_cluster_usage_buckets_versions_count{namespace=~\"$namespace\"})",
"legendFormat": "{{bucket}} (Versions)",
"refId": "B"
}
],
"title": "Top 10 Buckets by Object & Version Count (Metadata Load)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"custom": {
"align": "auto",
"displayMode": "auto"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "orange",
"value": 5
},
{
"color": "red",
"value": 30
}
]
}
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "Objects Count"
},
"properties": [
{
"id": "unit",
"value": "short"
},
{
"id": "custom.displayMode",
"value": "color-background"
}
]
},
{
"matcher": {
"id": "byName",
"options": "Versions Count"
},
"properties": [
{
"id": "unit",
"value": "short"
},
{
"id": "custom.displayMode",
"value": "color-background"
}
]
},
{
"matcher": {
"id": "byName",
"options": "Total Bytes"
},
"properties": [
{
"id": "unit",
"value": "bytes"
}
]
}
]
},
"gridPos": {
"h": 8,
"w": 8,
"x": 8,
"y": 1
},
"id": 10,
"options": {
"cellHeight": "sm",
"footer": {
"countRows": false,
"fields": "",
"reducer": [
"sum"
],
"show": false
},
"sortBy": [
{
"desc": true,
"displayName": "Objects Count"
}
]
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"expr": "topk(10, minio_cluster_usage_buckets_objects_count{namespace=~\"$namespace\"})",
"format": "table",
"instant": true,
"legendFormat": "Objects Count",
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"expr": "minio_cluster_usage_buckets_versions_count{namespace=~\"$namespace\"}",
"format": "table",
"instant": true,
"legendFormat": "Versions Count",
"refId": "B"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"expr": "minio_cluster_usage_buckets_total_bytes{namespace=~\"$namespace\"}",
"format": "table",
"instant": true,
"legendFormat": "Total Bytes",
"refId": "C"
}
],
"transformations": [
{
"id": "joinByField",
"options": {
"byField": "bucket",
"mode": "outer"
}
},
{
"id": "organize",
"options": {
"excludeByName": {
"Time": true,
"Time 1": true,
"Time 2": true,
"Time 3": true
},
"indexByName": {
"bucket": 0,
"Value #A": 1,
"Value #B": 2,
"Value #C": 3
},
"renameByName": {
"Value #A": "Objects Count",
"Value #B": "Versions Count",
"Value #C": "Total Bytes"
}
}
}
],
"title": "High-Risk Buckets Ranking Table (List Scan Bottleneck by Objects/Versions)",
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"custom": {
"drawStyle": "line",
"lineInterpolation": "smooth",
"lineWidth": 2
},
"unit": "s"
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 8,
"x": 16,
"y": 1
},
"id": 2,
"options": {
"legend": {
"calcs": [
"mean",
"max"
],
"displayMode": "table",
"placement": "bottom"
},
"tooltip": {
"mode": "multi"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"expr": "topk(10, sum by (name) (rate(minio_api_requests_duration_total{namespace=~\"$namespace\", name=~\"(?i).*(put|multipart|delete|complete).*\"}[5m])) / clamp_min(sum by (name) (rate(minio_api_requests_total{namespace=~\"$namespace\", name=~\"(?i).*(put|multipart|delete|complete).*\"}[5m])), 0.001))",
"legendFormat": "{{name}}",
"refId": "A"
}
],
"title": "Lock-Holding APIs Duration (Put/CompleteMPU/Delete)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"custom": {
"drawStyle": "line",
"lineInterpolation": "smooth",
"lineWidth": 2
},
"unit": "s"
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 9
},
"id": 3,
"options": {
"legend": {
"calcs": [
"mean",
"max"
],
"displayMode": "table",
"placement": "bottom"
},
"tooltip": {
"mode": "multi"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"expr": "minio_locks_dist_avg_latency",
"legendFormat": "Cluster Avg Lock Latency",
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"expr": "sum(minio_locks_waiting_total{namespace=~\"$namespace\"}) / clamp_min(count(count by (instance) (minio_api_requests_total{namespace=~\"$namespace\"})), 1)",
"legendFormat": "Avg Waiting Locks / Pod",
"refId": "B"
}
],
"title": "Cluster Lock Latency & Waiting Queue",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"custom": {
"drawStyle": "line",
"lineInterpolation": "linear",
"lineWidth": 2
},
"unit": "reqps"
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 9
},
"id": 4,
"options": {
"legend": {
"calcs": [
"mean",
"max"
],
"displayMode": "table",
"placement": "bottom"
},
"tooltip": {
"mode": "multi"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"expr": "sum(rate(minio_api_requests_total{namespace=~\"$namespace\", name=~\"(?i).*(list).*\"}[5m]))",
"legendFormat": "Cluster Total List req/s",
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"expr": "sum(rate(minio_api_requests_total{namespace=~\"$namespace\", name=~\"(?i).*(list).*\"}[5m])) / clamp_min(count(count by (instance) (minio_api_requests_total{namespace=~\"$namespace\"})), 1)",
"legendFormat": "Per-Pod Avg List req/s",
"refId": "B"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"expr": "sum(rate(minio_api_requests_duration_total{namespace=~\"$namespace\", name=~\"(?i).*(list).*\"}[5m])) / clamp_min(sum(rate(minio_api_requests_total{namespace=~\"$namespace\", name=~\"(?i).*(list).*\"}[5m])), 0.001)",
"legendFormat": "List Avg Duration (s)",
"refId": "C"
}
],
"title": "List Request Rate & Duration (Cluster Total vs Per-Pod Avg)",
"type": "timeseries"
},
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 17
},
"id": 200,
"title": "2. Internal Goroutine Amplification & Disk Metadata Contention",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"custom": {
"drawStyle": "line",
"lineInterpolation": "linear",
"lineWidth": 2
},
"unit": "short"
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 8,
"x": 0,
"y": 18
},
"id": 5,
"options": {
"legend": {
"calcs": [
"max",
"lastNotNull"
],
"displayMode": "table",
"placement": "bottom"
},
"tooltip": {
"mode": "multi"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"expr": "topk(5, go_goroutines{namespace=~\"$namespace\"} or minio_process_goroutines{namespace=~\"$namespace\"})",
"legendFormat": "Pod Goroutines: {{instance}}",
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"expr": "avg(go_goroutines{namespace=~\"$namespace\"} or minio_process_goroutines{namespace=~\"$namespace\"})",
"legendFormat": "Cluster Avg Goroutines / Pod",
"refId": "B"
}
],
"title": "Pod Goroutine Spike (Internal Parallel Scan Amplification)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"custom": {
"drawStyle": "line",
"lineInterpolation": "linear",
"lineWidth": 2
},
"unit": "iops"
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 8,
"x": 8,
"y": 18
},
"id": 6,
"options": {
"legend": {
"calcs": [
"mean",
"max"
],
"displayMode": "table",
"placement": "bottom"
},
"tooltip": {
"mode": "multi"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"expr": "topk(10, rate(node_disk_reads_completed_total{namespace=~\"$namespace\"}[5m]) or rate(minio_node_drive_reads_total{namespace=~\"$namespace\"}[5m]))",
"legendFormat": "Read IOPS: {{instance}} - {{device}}",
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"expr": "topk(10, rate(node_disk_writes_completed_total{namespace=~\"$namespace\"}[5m]) or rate(minio_node_drive_writes_total{namespace=~\"$namespace\"}[5m]))",
"legendFormat": "Write IOPS: {{instance}} - {{device}}",
"refId": "B"
}
],
"title": "Drive IOPS (Random Small Read Spike by List Scan)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"custom": {
"drawStyle": "line",
"lineInterpolation": "linear",
"lineWidth": 2
},
"unit": "s"
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 8,
"x": 16,
"y": 18
},
"id": 7,
"options": {
"legend": {
"calcs": [
"mean",
"max"
],
"displayMode": "table",
"placement": "bottom"
},
"tooltip": {
"mode": "multi"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"expr": "topk(10, rate(minio_node_drive_total_waiting_time_seconds{namespace=~\"$namespace\"}[5m]) / clamp_min(rate(minio_node_drive_total_waiting{namespace=~\"$namespace\"}[5m]), 0.001))",
"legendFormat": "Drive Wait Time: {{instance}} - {{drive}}",
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"expr": "topk(10, rate(node_disk_io_time_seconds_total{namespace=~\"$namespace\"}[5m]))",
"legendFormat": "Disk Saturation: {{instance}} - {{device}}",
"refId": "B"
}
],
"title": "Drive Waiting Time & Saturation (Delaying Commit fsync)",
"type": "timeseries"
}
],
"refresh": "30s",
"schemaVersion": 38,
"style": "dark",
"tags": [
"minio",
"aistor",
"v3",
"duration_total",
"locks"
],
"templating": {
"list": [
{
"current": {},
"hide": 0,
"label": "Data Source",
"name": "DS_PROMETHEUS",
"options": [],
"query": "prometheus",
"refresh": 1,
"regex": "",
"type": "datasource"
},
{
"allValue": ".*",
"current": {
"selected": true,
"text": "All",
"value": "$__all"
},
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"definition": "label_values(minio_api_requests_total, namespace)",
"hide": 0,
"includeAll": true,
"label": "Namespace",
"multi": false,
"name": "namespace",
"options": [],
"query": {
"query": "label_values(minio_api_requests_total, namespace)",
"refId": "Prometheus-Namespace-Variable"
},
"refresh": 2,
"regex": "",
"type": "query"
},
{
"allValue": ".*",
"current": {
"selected": true,
"text": "All",
"value": "$__all"
},
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"definition": "label_values(minio_api_requests_total, bucket)",
"hide": 0,
"includeAll": true,
"label": "Bucket",
"multi": true,
"name": "bucket",
"options": [],
"query": {
"query": "label_values(minio_api_requests_total, bucket)",
"refId": "Prometheus-Bucket-Variable"
},
"refresh": 2,
"regex": "",
"type": "query"
}
]
},
"time": {
"from": "now-24h",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m"
]
},
"timezone": "browser",
"title": "MinIO AIStor v3 - Bucket Metadata & Lock Bottleneck Diagnostic",
"version": 8
}