mcpField
T
testing

testing

github.com/grafanaテスト・品質2954.3k 回インストール1 日前に更新
リポジトリ

testing について

Grafana Cloud のテストスキルです。テストや可観測性を担うチーム向けに、Synthetic Monitoring による外形監視、k6 Cloud の負荷テスト、Faro のフロントエンド監視を扱います。

主な機能

  1. 01Synthetic HTTP チェックの作成と検証
  2. 02k6 Cloud 負荷テストの実行
  3. 03Faro によるフロントエンドイベントの収集
  4. 04チェックのメトリクスとアラートルールの確認
  5. 05プローブ、テスト、イベントの問題の調査

活用シーン

  1. 01Web サイトのエンドポイント可用性の確認
  2. 02クラウドでの負荷テスト実行
  3. 03フロントエンドのセッション、イベント、トレースの確認

インストール

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

$npx skills add https://github.com/grafana/skills --skill testing

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

同梱ファイル

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

references/
k6-and-faro.md
k6-cloud.md
synthetic-monitoring.md
synthetic.md

詳細

Grafana Cloud Testing

ドキュメント: https://grafana.com/docs/grafana-cloud/testing/

3 つの柱:外部からのプローブ(Synthetic Monitoring)、負荷テスト(k6 Cloud)、リアルユーザーモニタリング(Faro)。

前提条件

  • Grafana Cloud スタック
  • Synthetic Monitoring:SM アクセストークン(sm:write)
  • k6 Cloud:Grafana Cloud k6 トークンと projectID
  • Faro:Faro アプリと、Frontend Observability → Apps で発行した書き込みトークン

一般的なワークフロー

1. Synthetic HTTP チェックを作成して検証する
# 1. Create the check (full payload in references/synthetic.md)
curl -X POST https://synthetic-monitoring-api.grafana.net/sm/checks \
  -H "Authorization: Bearer <sm-token>" -H "Content-Type: application/json" \
  -d '{"job":"website","target":"https://example.com","frequency":60000,"timeout":15000,
       "enabled":true,"probes":[1,5,10],
       "settings":{"http":{"method":"GET","validStatusCodes":[200]}}}'

# 2. List checks — confirm it exists and is enabled
curl -s https://synthetic-monitoring-api.grafana.net/sm/checks \
  -H "Authorization: Bearer <sm-token>" | jq '.[] | select(.job=="website")'

# 3. Verify probe_success arrived (wait ~60s for the first run)
#    In Grafana Explore on the synthetic metrics datasource:
#      probe_success{job="website"}
#    Expect 1 from each probe in `probes:[1,5,10]`.
#
# Rollback: DELETE /sm/checks/<id> or set `"enabled": false`.

すべてのチェックタイプ、PromQL クエリ、アラートルールについては、references/synthetic.md を参照してください。

2. k6 cloud 負荷テストを実行する
# 1. Authenticate once
k6 cloud login --token <grafana-cloud-k6-token>

# 2. Validate the script locally first (smoke run, no cloud cost)
k6 run --vus 1 --duration 30s script.js

# 3. Launch in cloud
k6 cloud script.js
# → URL of the run; thresholds (p95<500ms, error<1%) decide pass/fail.

# 4. Verify in CI — exit code 0 = thresholds passed, 99 = threshold failed.
echo $?

完全なスクリプト、シナリオ、CI YAML については、references/k6-and-faro.md を参照してください。

3. Faro でフロントエンドを計測する
# 1. Install
npm install @grafana/faro-web-sdk @grafana/faro-web-tracing
// 2. initializeFaro({ url, apiKey, app, instrumentations }) — see references/k6-and-faro.md
// 3. Push a test event so we have something to look for:
faro.api.pushEvent('faro_smoketest', { ts: Date.now().toString() });
# 4. Verify the collector accepted it (browser DevTools → Network)
#    POST to /collect should return 202. If 401 — apiKey mismatch.

# 5. Verify in Grafana
#    - Frontend Observability → your app → Sessions: should show your session
#    - Explore on Loki: `{kind="event"} |= "faro_smoketest"`
#    - For traces: filter by `service.name="my-frontend"` in Tempo

トラブルシューティング

  • Synthetic チェックが probe_success=0 のままになる → 失敗した段階の probe_*_duration_seconds を確認します。プローブリージョンのラベルから、エラーが発生したプローバーを特定できます
  • k6 cloud の実行が「ABORTED_THRESHOLD」になる → しきい値に達しています。実行ページを確認し、どのしきい値に達したかを調べます
  • Faro イベントが届かない → ブラウザーからのネットワークリクエストで /collect が 202 を返すことを確認します。よくある原因は apiKey または url の誤りです(FE Observability アプリと一致している必要があります)

参考資料

  • Synthetic Monitoring のスクリプト(k6)チェックとブラウザーチェックを詳しく作成する方法(実行モデル、アサーション、シークレット、API/Terraform ペイロード)については、synthetic-monitoring-checks スキルを参照してください
  • references/synthetic.md — Synthetic Monitoring の要点:チェックタイプ、主要な PromQL メトリクス、アラートルール
  • references/synthetic-monitoring.md — 詳細:チェックの CRUD、プローブの選択、スクリプト(k6)チェック、複数ステップのブラウザーチェックに対応する完全な API
  • references/k6-and-faro.md — エンドツーエンドテスト用の k6 cloud スクリプトと Faro Web SDK 初期化スニペット
  • references/k6-cloud.md — 詳細:k6 cloud の設定(プロジェクト、負荷ゾーン、しきい値)、CI 連携、実行分析

リソース

コメント