멀티 클러스터 및 Thanos/Federation 환경에서 타 리전 사이트 간의 데이터 동기화 파이프라인(Cross-Site Replication) 상태만 정밀 관제할 수 있도록 최상단에 $cluster 동적 선택 단추와 연동(Cascading) 필터를 완전히 내장한 4. Replication 전용 독립형 대시보드의 Metrics v3 리빌딩 스펙입니다.
이 대시보드는 최신 MinIO Metrics v3 스펙의 /minio/metrics/v3/cluster/replication 엔드포인트에서 수집되는 핵심 지표들을 기반으로 작동합니다. 리전 간 대역폭 포화, WAN 구간 라우팅 장애, 혹은 대상 클러스터 다운으로 인한 Replication Backlog(Bytes/Count) 적체 현상과 동기화 실패(Failed Count), 그리고 리전 간 링크 레이턴시(Link Latency)를 실시간 격리 분석합니다.
그라파나(Grafana)의 Import Dashboard 메뉴에 복사하여 즉시 배포할 수 있습니다. 모든 하부 패널의 PromQL 인덱스에 {cluster="$cluster", namespace="$namespace"} 가드레일 필터가 강제 인젝션되어 다중 리전 간 지표 오탐을 원천 차단합니다.
{
"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": 400,
"title": "🚨 1. TARGET REPLICATION VITALS & BACKLOG LOGIC",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "orange",
"value": 107374182400
},
{
"color": "red",
"value": 536870912000
}
]
},
"unit": "decbytes"
},
"overrides": []
},
"gridPos": {
"h": 5,
"w": 6,
"x": 0,
"y": 1
},
"id": 401,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "center",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "value"
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
"editorMode": "code",
"expr": "sum(minio_cluster_replication_pending_bytes{cluster=\"$cluster\", namespace=\"$namespace\"})",
"legendFormat": "Pending Bytes",
"refId": "A"
}
],
"title": "Replication Pending Backlog Size (Bytes)",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "orange",
"value": 10000
},
{
"color": "red",
"value": 50000
}
]
},
"unit": "short"
},
"overrides": []
},
"gridPos": {
"h": 5,
"w": 6,
"x": 6,
"y": 1
},
"id": 402,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "center",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "value"
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
"editorMode": "code",
"expr": "sum(minio_cluster_replication_pending_count{cluster=\"$cluster\", namespace=\"$namespace\"})",
"legendFormat": "Pending Objects",
"refId": "A"
}
],
"title": "Replication Pending Objects Count",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 1
}
]
},
"unit": "pps"
},
"overrides": []
},
"gridPos": {
"h": 5,
"w": 6,
"x": 12,
"y": 1
},
"id": 403,
"options": {
"colorMode": "value",
"graphMode": "none",
"justifyMode": "center",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "value"
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
"editorMode": "code",
"expr": "sum(rate(minio_cluster_replication_failed_count{cluster=\"$cluster\", namespace=\"$namespace\"}[5m]))",
"legendFormat": "Failed Rate",
"refId": "A"
}
],
"title": "Replication Failed Transfer Speed (Objects/s)",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "orange",
"value": 0.2
},
{
"color": "red",
"value": 0.5
}
]
},
"unit": "s"
},
"overrides": []
},
"gridPos": {
"h": 5,
"w": 6,
"x": 18,
"y": 1
},
"id": 404,
"options": {
"colorMode": "value",
"graphMode": "none",
"justifyMode": "center",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "value"
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
"editorMode": "code",
"expr": "max(minio_cluster_replication_link_latency_seconds{cluster=\"$cluster\", namespace=\"$namespace\"})",
"legendFormat": "Max Latency",
"refId": "A"
}
],
"title": "Worst Cross-Site Link Latency (Seconds)",
"type": "stat"
},
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 6
},
"id": 500,
"title": "📈 2. CROSS-SITE BANDWIDTH THROUGHPUT & LATENCY TRENDS",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisBorderShow": false,
"axisPlacement": "auto",
"drawStyle": "line",
"fillOpacity": 10,
"lineInterpolation": "smooth",
"lineWidth": 2,
"showPoints": "none"
},
"mappings": [],
"unit": "Bps"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 12,
"x": 0,
"y": 7
},
"id": 501,
"options": {
"legend": {
"calcs": [
"mean",
"max"
],
"displayMode": "table",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
"editorMode": "code",
"expr": "sum(rate(minio_cluster_replication_sent_bytes_total{cluster=\"$cluster\", namespace=\"$namespace\"}[5m])) by (server)",
"legendFormat": "Sent from {{server}}",
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
"editorMode": "code",
"expr": "sum(rate(minio_cluster_replication_received_bytes_total{cluster=\"$cluster\", namespace=\"$namespace\"}[5m])) by (server)",
"legendFormat": "Received by {{server}}",
"refId": "B"
}
],
"title": "Cross-Site Replication Bandwidth Velocity (Sent/Received Bps)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisBorderShow": false,
"axisPlacement": "auto",
"drawStyle": "line",
"fillOpacity": 5,
"lineInterpolation": "smooth",
"lineWidth": 2,
"showPoints": "none"
},
"mappings": [],
"unit": "s"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 12,
"x": 12,
"y": 7
},
"id": 502,
"options": {
"legend": {
"calcs": [
"mean",
"max"
],
"displayMode": "table",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
"editorMode": "code",
"expr": "minio_cluster_replication_link_latency_seconds{cluster=\"$cluster\", namespace=\"$namespace\"}",
"legendFormat": "Link: {{server}} -> Target",
"refId": "A"
}
],
"title": "Cross-Site Replication Link Latency Timeline",
"type": "timeseries"
},
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 14
},
"id": 600,
"title": "📋 3. DETAILED BACKLOG ACCUMULATION TRENDS",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisBorderShow": false,
"axisPlacement": "auto",
"drawStyle": "line",
"fillOpacity": 5,
"lineInterpolation": "smooth",
"lineWidth": 2,
"showPoints": "none"
},
"mappings": []
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 24,
"x": 0,
"y": 15
},
"id": 601,
"options": {
"legend": {
"calcs": [
"max",
"lastNotNull"
],
"displayMode": "table",
"placement": "right",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
"editorMode": "code",
"expr": "minio_cluster_replication_pending_count{cluster=\"$cluster\", namespace=\"$namespace\"}",
"legendFormat": "Pending: {{server}}",
"refId": "A"
}
],
"title": "Replication Pending Backlog Count Profile per Node Server",
"type": "timeseries"
}
],
"refresh": "10s",
"schemaVersion": 38,
"style": "dark",
"tags": [
"AIStor",
"Metrics-V3",
"Replication-Only",
"Multi-Cluster-WAN"
],
"templating": {
"list": [
{
"current": {},
"hide": 0,
"includeAll": false,
"label": "Data Source",
"name": "datasource",
"options": [],
"query": "prometheus",
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"type": "datasource"
},
{
"current": {},
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
"definition": "label_values(minio_cluster_replication_pending_bytes, cluster)",
"hide": 0,
"includeAll": true,
"multi": false,
"label": "AIStor Cluster",
"name": "cluster",
"options": [],
"query": {
"query": "label_values(minio_cluster_replication_pending_bytes, cluster)",
"refId": "ClusterVariableQuery"
},
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"sort": 1,
"type": "query"
},
{
"current": {},
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
"definition": "label_values(minio_cluster_replication_pending_bytes{cluster=\"$cluster\"}, namespace)",
"hide": 0,
"includeAll": false,
"label": "Namespace",
"name": "namespace",
"options": [],
"query": {
"query": "label_values(minio_cluster_replication_pending_bytes{cluster=\"$cluster\"}, namespace)",
"refId": "NamespaceVariableQuery"
},
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"sort": 1,
"type": "query"
}
]
},
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"5s",
"10s",
"30s"
]
},
"timezone": "browser",
"title": "AIStor Operations - 4. Replication (Multi-Cluster v3)",
"version": 2
}
Worst Cross-Site Link Latency 지표가 수 초(>0.5s) 이상 튀어 오르기 시작하고, 동시간대에 Replication Pending Backlog Size (Bytes) 게이지의 숫자가 GB 단위를 넘어 TB 방향으로 가파르게 치솟는 현상입니다.Failed Transfer Speed 패널에 상시 0이 아닌 수치가 찍히기 시작한다면, 네트워크의 단순 지연이 아니라 데이터 정합성 실패(예: 암호화 키 불일치, 오브젝트 변형, 불량 IAM 정책 권한 탈락 등)로 인해 복제 프로세스가 강제로 드롭(Abort)되고 있음을 시사합니다.