26Y27f1

QK·2026년 7월 27일
{
  "__inputs": [
    {
      "name": "DS_PROMETHEUS",
      "label": "Prometheus",
      "description": "MinIO AIStor 메트릭을 스크레이핑하는 Prometheus 데이터소스",
      "type": "datasource",
      "pluginId": "prometheus",
      "pluginName": "Prometheus"
    }
  ],
  "__requires": [
    { "type": "grafana", "id": "grafana", "name": "Grafana", "version": "10.4.0" },
    { "type": "datasource", "id": "prometheus", "name": "Prometheus", "version": "1.0.0" },
    { "type": "panel", "id": "timeseries", "name": "Time series", "version": "" },
    { "type": "panel", "id": "stat", "name": "Stat", "version": "" },
    { "type": "panel", "id": "table", "name": "Table", "version": "" },
    { "type": "panel", "id": "bargauge", "name": "Bar gauge", "version": "" },
    { "type": "panel", "id": "histogram", "name": "Histogram", "version": "" },
    { "type": "panel", "id": "row", "name": "Row", "version": "" }
  ],
  "id": null,
  "uid": "minio-aistor-perf-01",
  "title": "MinIO AIStor Performance (1/2) - Requests & Disk/Network",
  "description": "128 노드 x 20 디스크(총 2560 디스크) 규모의 AIStor 클러스터를 위한 성능 대시보드. 1) API 요청량/Verb별 분석, 2) 노드별 Disk/Network. 개별 디스크 나열 대신 분포(histogram)와 Top-N 이상치 테이블로 가시성을 확보했습니다.",
  "tags": ["minio", "aistor", "performance", "s3"],
  "timezone": "browser",
  "editable": true,
  "graphTooltip": 1,
  "refresh": "30s",
  "schemaVersion": 39,
  "version": 1,
  "time": { "from": "now-6h", "to": "now" },
  "timepicker": {
    "refresh_intervals": ["10s", "30s", "1m", "5m", "15m", "30m", "1h"]
  },
  "templating": {
    "list": [
      {
        "name": "datasource",
        "type": "datasource",
        "query": "prometheus",
        "hide": 0,
        "label": "Prometheus",
        "current": {}
      },
      {
        "name": "server",
        "type": "query",
        "datasource": { "type": "prometheus", "uid": "${datasource}" },
        "query": "label_values(minio_system_drive_used_bytes, server)",
        "label": "Node (drill-down, optional)",
        "hide": 0,
        "includeAll": true,
        "multi": true,
        "allValue": ".*",
        "current": { "text": "All", "value": "$__all" },
        "refresh": 2,
        "sort": 1
      },
      {
        "name": "topn",
        "type": "custom",
        "query": "10,15,20,30",
        "label": "Top N",
        "hide": 0,
        "current": { "text": "15", "value": "15" },
        "options": [
          { "text": "10", "value": "10", "selected": false },
          { "text": "15", "value": "15", "selected": true },
          { "text": "20", "value": "20", "selected": false },
          { "text": "30", "value": "30", "selected": false }
        ]
      }
    ]
  },
  "panels": [
    {
      "id": 100,
      "type": "row",
      "title": "1. 요청(Request) 개요 - 클러스터 전체",
      "gridPos": { "h": 1, "w": 24, "x": 0, "y": 0 },
      "collapsed": false,
      "panels": []
    },
    {
      "id": 1,
      "type": "stat",
      "title": "Total Request Rate (req/s)",
      "description": "minio_api_requests_total 기준 클러스터 전체 초당 요청 수",
      "gridPos": { "h": 4, "w": 4, "x": 0, "y": 1 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        {
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "expr": "sum(rate(minio_api_requests_total{server=~\"$server\"}[5m]))",
          "legendFormat": "req/s",
          "refId": "A"
        }
      ],
      "fieldConfig": {
        "defaults": {
          "unit": "reqps",
          "decimals": 1,
          "color": { "mode": "thresholds" },
          "thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] }
        },
        "overrides": []
      },
      "options": { "graphMode": "area", "reduceOptions": { "calcs": ["lastNotNull"] }, "textMode": "auto" }
    },
    {
      "id": 2,
      "type": "stat",
      "title": "Error Rate (4xx+5xx) %",
      "description": "전체 요청 대비 4xx/5xx 에러 비율. 급격한 상승 시 verb별 패널에서 원인 파악",
      "gridPos": { "h": 4, "w": 4, "x": 4, "y": 1 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        {
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "expr": "100 * sum(rate(minio_api_requests_errors_total{server=~\"$server\"}[5m])) / clamp_min(sum(rate(minio_api_requests_total{server=~\"$server\"}[5m])), 1)",
          "legendFormat": "error %",
          "refId": "A"
        }
      ],
      "fieldConfig": {
        "defaults": {
          "unit": "percent",
          "decimals": 2,
          "color": { "mode": "thresholds" },
          "thresholds": {
            "mode": "absolute",
            "steps": [
              { "color": "green", "value": null },
              { "color": "yellow", "value": 1 },
              { "color": "red", "value": 5 }
            ]
          }
        },
        "overrides": []
      },
      "options": { "graphMode": "area", "reduceOptions": { "calcs": ["lastNotNull"] }, "textMode": "auto" }
    },
    {
      "id": 3,
      "type": "stat",
      "title": "Requests Waiting (현재)",
      "description": "minio_api_requests_waiting_total - 처리 대기 중인 요청 수. 지속 상승은 처리 능력 부족 신호",
      "gridPos": { "h": 4, "w": 4, "x": 8, "y": 1 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        {
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "expr": "sum(minio_api_requests_waiting_total{server=~\"$server\"})",
          "legendFormat": "waiting",
          "refId": "A"
        }
      ],
      "fieldConfig": {
        "defaults": {
          "unit": "short",
          "color": { "mode": "thresholds" },
          "thresholds": {
            "mode": "absolute",
            "steps": [
              { "color": "green", "value": null },
              { "color": "yellow", "value": 100 },
              { "color": "red", "value": 1000 }
            ]
          }
        },
        "overrides": []
      },
      "options": { "graphMode": "area", "reduceOptions": { "calcs": ["lastNotNull"] }, "textMode": "auto" }
    },
    {
      "id": 4,
      "type": "stat",
      "title": "Requests Inflight (현재)",
      "description": "minio_api_requests_inflight_total - 현재 처리 중인 요청 수 (goroutine 급증과 상관관계 확인용)",
      "gridPos": { "h": 4, "w": 4, "x": 12, "y": 1 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        {
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "expr": "sum(minio_api_requests_inflight_total{server=~\"$server\"})",
          "legendFormat": "inflight",
          "refId": "A"
        }
      ],
      "fieldConfig": {
        "defaults": { "unit": "short", "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] } },
        "overrides": []
      },
      "options": { "graphMode": "area", "reduceOptions": { "calcs": ["lastNotNull"] }, "textMode": "auto" }
    },
    {
      "id": 5,
      "type": "stat",
      "title": "Rejected Requests Rate",
      "description": "인증/헤더/타임스탬프/형식/미구현 사유로 거부된 요청 합계 (초당). 클라이언트 이슈 식별용",
      "gridPos": { "h": 4, "w": 4, "x": 16, "y": 1 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        {
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "expr": "sum(rate(minio_api_requests_rejected_auth_total{server=~\"$server\"}[5m])) + sum(rate(minio_api_requests_rejected_header_total{server=~\"$server\"}[5m])) + sum(rate(minio_api_requests_rejected_timestamp_total{server=~\"$server\"}[5m])) + sum(rate(minio_api_requests_rejected_invalid_total{server=~\"$server\"}[5m])) + sum(rate(minio_api_requests_rejected_notimplemented_total{server=~\"$server\"}[5m]))",
          "legendFormat": "rejected/s",
          "refId": "A"
        }
      ],
      "fieldConfig": {
        "defaults": { "unit": "reqps", "decimals": 2, "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }, { "color": "yellow", "value": 1 }, { "color": "red", "value": 10 }] } },
        "overrides": []
      },
      "options": { "graphMode": "area", "reduceOptions": { "calcs": ["lastNotNull"] }, "textMode": "auto" }
    },
    {
      "id": 6,
      "type": "stat",
      "title": "Canceled Requests Rate",
      "description": "클라이언트가 완료 전 취소한 요청 비율 (초당). 클라이언트 타임아웃/네트워크 문제 신호일 수 있음",
      "gridPos": { "h": 4, "w": 4, "x": 20, "y": 1 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        {
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "expr": "sum(rate(minio_api_requests_canceled_total{server=~\"$server\"}[5m]))",
          "legendFormat": "canceled/s",
          "refId": "A"
        }
      ],
      "fieldConfig": {
        "defaults": { "unit": "reqps", "decimals": 2, "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }, { "color": "yellow", "value": 1 }] } },
        "overrides": []
      },
      "options": { "graphMode": "area", "reduceOptions": { "calcs": ["lastNotNull"] }, "textMode": "auto" }
    },

    {
      "id": 101,
      "type": "row",
      "title": "1-1. Verb(오퍼레이션)별 요청 분석",
      "gridPos": { "h": 1, "w": 24, "x": 0, "y": 5 },
      "collapsed": false,
      "panels": []
    },
    {
      "id": 7,
      "type": "timeseries",
      "title": "Request Rate by Verb (Top 10)",
      "description": "minio_api_requests_total{name=...} 기준 오퍼레이션(GetObject/PutObject/HeadObject 등)별 요청률 상위 10개",
      "gridPos": { "h": 8, "w": 12, "x": 0, "y": 6 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        {
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "expr": "topk(10, sum by (name) (rate(minio_api_requests_total{server=~\"$server\"}[5m])))",
          "legendFormat": "{{name}}",
          "refId": "A"
        }
      ],
      "fieldConfig": {
        "defaults": { "unit": "reqps", "custom": { "drawStyle": "line", "fillOpacity": 15, "stacking": { "mode": "normal" }, "showPoints": "never" } },
        "overrides": []
      },
      "options": { "legend": { "displayMode": "table", "placement": "right", "calcs": ["mean", "max", "lastNotNull"] }, "tooltip": { "mode": "multi" } }
    },
    {
      "id": 8,
      "type": "timeseries",
      "title": "Error Rate by Verb (4xx / 5xx)",
      "description": "오퍼레이션별 4xx/5xx 에러율. 5xx는 서버 문제, 4xx는 클라이언트/권한 문제일 가능성이 높음",
      "gridPos": { "h": 8, "w": 12, "x": 12, "y": 6 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        {
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "expr": "topk(10, sum by (name) (rate(minio_api_requests_4xx_errors_total{server=~\"$server\"}[5m])))",
          "legendFormat": "4xx {{name}}",
          "refId": "A"
        },
        {
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "expr": "topk(10, sum by (name) (rate(minio_api_requests_5xx_errors_total{server=~\"$server\"}[5m])))",
          "legendFormat": "5xx {{name}}",
          "refId": "B"
        }
      ],
      "fieldConfig": {
        "defaults": { "unit": "reqps", "custom": { "drawStyle": "line", "fillOpacity": 10, "showPoints": "never" } },
        "overrides": [
          { "matcher": { "id": "byRegexp", "options": "5xx.*" }, "properties": [{ "id": "color", "value": { "mode": "fixed", "fixedColor": "red" } }] },
          { "matcher": { "id": "byRegexp", "options": "4xx.*" }, "properties": [{ "id": "color", "value": { "mode": "fixed", "fixedColor": "orange" } }] }
        ]
      },
      "options": { "legend": { "displayMode": "table", "placement": "right", "calcs": ["mean", "max"] }, "tooltip": { "mode": "multi" } }
    },
    {
      "id": 9,
      "type": "bargauge",
      "title": "Rejected Requests by Reason (5m rate)",
      "description": "요청이 거부된 사유별 분류: 인증실패 / 헤더오류 / 타임스탬프오류 / 형식오류 / 미구현 API",
      "gridPos": { "h": 8, "w": 8, "x": 0, "y": 14 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum(rate(minio_api_requests_rejected_auth_total{server=~\"$server\"}[5m]))", "legendFormat": "auth", "refId": "A" },
        { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum(rate(minio_api_requests_rejected_header_total{server=~\"$server\"}[5m]))", "legendFormat": "header", "refId": "B" },
        { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum(rate(minio_api_requests_rejected_timestamp_total{server=~\"$server\"}[5m]))", "legendFormat": "timestamp", "refId": "C" },
        { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum(rate(minio_api_requests_rejected_invalid_total{server=~\"$server\"}[5m]))", "legendFormat": "invalid", "refId": "D" },
        { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum(rate(minio_api_requests_rejected_notimplemented_total{server=~\"$server\"}[5m]))", "legendFormat": "not_implemented", "refId": "E" }
      ],
      "fieldConfig": { "defaults": { "unit": "reqps", "decimals": 3, "min": 0 }, "overrides": [] },
      "options": { "orientation": "horizontal", "displayMode": "gradient", "reduceOptions": { "calcs": ["lastNotNull"] } }
    },
    {
      "id": 10,
      "type": "timeseries",
      "title": "Incoming / Waiting / Inflight (클러스터 합계 추이)",
      "description": "요청 처리 파이프라인 포화도 추적. waiting이 지속적으로 쌓이면 처리 능력 대비 요청량 과다",
      "gridPos": { "h": 8, "w": 16, "x": 8, "y": 14 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum(minio_api_requests_incoming_total{server=~\"$server\"})", "legendFormat": "incoming", "refId": "A" },
        { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum(minio_api_requests_waiting_total{server=~\"$server\"})", "legendFormat": "waiting", "refId": "B" },
        { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum(minio_api_requests_inflight_total{server=~\"$server\"})", "legendFormat": "inflight", "refId": "C" }
      ],
      "fieldConfig": { "defaults": { "unit": "short", "custom": { "drawStyle": "line", "fillOpacity": 10, "showPoints": "never" } }, "overrides": [] },
      "options": { "legend": { "displayMode": "list", "placement": "bottom" }, "tooltip": { "mode": "multi" } }
    },

    {
      "id": 102,
      "type": "row",
      "title": "2. 노드/디스크 개요 (128 노드 x 20 디스크 = 2560 디스크)",
      "gridPos": { "h": 1, "w": 24, "x": 0, "y": 22 },
      "collapsed": false,
      "panels": []
    },
    {
      "id": 11,
      "type": "stat",
      "title": "Online Nodes / Total",
      "description": "minio_cluster_health_nodes_online_count / minio_cluster_health_nodes_offline_count",
      "gridPos": { "h": 4, "w": 6, "x": 0, "y": 23 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "minio_cluster_health_nodes_online_count", "legendFormat": "online", "refId": "A" },
        { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "minio_cluster_health_nodes_online_count + minio_cluster_health_nodes_offline_count", "legendFormat": "total", "refId": "B" }
      ],
      "fieldConfig": { "defaults": { "unit": "short", "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] } }, "overrides": [] },
      "options": { "graphMode": "none", "reduceOptions": { "calcs": ["lastNotNull"] }, "textMode": "value_and_name" }
    },
    {
      "id": 12,
      "type": "stat",
      "title": "Online Drives / Total (기대값 2560)",
      "description": "minio_cluster_health_drives_online_count / minio_cluster_health_drives_count. 2560에서 벗어나면 즉시 확인 필요",
      "gridPos": { "h": 4, "w": 6, "x": 6, "y": 23 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "minio_cluster_health_drives_online_count", "legendFormat": "online", "refId": "A" },
        { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "minio_cluster_health_drives_count", "legendFormat": "total", "refId": "B" }
      ],
      "fieldConfig": {
        "defaults": {
          "unit": "short",
          "color": { "mode": "thresholds" },
          "thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] }
        },
        "overrides": []
      },
      "options": { "graphMode": "none", "reduceOptions": { "calcs": ["lastNotNull"] }, "textMode": "value_and_name" }
    },
    {
      "id": 13,
      "type": "stat",
      "title": "Offline Drives",
      "description": "minio_cluster_health_drives_offline_count - 0이 아니면 경고",
      "gridPos": { "h": 4, "w": 6, "x": 12, "y": 23 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [{ "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "minio_cluster_health_drives_offline_count", "legendFormat": "offline", "refId": "A" }],
      "fieldConfig": {
        "defaults": {
          "unit": "short",
          "color": { "mode": "thresholds" },
          "thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }, { "color": "red", "value": 1 }] }
        },
        "overrides": []
      },
      "options": { "graphMode": "none", "reduceOptions": { "calcs": ["lastNotNull"] }, "textMode": "auto" }
    },
    {
      "id": 14,
      "type": "stat",
      "title": "Healing Drives (전체 pool/set 합계)",
      "description": "minio_cluster_erasure_set_healing_drives_count 합계. 힐링 중에는 해당 세트 성능 저하가 정상적임 - 성능 이슈와 구분할 것",
      "gridPos": { "h": 4, "w": 6, "x": 18, "y": 23 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [{ "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum(minio_cluster_erasure_set_healing_drives_count)", "legendFormat": "healing", "refId": "A" }],
      "fieldConfig": {
        "defaults": {
          "unit": "short",
          "color": { "mode": "thresholds" },
          "thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }, { "color": "yellow", "value": 1 }] }
        },
        "overrides": []
      },
      "options": { "graphMode": "none", "reduceOptions": { "calcs": ["lastNotNull"] }, "textMode": "auto" }
    },

    {
      "id": 103,
      "type": "row",
      "title": "2-1. 디스크 성능 - 분포 및 이상치 (Top-N)",
      "gridPos": { "h": 1, "w": 24, "x": 0, "y": 27 },
      "collapsed": false,
      "panels": []
    },
    {
      "id": 15,
      "type": "histogram",
      "title": "Drive API Latency 분포 (2560개 디스크 전체)",
      "description": "minio_system_drive_api_latency_micros 값을 전체 디스크 기준으로 분포화. 개별 디스크를 나열하지 않고 '몇 개 디스크가 어느 지연 구간에 있는지'로 이상치를 한눈에 파악",
      "gridPos": { "h": 9, "w": 12, "x": 0, "y": 28 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        {
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "expr": "minio_system_drive_api_latency_micros{server=~\"$server\"}",
          "legendFormat": "{{server}}-{{drive}}",
          "instant": true,
          "format": "time_series",
          "refId": "A"
        }
      ],
      "fieldConfig": { "defaults": { "unit": "µs" }, "overrides": [] },
      "options": { "bucketSize": 500, "combine": true, "legend": { "showLegend": false } }
    },
    {
      "id": 16,
      "type": "timeseries",
      "title": "Drive Latency - Max / Avg (클러스터 전체 추이)",
      "description": "avg는 전반적 추세를, max는 최악의 디스크 1개가 어떻게 움직이는지를 보여줌 (outlier 조기 감지)",
      "gridPos": { "h": 9, "w": 12, "x": 12, "y": 28 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "avg(minio_system_drive_api_latency_micros{server=~\"$server\"})", "legendFormat": "avg", "refId": "A" },
        { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "max(minio_system_drive_api_latency_micros{server=~\"$server\"})", "legendFormat": "max (worst drive)", "refId": "B" },
        { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "quantile(0.99, minio_system_drive_api_latency_micros{server=~\"$server\"})", "legendFormat": "p99", "refId": "C" }
      ],
      "fieldConfig": { "defaults": { "unit": "µs", "custom": { "drawStyle": "line", "fillOpacity": 10, "showPoints": "never" } }, "overrides": [
        { "matcher": { "id": "byName", "options": "max (worst drive)" }, "properties": [{ "id": "color", "value": { "mode": "fixed", "fixedColor": "red" } }] }
      ] },
      "options": { "legend": { "displayMode": "list", "placement": "bottom" }, "tooltip": { "mode": "multi" } }
    },
    {
      "id": 17,
      "type": "table",
      "title": "Top-N 디스크 - I/O Error Rate",
      "description": "minio_system_drive_io_errors_total 증가율 상위 디스크. 특정 디스크의 하드웨어 열화 후보",
      "gridPos": { "h": 8, "w": 8, "x": 0, "y": 37 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        {
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "expr": "topk($topn, sum by (server, drive) (rate(minio_system_drive_io_errors_total{server=~\"$server\"}[5m])))",
          "format": "table",
          "instant": true,
          "refId": "A"
        }
      ],
      "transformations": [
        { "id": "organize", "options": { "excludeByName": { "Time": true }, "renameByName": { "Value": "io_errors/s" } } },
        { "id": "sortBy", "options": { "fields": {}, "sort": [{ "field": "io_errors/s", "desc": true }] } }
      ],
      "fieldConfig": { "defaults": { "custom": { "align": "auto", "cellOptions": { "type": "color-background" } }, "unit": "short" }, "overrides": [] },
      "options": { "showHeader": true }
    },
    {
      "id": 18,
      "type": "table",
      "title": "Top-N 디스크 - Timeout Errors Rate",
      "description": "minio_system_drive_timeout_errors_total 증가율 상위 디스크. I/O 응답 지연/과부하 후보",
      "gridPos": { "h": 8, "w": 8, "x": 8, "y": 37 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        {
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "expr": "topk($topn, sum by (server, drive) (rate(minio_system_drive_timeout_errors_total{server=~\"$server\"}[5m])))",
          "format": "table",
          "instant": true,
          "refId": "A"
        }
      ],
      "transformations": [
        { "id": "organize", "options": { "excludeByName": { "Time": true }, "renameByName": { "Value": "timeout_errors/s" } } },
        { "id": "sortBy", "options": { "fields": {}, "sort": [{ "field": "timeout_errors/s", "desc": true }] } }
      ],
      "fieldConfig": { "defaults": { "custom": { "align": "auto", "cellOptions": { "type": "color-background" } }, "unit": "short" }, "overrides": [] },
      "options": { "showHeader": true }
    },
    {
      "id": 19,
      "type": "table",
      "title": "Top-N 디스크 - Waiting I/O (현재)",
      "description": "minio_system_drive_waiting_io 현재값 상위 디스크. 대기열이 쌓이는 디스크 = 병목 후보",
      "gridPos": { "h": 8, "w": 8, "x": 16, "y": 37 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        {
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "expr": "topk($topn, minio_system_drive_waiting_io{server=~\"$server\"})",
          "format": "table",
          "instant": true,
          "refId": "A"
        }
      ],
      "transformations": [
        { "id": "organize", "options": { "excludeByName": { "Time": true }, "renameByName": { "Value": "waiting_io" } } },
        { "id": "sortBy", "options": { "fields": {}, "sort": [{ "field": "waiting_io", "desc": true }] } }
      ],
      "fieldConfig": { "defaults": { "custom": { "align": "auto", "cellOptions": { "type": "color-background" } }, "unit": "short" }, "overrides": [] },
      "options": { "showHeader": true }
    },
    {
      "id": 20,
      "type": "table",
      "title": "Top-N 노드 - 평균 Drive Latency",
      "description": "노드 내 20개 디스크 평균 지연시간 기준 상위 노드. 노드 단위 하드웨어/컨트롤러 이슈 식별용",
      "gridPos": { "h": 8, "w": 12, "x": 0, "y": 45 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        {
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "expr": "topk($topn, avg by (server) (minio_system_drive_api_latency_micros{server=~\"$server\"}))",
          "format": "table",
          "instant": true,
          "refId": "A"
        }
      ],
      "transformations": [
        { "id": "organize", "options": { "excludeByName": { "Time": true }, "renameByName": { "Value": "avg_latency_us" } } },
        { "id": "sortBy", "options": { "fields": {}, "sort": [{ "field": "avg_latency_us", "desc": true }] } }
      ],
      "fieldConfig": { "defaults": { "custom": { "align": "auto", "cellOptions": { "type": "color-background" } }, "unit": "µs" }, "overrides": [] },
      "options": { "showHeader": true }
    },
    {
      "id": 21,
      "type": "table",
      "title": "Top-N 노드 - Drive Availability Errors",
      "description": "minio_system_drive_availability_errors_total (I/O 에러+타임아웃 종합) 노드 합산 기준 상위. 노드 단위 하드웨어 이슈 스크리닝",
      "gridPos": { "h": 8, "w": 12, "x": 12, "y": 45 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        {
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "expr": "topk($topn, sum by (server) (rate(minio_system_drive_availability_errors_total{server=~\"$server\"}[5m])))",
          "format": "table",
          "instant": true,
          "refId": "A"
        }
      ],
      "transformations": [
        { "id": "organize", "options": { "excludeByName": { "Time": true }, "renameByName": { "Value": "availability_errors/s" } } },
        { "id": "sortBy", "options": { "fields": {}, "sort": [{ "field": "availability_errors/s", "desc": true }] } }
      ],
      "fieldConfig": { "defaults": { "custom": { "align": "auto", "cellOptions": { "type": "color-background" } }, "unit": "short" }, "overrides": [] },
      "options": { "showHeader": true }
    },

    {
      "id": 104,
      "type": "row",
      "title": "2-2. 네트워크(Internode) - 노드별",
      "gridPos": { "h": 1, "w": 24, "x": 0, "y": 53 },
      "collapsed": false,
      "panels": []
    },
    {
      "id": 22,
      "type": "timeseries",
      "title": "Internode TX/RX Bytes Rate (클러스터 합계)",
      "description": "노드 간(erasure coding fan-out, replication 등) 송수신 트래픽 총량. 메트릭명은 배포 버전에 따라 접미사가 다를 수 있어 /minio/metrics/v3/system/network/internode?list 로 검증 권장",
      "gridPos": { "h": 8, "w": 12, "x": 0, "y": 54 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum(rate(minio_system_internode_tx_bytes_total{server=~\"$server\"}[5m]))", "legendFormat": "tx (sent)", "refId": "A" },
        { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum(rate(minio_system_internode_rx_bytes_total{server=~\"$server\"}[5m]))", "legendFormat": "rx (received)", "refId": "B" }
      ],
      "fieldConfig": { "defaults": { "unit": "Bps", "custom": { "drawStyle": "line", "fillOpacity": 10, "showPoints": "never" } }, "overrides": [] },
      "options": { "legend": { "displayMode": "list", "placement": "bottom" }, "tooltip": { "mode": "multi" } }
    },
    {
      "id": 23,
      "type": "timeseries",
      "title": "Internode Dial Avg Time - Avg / Max (노드 간)",
      "description": "TCP dial 평균 소요시간의 클러스터 평균과 최악 노드. 급상승은 특정 노드 구간 네트워크 지연/포화 신호",
      "gridPos": { "h": 8, "w": 12, "x": 12, "y": 54 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "avg(minio_system_internode_dial_avg_time_nanos{server=~\"$server\"})", "legendFormat": "avg", "refId": "A" },
        { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "max(minio_system_internode_dial_avg_time_nanos{server=~\"$server\"})", "legendFormat": "max (worst node)", "refId": "B" }
      ],
      "fieldConfig": { "defaults": { "unit": "ns", "custom": { "drawStyle": "line", "fillOpacity": 10, "showPoints": "never" } }, "overrides": [
        { "matcher": { "id": "byName", "options": "max (worst node)" }, "properties": [{ "id": "color", "value": { "mode": "fixed", "fixedColor": "red" } }] }
      ] },
      "options": { "legend": { "displayMode": "list", "placement": "bottom" }, "tooltip": { "mode": "multi" } }
    },
    {
      "id": 24,
      "type": "table",
      "title": "Top-N 노드 - Internode 호출 실패율",
      "description": "minio_system_internode_errors_total 증가율 상위 노드. 특정 노드가 클러스터 전체 성능을 끌어내리는 병목 후보",
      "gridPos": { "h": 8, "w": 12, "x": 0, "y": 62 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        {
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "expr": "topk($topn, sum by (server) (rate(minio_system_internode_errors_total{server=~\"$server\"}[5m])))",
          "format": "table",
          "instant": true,
          "refId": "A"
        }
      ],
      "transformations": [
        { "id": "organize", "options": { "excludeByName": { "Time": true }, "renameByName": { "Value": "internode_errors/s" } } },
        { "id": "sortBy", "options": { "fields": {}, "sort": [{ "field": "internode_errors/s", "desc": true }] } }
      ],
      "fieldConfig": { "defaults": { "custom": { "align": "auto", "cellOptions": { "type": "color-background" } }, "unit": "short" }, "overrides": [] },
      "options": { "showHeader": true }
    },
    {
      "id": 25,
      "type": "table",
      "title": "Top-N 노드 - Internode Dial 타임아웃/에러율",
      "description": "minio_system_internode_dial_errors_total 증가율 상위 노드. TCP 연결 자체의 문제로, 스위치/NIC 등 하드웨어 레벨 확인 필요",
      "gridPos": { "h": 8, "w": 12, "x": 12, "y": 62 },
      "datasource": { "type": "prometheus", "uid": "${datasource}" },
      "targets": [
        {
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "expr": "topk($topn, sum by (server) (rate(minio_system_internode_dial_errors_total{server=~\"$server\"}[5m])))",
          "format": "table",
          "instant": true,
          "refId": "A"
        }
      ],
      "transformations": [
        { "id": "organize", "options": { "excludeByName": { "Time": true }, "renameByName": { "Value": "dial_errors/s" } } },
        { "id": "sortBy", "options": { "fields": {}, "sort": [{ "field": "dial_errors/s", "desc": true }] } }
      ],
      "fieldConfig": { "defaults": { "custom": { "align": "auto", "cellOptions": { "type": "color-background" } }, "unit": "short" }, "overrides": [] },
      "options": { "showHeader": true }
    }
  ]
}
profile
engineer

0개의 댓글