MCP HubMCP Hub
스킬 목록으로 돌아가기

build-grafana-dashboards

pjt222
업데이트됨 2 days ago
6 조회
17
2
17
GitHub에서 보기
메타powerpointdesigndata

정보

이 스킬은 재사용 가능한 패널, 템플릿 변수, 버전 관리 배포를 위한 프로비저닝을 갖춘 프로덕션용 Grafana 대시보드를 생성합니다. Prometheus나 Loki 메트릭으로 운영 대시보드를 만들고, SLO 보고를 설정하거나, 수동 대시보드 생성에서 전환할 때 사용하세요. 유지보수 가능하고 코드로 관리되는 시각화가 필요한 SRE 팀을 위한 구조화된 접근 방식을 제공합니다.

빠른 설치

Claude Code

추천
기본
npx skills add pjt222/agent-almanac -a claude-code
플러그인 명령대체
/plugin add https://github.com/pjt222/agent-almanac
Git 클론대체
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/build-grafana-dashboards

Claude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요

문서

Build Grafana Dashboards

以可維、可復用、版控之最佳實踐設計並部署 Grafana 儀表板。

適用時機

  • 視覺化 Prometheus、Loki、或他數源之指標
  • 為 SRE 團隊與事件應對者建運營儀表板
  • 建高管級 SLO 合規之報告儀表板
  • 自手創儀表板遷至版控之配置
  • 以模板變數統一團隊之儀表板版型
  • 自高階總覽至詳指標之下鑽

輸入

  • 必要:數源配(Prometheus、Loki、Tempo 等)
  • 必要:欲視覺化之指標或日誌及其查詢模式
  • 選擇性:多服務或多環境視圖之模板變數
  • 選擇性:遷移或修改之既有儀表板 JSON
  • 選擇性:事件關聯之註釋查詢(部署、事故)

步驟

See Extended Examples for complete configuration files and templates.

步驟一:設計儀表板結構

建面板前先計儀表板版型與組。

創儀表板規文檔:

# Service Overview Dashboard

## Purpose
Real-time operational view for on-call engineers monitoring the API service.

## Rows
1. High-Level Metrics (collapsed by default)
   - Request rate, error rate, latency (RED metrics)
   - Service uptime, instance count
2. Detailed Metrics (expanded by default)
   - Per-endpoint latency breakdown
   - Error rate by status code
   - Database connection pool status
3. Resource Utilization
   - CPU, memory, disk usage per instance
   - Network I/O rates
4. Logs (collapsed by default)
   - Recent errors from Loki
   - Alert firing history

## Variables
- `environment`: production, staging, development
- `instance`: all instances or specific instance selection
- `interval`: aggregation window (5m, 15m, 1h)

## Annotations
- Deployment events from CI/CD system
- Alert firing/resolving events

要設計原則:

  • 要指標在上:關鍵指標於頂,細節於下
  • 時段一致:諸面板同步時
  • 下鑽路:自高階連至詳儀表板
  • 響應式版型:用適屏之列與面板寬

預期: 明之儀表板結構已錄,與用戶(SRE、開發)對齊於指標與版型之先。

失敗時:

  • 與終用戶行儀表板設計審
  • 以業界標(USE 法、RED 法、四金信號)為基準
  • 審團隊既有儀表板以求一致

步驟二:以模板變數創儀表板

以濾用之復變建儀表板基礎。

創儀表板 JSON 結構(或用 UI 後出):

{
  "dashboard": {
    "title": "API Service Overview",
    "uid": "api-service-overview",
    "version": 1,
    "timezone": "browser",
    "editable": true,
    "graphTooltip": 1,
    "time": {
      "from": "now-6h",
      "to": "now"
    },
    "refresh": "30s",
    "templating": {
      "list": [
        {
          "name": "environment",
          "type": "query",
          "datasource": "Prometheus",
          "query": "label_values(up{job=\"api-service\"}, environment)",
          "multi": false,
          "includeAll": false,
          "refresh": 1,
          "sort": 1,
          "current": {
            "selected": false,
            "text": "production",
            "value": "production"
          }
        },
        {
          "name": "instance",
          "type": "query",
          "datasource": "Prometheus",
          "query": "label_values(up{job=\"api-service\",environment=\"$environment\"}, instance)",
          "multi": true,
          "includeAll": true,
          "refresh": 1,
          "allValue": ".*",
          "current": {
            "selected": true,
            "text": "All",
            "value": "$__all"
          }
        },
        {
          "name": "interval",
          "type": "interval",
          "options": [
            {"text": "1m", "value": "1m"},
            {"text": "5m", "value": "5m"},
            {"text": "15m", "value": "15m"},
            {"text": "1h", "value": "1h"}
          ],
          "current": {
            "text": "5m",
            "value": "5m"
          },
          "auto": false
        }
      ]
    },
    "annotations": {
      "list": [
        {
          "name": "Deployments",
          "datasource": "Prometheus",
          "enable": true,
          "expr": "changes(app_version{job=\"api-service\",environment=\"$environment\"}[5m]) > 0",
          "step": "60s",
          "iconColor": "rgba(0, 211, 255, 1)",
          "tagKeys": "version"
        }
      ]
    }
  }
}

變數類與用例:

  • 查詢變數:自數源之動態列(label_values()query_result()
  • 間隔變數:查詢之聚合窗
  • 自訂變數:非指標選之靜列
  • 常數變數:跨面板共用之值(數源名、門檻)
  • 文字框變數:濾之自由輸入

預期: 變數自數源正填,級聯濾工(環境濾實例),預設擇合。

失敗時:

  • 於 Prometheus UI 獨測變數查詢
  • 查環依(A 依 B 依 A)
  • 驗多選變數之 allValue 中 regex 模式
  • 審變數刷新設(儀表板載時對時段變時)

步驟三:建視覺化面板

為每指標創合之視覺化類之面板。

時序面板(請率):

{
  "type": "timeseries",
  "title": "Request Rate",
  "gridPos": {"h": 8, "w": 12, "x": 0, "y": 0},
  "targets": [
    {
      "expr": "sum(rate(http_requests_total{job=\"api-service\",environment=\"$environment\",instance=~\"$instance\"}[$interval])) by (method)",
      "legendFormat": "{{method}}",
      "refId": "A"
    }
  ],
  "fieldConfig": {
    "defaults": {
      "unit": "reqps",
      "color": {
        "mode": "palette-classic"
      },
      "custom": {
        "drawStyle": "line",
        "lineInterpolation": "smooth",
        "fillOpacity": 10,
        "spanNulls": true
      },
      "thresholds": {
        "mode": "absolute",
        "steps": [
          {"value": null, "color": "green"},
          {"value": 1000, "color": "yellow"},
          {"value": 5000, "color": "red"}
        ]
      }
    }
  },
  "options": {
    "tooltip": {
      "mode": "multi",
      "sort": "desc"
    },
    "legend": {
      "displayMode": "table",
      "placement": "right",
      "calcs": ["mean", "max", "last"]
    }
  }
}

Stat 面板(錯率):

{
  "type": "stat",
  "title": "Error Rate",
  "gridPos": {"h": 4, "w": 6, "x": 12, "y": 0},
  "targets": [
    {
# ... (see EXAMPLES.md for complete configuration)

Heatmap 面板(延分佈):

{
  "type": "heatmap",
  "title": "Request Duration Heatmap",
  "gridPos": {"h": 8, "w": 12, "x": 0, "y": 8},
  "targets": [
    {
# ... (see EXAMPLES.md for complete configuration)

面板擇指南:

  • 時序:時之趨勢(率、計數、時長)
  • Stat:帶門檻色之單一當前值
  • Gauge:百分率(CPU、記憶、盤用)
  • Bar gauge:某時點比多值
  • Heatmap:時之值分佈(延百分位)
  • Table:多指標之詳析
  • Logs:Loki 之原日誌列,帶濾

預期: 面板以數正渲,視覺化合所意之指標類,圖例描,門檻示題。

失敗時:

  • 於 Explore 視圖以同時段與變數測查詢
  • 查指標名打字錯或誤標濾
  • 驗聚合函合指標類(計數器用 rate、gauge 用 avg)
  • 審單位配(bytes、seconds、reqps)
  • 開「Show query inspector」以調空結果

步驟四:配列與版型

組面板入可折行以作邏輯組。

{
  "panels": [
    {
      "type": "row",
      "title": "High-Level Metrics",
      "collapsed": false,
# ... (see EXAMPLES.md for complete configuration)

版型最佳實踐:

  • 格寬 24 單位,每面板指 w(寬)與 h(高)
  • 用行組關聯之面板,預設折不關鍵之段
  • 置最關鍵指標於首可見區(y=0-8)
  • 於行內維一致之面板高(典型 4、8、12 單位)
  • 時序用全寬(24),比較用半寬(12)

預期: 儀表板版型合邏輯,行折/展正確,面板視覺對齊而無隙。

失敗時:

  • 驗 gridPos 坐標不重
  • 查行面板陣列含面板(非 null)
  • 驗 y 坐標合邏輯下增
  • 以 Grafana UI「Edit JSON」察格位

步驟五:加連與下鑽

創相關儀表板間之導航路。

JSON 中儀表板級連:

{
  "links": [
    {
      "title": "Service Details",
      "type": "link",
      "icon": "external link",
# ... (see EXAMPLES.md for complete configuration)

面板級數連:

{
  "fieldConfig": {
    "defaults": {
      "links": [
        {
          "title": "View Logs for ${__field.labels.instance}",
# ... (see EXAMPLES.md for complete configuration)

連變數:

  • $service$environment:儀表板模板變
  • ${__field.labels.instance}:所點數點之標值
  • ${__from}${__to}:當前儀表板時段
  • $__url_time_range:URL 編之時段

預期: 點面板元或儀表板連至相關視,脈絡保全(時段、變數)。

失敗時:

  • 於查詢參中 URL 編特字
  • 以諸變擇(全對特值)測連
  • 驗目儀表板 UID 存且可達
  • includeVarskeepTime 旗如期工

步驟六:立儀表板配置

版控儀表板為代碼以可復部。

創配置目錄結構:

mkdir -p /etc/grafana/provisioning/{dashboards,datasources}

數源配置(/etc/grafana/provisioning/datasources/prometheus.yml):

apiVersion: 1

datasources:
  - name: Prometheus
    type: prometheus
    access: proxy
# ... (see EXAMPLES.md for complete configuration)

儀表板配置(/etc/grafana/provisioning/dashboards/default.yml):

apiVersion: 1

providers:
  - name: 'default'
    orgId: 1
    folder: 'Services'
    type: file
    disableDeletion: false
    updateIntervalSeconds: 30
    allowUiUpdates: true
    options:
      path: /var/lib/grafana/dashboards
      foldersFromFilesStructure: true

存儀表板 JSON 文件於 /var/lib/grafana/dashboards/

/var/lib/grafana/dashboards/
├── api-service/
│   ├── overview.json
│   └── details.json
├── database/
│   └── postgres.json
└── infrastructure/
    ├── nodes.json
    └── kubernetes.json

用 Docker Compose:

version: '3.8'
services:
  grafana:
    image: grafana/grafana:10.2.0
    ports:
      - "3000:3000"
    volumes:
      - ./grafana/provisioning:/etc/grafana/provisioning
      - ./grafana/dashboards:/var/lib/grafana/dashboards
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin
      - GF_USERS_ALLOW_SIGN_UP=false
      - GF_AUTH_ANONYMOUS_ENABLED=true
      - GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer

預期: 儀表板於 Grafana 啟時自動載,JSON 文件之變於更間後反映,版控追儀表板變。

失敗時:

  • 查 Grafana 日誌:docker logs grafana | grep -i provisioning
  • 驗 JSON 語法:python -m json.tool dashboard.json
  • 確文件權允 Grafana 讀:chmod 644 *.json
  • allowUiUpdates: false 測以止 UI 修
  • 驗配置:curl http://localhost:3000/api/admin/provisioning/dashboards/reload -X POST -H "Authorization: Bearer $GRAFANA_API_KEY"

驗證

  • 儀表板於 Grafana UI 無錯載
  • 諸模板變以期值填
  • 變級聯工(擇環境濾實例)
  • 面板於配時段顯數
  • 面板查詢正用變(無硬編值)
  • 門檻合宜示問態
  • 圖例格式描而不亂
  • 註釋於相關事件顯
  • 連導至正儀表板附脈絡
  • 儀表板自 JSON 文件配置(版控)
  • 響應式版型於多屏工
  • 工具提示與懸停交互提有用脈絡

常見陷阱

  • 變不更面板:確查詢用 $variable 語法,非硬編值。查變刷新設。
  • 查詢正而面板空:驗時段含數點。查抓取間對聚合窗(五分 rate 需大於五分之數)。
  • 圖例過詳:用 legendFormat 顯相關標,非全指標名。例:{{method}} - {{status}} 代預設。
  • 時段不一致:設儀表板時同步以使諸面板共同時窗。用「Sync cursor」作關聯調查。
  • 效能題:避返高基數序(>1000)之查詢。用錄規或預聚合。對貴查詢限時段。
  • 儀表板偏移:無配置,手 UI 變生版控衝。生產用 allowUiUpdates: false
  • 缺數連:數連須精確標名。${__field.labels.labelname} 慎用,驗標存於查詢果。
  • 註釋過多:多註釋亂視。按要濾註釋或用獨立註釋軌。

相關技能

  • setup-prometheus-monitoring - 配 Grafana 儀表板所食之 Prometheus 數源
  • configure-log-aggregation - 立 Loki 以供日誌面板查詢與基日誌之註釋
  • define-slo-sli-sla - 以 Grafana 之 stat 與 gauge 面板視覺化 SLO 合規與錯預算
  • instrument-distributed-tracing - 自指標面板加軌 ID 連至 Tempo 軌視

GitHub 저장소

pjt222/agent-almanac
경로: i18n/wenyan-lite/skills/build-grafana-dashboards
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

연관 스킬

content-collections

메타

이 스킬은 콘텐츠 콜렉션(Content Collections)을 위한 프로덕션 검증된 설정을 제공합니다. 콘텐츠 콜렉션은 Markdown/MDX 파일을 Zod 검증이 포함된 타입 안전한 데이터 콜렉션으로 변환해주는 TypeScript 최우선 도구입니다. 블로그, 문서 사이트 또는 콘텐츠 중심의 Vite + React 애플리케이션을 구축할 때 타입 안전성과 자동 콘텐츠 검증을 보장하기 위해 사용하세요. Vite 플러그인 구성과 MDX 컴파일부터 배포 최적화 및 스키마 검증에 이르기까지 모든 것을 다룹니다.

스킬 보기

polymarket

메타

이 스킬은 개발자들이 Polymarket 예측 시장 플랫폼을 활용한 애플리케이션을 구축할 수 있도록 지원하며, 거래 및 시장 데이터를 위한 API 통합 기능을 포함합니다. 또한 WebSocket을 통한 실시간 데이터 스트리밍을 제공하여 실시간 거래와 시장 활동을 모니터링할 수 있습니다. 이를 통해 거래 전략을 구현하거나 실시간 시장 업데이트를 처리하는 도구를 생성하는 데 활용할 수 있습니다.

스킬 보기

creating-opencode-plugins

메타

이 스킬은 개발자들이 명령어, 파일, LSP 작업 등 25개 이상의 이벤트 유형에 연결되는 OpenCode 플러그인을 만들 수 있도록 돕습니다. JavaScript/TypeScript 모듈을 위한 플러그인 구조, 이벤트 API 명세, 구현 패턴을 제공합니다. OpenCode AI 어시스턴트의 라이프사이클을 사용자 정의 이벤트 기반 로직으로 가로채거나, 모니터링하거나, 확장해야 할 때 사용하세요.

스킬 보기

sglang

메타

SGLang은 RadixAttention 프리픽스 캐싱을 활용하여 JSON, 정규식, 에이전트 워크플로우를 위한 고속 구조화 생성에 특화된 고성능 LLM 서빙 프레임워크입니다. 특히 반복되는 프리픽스가 있는 작업에서 상당히 빠른 추론 속도를 제공하여 복잡한 구조화 출력 및 다중 턴 대화에 이상적입니다. 제약 디코딩이 필요하거나 광범위한 프리픽스 공유가 있는 애플리케이션을 구축할 때는 vLLM과 같은 대안보다 SGLang을 선택하십시오.

스킬 보기