• 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/スキル
SKILLKnowledge Workmonitoring

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.

ユースケース
  • 本番環境の問題を調査する
  • レイテンシの急上昇をデバッグする
  • 根本原因を特定する
  • エラー増加の原因を分析する
  • トレースを分析する
本文(日本語訳)

Honeycomb本番環境調査

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

コア分析ループ

このワークフローは、observability-fundamentals スキルから得た中核的な分析ループ(定義 → 可視化 → 調査 → 評価)を実装しています。BubbleUpが有用な結果を返さない場合、しばしば計測の不備が原因です。足りない属性を追加して(otel-instrumentation スキルを参照)、再度試してください。

調査ワークフロー

ステップ1:状況把握

  1. get_workspace_context → 環境とデータセットを確認
  2. get_slos → SLO違反はないか?(重要度を判定)
  3. get_triggers → アラートは発動しているか?(調査範囲を絞る)
  4. find_queries → 過去に誰かが調査しているか?

ステップ2:問題の特性把握

問題の全体像を把握するため、広範なクエリを実行します:

  • レイテンシスパイク(応答時間の急増): P99(duration_ms)、HEATMAP(duration_ms)をサービスまたはルート別にグループ化
  • エラー急増: 失敗したオペレーション(error=true)の件数をサービス/ルート/カテゴリ別に集計し、event.name=exceptionとexception.type existsを使って例外イベント行も別途集計。サンプリングされたtrace.trace_id値を使って代表的なトレースをドリルダウン
  • 未特定: COUNT をサービス名でグループ化して、どのサービスの量が異常か特定

また get_service_map も呼び出してください。サービス間のP95レイテンシを示し、どの依存関係が遅いかをすぐに明らかにできます。

例外データには2つのクエリ領域があります: オペレーション失敗はスパン上に属し(error=true、スパンステータス、低カーディナリティのexception.slug/エラーカテゴリ)、詳細な例外診断はトレース関連ログ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も確認してください。ログAPI イベントはevent.name/bodyとmeta.signal_type=logを使用します。

サービスが例外昇格機能を持つLogRecordProcessorを使用している場合、一部の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を以下の内容で呼び出します:

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

調査パターン

レイテンシスパイク

ヒートマップを最初に見る → 遅い領域をBubbleUp → 遅いリクエストをトレース → フィルタクエリで検証

エラー急増

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

デプロイ回帰

P99をdeployment.versionでグループ化 → 新旧版を比較してBubbleUp → 新版からトレース → 検証

依存関係障害

get_service_map → 遅い依存関係のP99 → リレーショナルクエリ(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 による自動翻訳です。