{
"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. Correlation: List Scan vs Exclusive Lock Holding API Latency",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"custom": {
"drawStyle": "line",
"lineInterpolation": "smooth",
"lineWidth": 2
},
"unit": "s"
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 8,
"x": 0,
"y": 1
},
"id": 1,
"options": {
"legend": {
"calcs": [
"mean",
"max"
],
"displayMode": "table",
"placement": "bottom"
},
"tooltip": {
"mode": "multi"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"expr": "sum by (bucket) (rate(minio_api_time_seconds_sum{namespace=~\"$namespace\", bucket=~\"$bucket\", api=~\"s3.ListObjectsV2|s3.ListObjects|ListObjectsV2|ListObjects\"}[5m])) / clamp_min(sum by (bucket) (rate(minio_api_time_seconds_count{namespace=~\"$namespace\", bucket=~\"$bucket\", api=~\"s3.ListObjectsV2|s3.ListObjects|ListObjectsV2|ListObjects\"}[5m])), 0.001)",
"legendFormat": "List Latency: {{bucket}}",
"refId": "A"
}
],
"title": "ListObjectsV2 Avg Execution Duration (s)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"custom": {
"drawStyle": "line",
"lineInterpolation": "smooth",
"lineWidth": 2
},
"unit": "s"
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 8,
"x": 8,
"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 (bucket, api) (rate(minio_api_time_seconds_sum{namespace=~\"$namespace\", bucket=~\"$bucket\", api=~\"(?i).*(put|multipart|delete|complete).*\"}[5m])) / clamp_min(sum by (bucket, api) (rate(minio_api_time_seconds_count{namespace=~\"$namespace\", bucket=~\"$bucket\", api=~\"(?i).*(put|multipart|delete|complete).*\"}[5m])), 0.001))",
"legendFormat": "{{bucket}} - {{api}}",
"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": 8,
"x": 16,
"y": 1
},
"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"
},
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 9
},
"id": 200,
"title": "2. List Load Breakdown & Internal Goroutine Amplification",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"custom": {
"drawStyle": "line",
"lineInterpolation": "linear",
"lineWidth": 2
},
"unit": "reqps"
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 10
},
"id": 4,
"options": {
"legend": {
"calcs": [
"mean",
"max"
],
"displayMode": "table",
"placement": "bottom"
},
"tooltip": {
"mode": "multi"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"expr": "topk(10, sum by (bucket) (rate(minio_api_requests_total{namespace=~\"$namespace\", bucket=~\"$bucket\", api=~\"s3.ListObjectsV2|s3.ListObjects|ListObjectsV2|ListObjects\"}[5m])))",
"legendFormat": "Cluster Total: {{bucket}}",
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"expr": "topk(10, sum by (bucket) (rate(minio_api_requests_total{namespace=~\"$namespace\", bucket=~\"$bucket\", api=~\"s3.ListObjectsV2|s3.ListObjects|ListObjectsV2|ListObjects\"}[5m])) / clamp_min(scalar(count(count by (instance) (minio_api_requests_total{namespace=~\"$namespace\"}))), 1))",
"legendFormat": "Per-Pod Avg: {{bucket}}",
"refId": "B"
}
],
"title": "ListObjectsV2 Rate (Cluster Total vs Per-Pod Avg)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"custom": {
"drawStyle": "line",
"lineInterpolation": "linear",
"lineWidth": 2
},
"unit": "short"
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 10
},
"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"
},
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 18
},
"id": 300,
"title": "3. Disk Metadata IOPS vs Waiting Time (Metadata Contention Evidence)",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"custom": {
"drawStyle": "line",
"lineInterpolation": "linear",
"lineWidth": 2
},
"unit": "iops"
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 19
},
"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 (Metadata Scan): {{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": 12,
"x": 12,
"y": 19
},
"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 (IO Time): {{instance}} - {{device}}",
"refId": "B"
}
],
"title": "Drive Waiting Time & Saturation (Delaying Commit fsync)",
"type": "timeseries"
}
],
"refresh": "30s",
"schemaVersion": 38,
"style": "dark",
"tags": [
"minio",
"aistor",
"v3",
"list-correlation",
"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 - ListObjects Contention & Lock Correlation Diagnostic",
"version": 1
}