mcpField
G
grafana-skill

grafana-skill

github.com/julianobarbosaクラウド・DevOps1477 回インストール2 日前に更新
リポジトリ

grafana-skill について

grafana-skill は、TypeScript ツールと HTTP API のワークフローで Grafana リソースを管理するスキルです。ダッシュボード操作、クライアントライブラリ、関連 API の資料を扱います。

主な機能

  1. 01CLI によるダッシュボード CRUD
  2. 02TypeScript Grafana クライアント
  3. 03Grafana リソースの API リファレンス
  4. 04ダッシュボードのエクスポート、複製、バージョン復元

活用シーン

  1. 01タグでダッシュボードを検索してエクスポート
  2. 02JSON ファイルからダッシュボードを作成
  3. 03別フォルダーへのダッシュボード複製
  4. 04ダッシュボードの過去バージョンを復元

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/julianobarbosa/claude-code-skills --skill grafana-skill

インストール後、Claude Code で/grafana-skillを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
CommonPatterns.md
UsersTeams.md
alerting.md
annotations.md
dashboards.md
datasources.md
folders.md
Tools/
DashboardCrud.ts
GrafanaClient.ts
Workflows/
DashboardOperations.md

詳細

grafana-skill

TypeScript ツールと HTTP API のワークフローを使用して、Grafana のリソースをプログラムから管理します。

ワークフローの振り分け

ワークフロートリガーファイル
DashboardCrud「ダッシュボードを作成」「ダッシュボードを更新」「ダッシュボードを削除」「ダッシュボードを一覧表示」「ダッシュボードをエクスポート」Tools/DashboardCrud.ts
GrafanaClient「grafana API」「grafana client」「TypeScript grafana」Tools/GrafanaClient.ts
ApiReference「grafana API reference」「grafana endpoints」References/

ツール

DashboardCrud CLI
# Set environment variables
export GRAFANA_URL="https://grafana.example.com"
export GRAFANA_TOKEN="your-service-account-token"

# List dashboards
bun run Tools/DashboardCrud.ts list
bun run Tools/DashboardCrud.ts list --query production --tag monitoring

# Get dashboard by UID
bun run Tools/DashboardCrud.ts get abc123

# Export dashboard to JSON
bun run Tools/DashboardCrud.ts export abc123 --output dashboard.json

# Create dashboard from JSON file
bun run Tools/DashboardCrud.ts create --file dashboard.json --folder my-folder

# Update dashboard
bun run Tools/DashboardCrud.ts update abc123 --file updated.json --message "Updated panels"

# Clone dashboard
bun run Tools/DashboardCrud.ts clone abc123 --title "Production Copy" --folder prod-folder

# View version history
bun run Tools/DashboardCrud.ts versions abc123

# Restore to previous version
bun run Tools/DashboardCrud.ts restore abc123 --version 5

# Delete dashboard
bun run Tools/DashboardCrud.ts delete abc123
GrafanaClient TypeScript ライブラリ
import { GrafanaClient, createGrafanaClient } from './Tools/GrafanaClient';

// Initialize from environment variables
const client = createGrafanaClient();

// Or with explicit config
const client = new GrafanaClient({
  baseUrl: 'https://grafana.example.com',
  token: 'your-service-account-token',
  orgId: 1, // optional
});

// Dashboard operations
const dashboards = await client.searchDashboards({ query: 'production', tag: 'monitoring' });
const dashboard = await client.getDashboardByUid('abc123');
const saved = await client.saveDashboard({ dashboard: myDashboard, folderUid: 'folder-uid' });
await client.deleteDashboard('abc123');

// Version management
const versions = await client.getDashboardVersions('abc123');
await client.restoreDashboardVersion('abc123', 5);

// Folders, Data sources, Alerting, Annotations also available

認証

# Service Account Token (Recommended)
export GRAFANA_TOKEN="glsa_xxxxxxxxxxxxxxxxxxxx"

# Multi-Organization Header
curl -H "Authorization: Bearer $GRAFANA_TOKEN" \
     -H "X-Grafana-Org-Id: 2" \
     https://grafana.example.com/api/org

API クイックリファレンス

リソース一覧表示取得作成更新削除
ダッシュボードGET /api/searchGET /api/dashboards/uid/:uidPOST /api/dashboards/dbPOST /api/dashboards/dbDELETE /api/dashboards/uid/:uid
フォルダーGET /api/foldersGET /api/folders/:uidPOST /api/foldersPUT /api/folders/:uidDELETE /api/folders/:uid
データソースGET /api/datasourcesGET /api/datasources/uid/:uidPOST /api/datasourcesPUT /api/datasources/uid/:uidDELETE /api/datasources/uid/:uid
アラートルールGET /api/v1/provisioning/alert-rulesGET /api/v1/provisioning/alert-rules/:uidPOST /api/v1/provisioning/alert-rulesPUT /api/v1/provisioning/alert-rules/:uidDELETE /api/v1/provisioning/alert-rules/:uid

リファレンスドキュメント

例

例 1:ダッシュボードの一覧表示とエクスポート

User: "List all production dashboards and export them"
→ bun run Tools/DashboardCrud.ts list --tag production
→ For each: bun run Tools/DashboardCrud.ts export <uid>
→ Returns list of exported JSON files

例 2:JSON からダッシュボードを作成

User: "Create a new dashboard from this JSON file"
→ bun run Tools/DashboardCrud.ts create --file dashboard.json --folder monitoring
→ Returns new dashboard UID and URL

例 3:ダッシュボードを別のフォルダーに複製

User: "Clone the CPU dashboard to the production folder"
→ bun run Tools/DashboardCrud.ts clone cpu-uid --title "CPU Prod" --folder prod-folder
→ Returns cloned dashboard details

例 4:ダッシュボードのバージョンを復元

User: "Restore dashboard abc123 to version 5"
→ bun run Tools/DashboardCrud.ts versions abc123
→ bun run Tools/DashboardCrud.ts restore abc123 --version 5
→ Dashboard restored, new version created

例 5:プログラムから一括更新

User: "Write TypeScript to bulk update dashboard tags"
→ Uses GrafanaClient library:
   const client = createGrafanaClient();
   const dashboards = await client.searchDashboards({ tag: 'old-tag' });
   for (const dash of dashboards) {
     const full = await client.getDashboardByUid(dash.uid);
     full.dashboard.tags = full.dashboard.tags.filter(t => t !== 'old-tag');
     full.dashboard.tags.push('new-tag');
     await client.saveDashboard({ dashboard: full.dashboard, message: 'Updated tags' });
   }

エラー処理

コード説明
200成功
400不正なリクエスト(無効な JSON、必須フィールドの不足)
401認証されていません(トークンが無効、または指定されていません)
403禁止されています(権限が不足しています)
404見つかりません
409競合(リソースがすでに存在します)
412前提条件を満たしていません(バージョンの不一致)

ヒント

  1. ID より UID を使用する:UID は Grafana インスタンス間で移行できます
  2. 更新時にバージョンを含める:同時に行われた変更の上書きを防ぎます
  3. overwrite: true は慎重に使用する:強制的に更新する場合にのみ使用してください
  4. API キーよりサービスアカウントを使用する:新しいバージョンの Grafana では API キーは非推奨です

コメント