build-grafana-dashboards
정보
이 스킬은 개발자가 재사용 가능한 패널, 템플릿 변수, 주석을 활용해 프로덕션 환경에 바로 적용 가능한 Grafana 대시보드를 생성하도록 돕습니다. Prometheus/Loki 메트릭을 기반으로 운영 대시보드를 구축하고, SLO 보고를 설정하며, 버전 관리가 가능한 프로비저닝 방식으로 전환하는 데 특화되어 있습니다. SRE 팀이나 경영 보고를 위해 표준화되고 유지보수가 용이한 대시보드를 구현해야 할 때 사용하세요.
빠른 설치
Claude Code
추천npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/build-grafana-dashboardsClaude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요
문서
建 Grafana 之盤
設而交 Grafana 之盤,循可維、可復、受版控之善法。
用時
- 建 Prometheus、Loki 或他源度量之視
- 為 SRE 隊與事故應者建運之盤
- 立 SLO 合之執行級報
- 自手建之盤遷於版控之供
- 以模變跨隊規盤之佈
- 建自概至詳之下鑽
入
- 必要:源設(Prometheus、Loki、Tempo 等)
- 必要:欲視之度量或日誌及其詢模
- 可選:多服或多境視之模變
- 可選:現盤 JSON 為遷或改
- 可選:事件關之注詢(交、事故)
法
全設檔與範見 Extended Examples。
第一步:設盤之構
建板之前,規盤之佈與組。
作盤之規檔:
# 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之正則 - 察變重整設(盤載時 vs 時段變時)
第三步:建視之板
為各度量以合視類建板。
時序板(請率):
{
"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,儀用 avg)
- 察單位設(字節、秒、請/秒)
- 啟「Show query inspector」以調空果
第四步:設行與佈
組板於可折之行以邏集。
{
"panels": [
{
"type": "row",
"title": "High-Level Metrics",
"collapsed": false,
# ... (see EXAMPLES.md for complete configuration)
佈善法:
- 格廿四寬,各板指
w(寬)與h(高) - 用行集相關板,默折次要區
- 最要度量居首見區(y=0-8)
- 行內板高一致(典四、八、十二)
- 時序用全寬(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 編
- 以諸變擇試鏈(All vs 特值)
- 驗標盤 UID 存而可取
- 察
includeVars與keepTime旗如期行
第六步:設盤之供
版控盤如碼以可復之交。
建供目構:
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之語,勿硬值。察變重整設 - 詢正而板空:驗時段含資料點。察採間 vs 聚窗(5m 率須 >5m 之資料)
- 圖例冗:用
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- 自度量板加 trace ID 鏈於 Tempo trace 視
GitHub 저장소
연관 스킬
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을 선택하십시오.
