• Projects
  • Service
  • About
  • branding.bz
  • Podcast
  • Tips
  • FAQ
  • Recruit
  • Download
  • Contact
  • branding.bz(ブランド構築SaaS)
  • DESIGN NOW(デザインメディア)
  • X
  • LinkedIn
  • Spotify
  • Facebook

213-0011 神奈川県川崎市高津区久本3-6-7-303

© 2026 ID INC. All rights reserved

claude-skills/スキル
SKILLOfficialmonitoring

production-investigation

プラグイン
honeycomb
ソース
GitHub で見る ↗
説明

Honeycombにおける本番環境のトラブルシューティング:調査の流れ 本番環境での問題を体系的に調査するためのワークフローです。以下のツール呼び出しを順序立てて実行します: - **背景情報の準備**(現在の状況を把握) - **広範なクエリ実行**(問題の全体像を確認) - **BubbleUp**(異常な値や傾向を特定) - **トレース分析**(詳細な処理の流れを追跡) - **検証**(原因の確認) 各ステップの結果を次のステップにつなぎ合わせることで、根本的な原因へたどり着きます。 **次のような場合に使用:** 「本番環境の問題を調査してほしい」「レイテンシ(応答時間)の急上昇をデバッグしたい」「根本的な原因を見つけたい」「BubbleUpを使ってほしい」「トレースを分析してほしい」「障害の原因を調べたい」「APIが遅い理由は何か」「エラーが増加している」「ヘルスチェック(稼働状態の確認)」「SLO焼却」(サービス品質基準の逼迫状況)など、本番環境の問題に関する調査やデバッグのご依頼

原文を表示

Structured workflows for investigating production issues in Honeycomb — the sequence of tool calls (context priming, broad query, BubbleUp, trace analysis, verification) and how to chain results between steps to reach root causes. Trigger phrases: "investigate production issue", "debug latency spike", "find root cause", "use BubbleUp", "analyze traces", "debug an outage", "why is my API slow", "errors are increasing", "health check", "SLO burning", or any request to investigate or debug production problems.

ユースケース
  • 本番環境の問題を調査するとき
  • レイテンシの急上昇をデバッグするとき
  • 根本的な原因を特定したいとき
  • エラー増加の理由を調べるとき
  • APIが遅い原因を追跡するとき
本文(日本語訳)

Honeycomb Production Investigation

本番環境の問題をデバッグするための体系的なワークフロー。MCPツールは独自のパラメータをドキュメント化していますが、このスキルはツール呼び出しの順序と結果の解釈方法に焦点を当て、根本原因にたどり着くのを支援します。

コア分析ループ

このワークフローは、observability-fundamentalsスキルの中核となる分析ループ(定義 → 可視化 → 調査 → 評価)を実装しています。BubbleUp(データ傾向の自動比較機能)が有用な結果を返さない場合、多くの場合はデータ計測のギャップが原因です。欠けている属性を追加し(otel-instrumentationスキルを参照)、再度試してください。

調査ワークフロー

ステップ1: 現状把握

  1. get_workspace_context → 環境とデータセットを確認
  2. get_slos → SLO(目標とする性能水準)に違反していないか確認(問題の深刻さを判断)
  3. get_triggers → アラートが発火していないか確認(調査範囲を絞る)
  4. find_queries → これまでに誰かが調査したことはないか確認

ステップ2: 問題を特性化する

広い範囲のクエリを実行して問題の全体像を把握します:

  • レイテンシ(応答時間)の急上昇: 99パーセンタイル(duration_ms)またはヒートマップ(duration_ms)をサービス・ルート別にグループ化
  • エラー急増: 失敗したオペレーション(error=true)をサービス/ルート/カテゴリ別にカウント。その後、event.name=exceptionとexception.type existsを使って例外イベント行を別途カウント。サンプル化されたtrace.trace_id値を使って代表的なトレースにドリルダウン
  • 原因不明: service.name別にカウントして、どのサービスが異常な通信量を示しているかを特定

またget_service_mapも呼び出します。これはサービス間の95パーセンタイル応答時間を表示し、どの依存関係が遅いかを即座に明らかにできます。

例外データには2つのクエリ方法があります:オペレーション失敗はスパン上にあります(error=true、スパンステータス、低カーディナリティ(種類が限定された)exception.slug/エラーカテゴリ)。完全な例外診断情報はトレースに関連付けられたLogs APIのイベント行にある場合があります。包含するスパンにexception.*フィールドが存在すると仮定しないでください。例外を調査する際は、まずデータセットスキーマを確認し、event.name=exceptionかつexception.type existsとtrace.trace_id existsでクエリして、サンプルを取得した後、そのtrace.trace_idをget_trace(show_events=true)に渡します。レガシ(古い形式の)スパンイベント例外の場合は、name=exceptionとmeta.signal_type=traceも確認してください。Logs APIイベントはevent.name/bodyとmeta.signal_type=logを使用します。

サービスが例外昇格(例外を優先的に記録する処理)を使う場合、一部のexception.*フィールドが包含するスパンに表示されることもあります。これを明示的なクライアント側互換性機能として扱ってください(Honeycombの保証ではありません)。イベント行が完全な診断データの権威であり、親スパンフィールドの欠落は例外イベントがないことを意味しません。

ステップ3: BubbleUpで差別化要因を特定

最も価値の高いステップです。異常を示すクエリが得られたら:

  1. クエリ結果に対してrun_bubbleupを実行し、外れ値領域を選択
  2. BubbleUpはすべてのカラムにわたって外れ値対ベースラインの分布を自動比較
  3. 分布が大きく異なるフィールドを探す

BubbleUp結果の解釈方法:

  • カテゴリフィールド(分類軸): 外れ値で過剰に表現されている値は原因を指す(例:deployment.version=v2.3.1が遅いリクエストの90%だがベースラインではわずか20%)
  • 数値フィールド(測定軸): 分布のシフトは相関メトリクスを示す(例:db.query_durationが外れ値で大幅に高い)
  • よくある根本原因: デプロイメント版、リージョン(地域)、ユーザーグループ、特定エンドポイント、機能フラグ(機能の有効/無効)

ステップ4: トレースにドリルダウン

BubbleUpが疑わしい要因を特定した後:

  1. BubbleUpの発見を結果絞り込みのWHERE条件として追加
  2. 代表的なトレースIDを選択
  3. get_traceを呼び出して完全なトレースを取得

トレースの時系列図を見るときのチェックポイント:

  • 親に対して不釣り合いな期間を持つスパン(ボトルネック)
  • 並列化できる可能性のある順序実行スパン(N+1クエリパターン)
  • エラースパン—スパンイベントのスタックトレースを確認
  • 子スパン間のギャップ(欠けている計測または待機時間)
  • サービス境界(トレースがサービスを跨ぐ箇所)

ステップ5: 仮説を検証

BubbleUp+トレース分析から仮説を形成し、確認します:

  • 疑わしい原因を含めてクエリ実行
  • それを除外してクエリ実行(対照)
  • メトリクスが異なれば、原因を特定できた

ステップ6: 結果を記録

create_boardを呼び出して以下を含めます:

  • 根本原因をまとめたテキストパネル(マークダウン形式)
  • 問題を特定した主要なクエリ実行PK(プライマリキー)
  • 関連するSLO(あれば)

調査パターン

レイテンシ急上昇

ヒートマップで確認 → 遅い領域をBubbleUp → 遅いリクエストをトレース → フィルタリングクエリで検証

エラー急増

失敗したオペレーションをサービス/ルート/カテゴリ別にカウント → Logs API例外イベントをevent.name=exceptionとexception.type別にカウント → サンプルtrace.trace_id → get_trace(show_events=true) → フィルタリングクエリで検証。親スパンのexception.messageのみを例外検索の唯一の方法として使用しないでください。

デプロイメント回帰(性能低下)

99パーセンタイルをdeployment.version別にグループ化 → 新旧を比較してBubbleUp → 新バージョンからトレース → フィルタリングクエリで検証

依存サービス障害

get_service_map → 遅いサービスの99パーセンタイル → 関連クエリ(any.service.name)でユーザー影響を測定 → 影響を受けたリクエストをトレース

道筋を外さないコツ

こんな理由で推論していても、ワークフローに従ってください:

  • 「原因は明らかだからBubbleUpはスキップできる」—BubbleUpは事後的には明らかに思える原因を日常的に浮かび上がらせます。また、完全に見落としそうな二次的な原因も捉えます。
  • 「デプロイメント問題だとわかっている」—ステップ5で検証してください。確認バイアス(自分の仮説に固執する傾向)はインシデント時に最も強く働きます。疑わしい原因を含めたクエリと除外したクエリを両方実行してください。
  • 「トレースで確認済みなので検証は不要」—1つのトレースは一事例に過ぎません。検証クエリはすべてのトラフィック全体にパターンが保持されることを証明します。
  • 「簡単な問題なので完全なワークフローは過剰」—ワークフロー自体は数分で済みます。インシデント中の誤診は数時間のコストになります。

結果が空または不明確な場合

  • 結果なし: find_columnsでフィールド名を確認、時間範囲を拡大、環境/データセットを検証
  • BubbleUpでシグナルなし: 異なる時間選択を試す、フィルタを追加して異常をより明確に分離、または異なる計算を選択
  • トレース内にスパンが不足: サンプリング(一部データのみ記録)、計測ギャップ、またはクロス環境トレース分割

その他のリソース

参考ファイル

  • ${CLAUDE_PLUGIN_ROOT}/skills/production-investigation/references/investigation-playbooks.md — レイテンシ急上昇、エラー急増、デプロイメント回帰、依存サービス障害、SLO予算消費、ヘルスチェックの段階的プレイブック
  • ${CLAUDE_PLUGIN_ROOT}/skills/production-investigation/references/bubbleup-guide.md — 詳細なBubbleUp使用法:選択タイプ、時間指定、ページネーション、結果解釈
  • ${CLAUDE_PLUGIN_ROOT}/skills/production-investigation/references/trace-exploration.md — トレース構造、get_traceパラメータと表示モード、時系列分析、スパンイベントとリンク

関連スキル

  • コア分析ループの概念的基礎はobservability-fundamentalsスキルを参照
  • クエリ構築パターンはquery-patternsスキルを参照
  • 調査中のSLO/トリガーコンテキストはslos-and-triggersスキルを参照
原文(English)を表示

Honeycomb Production Investigation

Structured workflows for debugging production issues. The MCP tools document their own parameters — this skill focuses on the sequence of tool calls and how to interpret results to reach a root cause.

The Core Analysis Loop

This workflow implements the core analysis loop (Define → Visualize → Investigate → Evaluate) from the observability-fundamentals skill. If BubbleUp returns nothing useful, the issue is often an instrumentation gap — add the missing attributes (see the otel-instrumentation skill) and try again.

Investigation Workflow

Step 1: Orient

  1. get_workspace_context → environments and datasets
  2. get_slos → any SLOs in violation? (frames severity)
  3. get_triggers → any alerts firing? (narrows scope)
  4. find_queries → has anyone investigated this before?

Step 2: Characterize the Problem

Run a broad query to see the shape of the issue:

  • Latency spike: P99(duration_ms), HEATMAP(duration_ms) grouped by service or route
  • Error surge: count failed operation spans (error=true) by service/route/category, then separately count exception event rows using event.name=exception and exception.type exists; use sampled trace.trace_id values to drill into representative traces
  • Unknown: COUNT grouped by service.name to find which service has anomalous volume

Also call get_service_map — it shows P95 durations between services and can immediately reveal which dependency is slow.

Exception data has two query surfaces: operation failures belong on spans (error=true, span status, low-cardinality exception.slug/error category); full exception diagnostics may belong on trace-correlated Logs API event rows. Do not assume exception.* exists on the containing span. When investigating exceptions, discover the dataset schema first, query event.name=exception with exception.type exists and trace.trace_id exists, take a sample, then pass its trace.trace_id to get_trace(show_events=true). For legacy span-event exceptions, also check name=exception and meta.signal_type=trace; Logs API events use event.name/body and meta.signal_type=log.

If a service uses an exception-promoting LogRecordProcessor, some exception.* fields may also appear on the containing span. Treat that as an explicit client-side compatibility feature, not a Honeycomb guarantee: the event row remains authoritative for full diagnostics, and absence of parent-span fields does not mean the exception event is missing.

Step 3: BubbleUp to Find Differentiators

This is the highest-value step. Once you have a query showing the anomaly:

  1. Run run_bubbleup on the query result, selecting the outlier region
  2. BubbleUp compares outlier vs baseline distributions across all columns automatically
  3. Look for fields where the distributions differ significantly

How to interpret BubbleUp results:

  • Categorical fields (dimensions): A value overrepresented in outliers points to a cause (e.g., deployment.version=v2.3.1 is 90% of slow requests but only 20% of baseline)
  • Numeric fields (measures): A shifted distribution shows correlated metrics (e.g., db.query_duration is much higher in outliers)
  • Typical root causes surfaced: deployment version, region, user cohort, specific endpoint, feature flag

Step 4: Drill Into Traces

After BubbleUp identifies suspects:

  1. Add BubbleUp findings as WHERE filters to narrow results
  2. Pick a representative trace ID
  3. Call get_trace to fetch the full trace

What to look for in the trace waterfall:

  • Spans with disproportionate duration vs parent (the bottleneck)
  • Sequential spans that could be parallelized (N+1 query patterns)
  • Error spans — check span events for stack traces
  • Gaps between child spans (missing instrumentation or idle wait)
  • Service boundaries (where the trace crosses services)

Step 5: Verify Hypothesis

Form a hypothesis from BubbleUp + trace analysis, then confirm:

  • Query WITH the suspected cause filtered in
  • Query WITHOUT it (as a control)
  • If the metrics diverge, you've found it

Step 6: Record Findings

Call create_board with:

  • A text panel summarizing the root cause (Markdown)
  • The key query run PKs that identified the problem
  • Related SLOs if applicable

Investigation Patterns

Latency Spike

HEATMAP first → BubbleUp the slow region → trace a slow request → verify with filtered queries

Error Surge

Count failed operation spans by service/route/category → count Logs API exception events by event.name=exception and exception.type → sample trace.trace_id → get_trace(show_events=true) → verify with filtered queries. Do not use exception.message on the parent span as the only exception search.

Deployment Regression

P99 grouped by deployment.version → BubbleUp comparing new vs old → trace from new version → verify

Dependency Failure

get_service_map → P99 on the slow dependency → relational query (any.service.name) to measure user impact → trace an affected request

Stay on the Path

If you find yourself reasoning any of these, follow the workflow anyway:

  • "The cause is obvious, I can skip BubbleUp" — BubbleUp routinely surfaces causes that seem obvious in hindsight but weren't the first guess. It also catches secondary causes you'd miss entirely.
  • "I already know it's a deployment issue" — verify with Step 5. Confirmation bias is strongest during incidents. Query with and without the suspected cause.
  • "Traces confirmed it, no need to verify" — a single trace is an anecdote. The verification query proves the pattern holds across all traffic, not just one request.
  • "This is a simple issue, the full workflow is overkill" — the workflow takes minutes; a wrong diagnosis during an incident costs hours.

When Results Are Empty or Unclear

  • No results: Check field names with find_columns, expand time range, verify environment/dataset
  • BubbleUp shows no signal: Try a different time selection, add filters to isolate the anomaly more clearly, or select a different calculation
  • Trace missing spans: Sampling, instrumentation gaps, or cross-environment trace split

Additional Resources

Reference Files

  • ${CLAUDE_PLUGIN_ROOT}/skills/production-investigation/references/investigation-playbooks.md — Step-by-step playbooks for latency spikes, error surges, deployment regressions, dependency failures, SLO budget burn, and health checks
  • ${CLAUDE_PLUGIN_ROOT}/skills/production-investigation/references/bubbleup-guide.md — Detailed BubbleUp usage: selection types, time specifications, pagination, result interpretation
  • ${CLAUDE_PLUGIN_ROOT}/skills/production-investigation/references/trace-exploration.md — Trace structure, get_trace parameters and view modes, waterfall analysis, span events and links

Cross-References

  • For the conceptual foundations of the core analysis loop, see the observability-fundamentals skill
  • For query construction patterns, see the query-patterns skill
  • For SLO/trigger context during investigations, see the slos-and-triggers skill

原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。