mcpField
E
error-detective

error-detective

github.com/htlin222開発7837 回インストール3 週間前に更新
リポジトリ

error-detective について

ログやコードのエラー調査を支援する開発スキルです。エラーの詳細やスタックトレースを手掛かりに、繰り返し発生するパターンやイベントを関連付け、原因を調べます。

主な機能

  1. 01ログ内のエラー検索と集計
  2. 02反復パターンと急増の検出
  3. 03複数ログ間のエラー関連付け
  4. 04スタックトレースの解析
  5. 05チェックリストに沿った調査

活用シーン

  1. 01本番環境のAPIエラー調査
  2. 02直近のログでエラー急増を発見
  3. 03リクエストやシステムをまたいだ追跡

インストール

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

$npx skills add https://github.com/htlin222/dotfiles --skill error-detective

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

詳細

エラー検出

ログやコードからエラーを見つけて分析します。

使用する場面

  • 本番環境のエラーを調査する
  • ログのパターンを分析する
  • エラーの根本原因を特定する
  • システム間のエラーを関連付ける

ログ分析

エラーを見つける
# Recent errors
grep -i "error\|exception\|fatal" /var/log/app.log | tail -100

# Errors with context
grep -B 5 -A 10 "ERROR" /var/log/app.log

# Count by error type
grep -oE "Error: [^:]*" app.log | sort | uniq -c | sort -rn

# Errors in time range
awk '/2024-01-15 14:/ && /ERROR/' app.log
パターンを検出する
# Find repeated errors
grep "ERROR" app.log | cut -d']' -f2 | sort | uniq -c | sort -rn | head -20

# Correlate request IDs
grep "req-12345" *.log | sort -t' ' -k1,2

# Find error spikes
grep "ERROR" app.log | cut -d' ' -f1-2 | uniq -c | sort -rn

スタックトレース分析

スタックトレースを解析する
import re

def parse_stack_trace(log_content: str) -> list[dict]:
    pattern = r'(?P<exception>\w+Error|\w+Exception): (?P<message>.*?)\n(?P<trace>(?:\s+at .+\n)+)'

    traces = []
    for match in re.finditer(pattern, log_content):
        traces.append({
            'type': match.group('exception'),
            'message': match.group('message'),
            'trace': match.group('trace').strip().split('\n')
        })
    return traces
一般的なパターン
パターン示す内容対応
NullPointernull チェックが不足している検証を追加する
Timeout依存先が遅いタイムアウトとリトライを追加する
Connection refusedサービスが停止しているヘルス状態を確認してリトライする
OOMメモリーリークプロファイリングして上限を増やす
Rate limitリクエストが多すぎるバックオフとキューを追加する

調査チェックリスト

  1. 取得 - エラーメッセージとスタックトレースをすべて取得します
  2. タイムスタンプ - いつ発生し始めましたか?
  3. 頻度 - どのくらいの頻度ですか?増加していますか?
  4. 範囲 - すべてのユーザーですか、それとも特定のユーザーですか?
  5. 変更 - 最近デプロイしましたか?
  6. 依存関係 - 外部サービスに影響はありますか?

相関クエリ

-- Errors by endpoint
SELECT endpoint, count(*) as errors
FROM logs
WHERE level = 'ERROR' AND time > NOW() - INTERVAL '1 hour'
GROUP BY endpoint ORDER BY errors DESC;

-- Error rate over time
SELECT
  date_trunc('minute', time) as minute,
  count(*) filter (where level = 'ERROR') as errors,
  count(*) as total
FROM logs
WHERE time > NOW() - INTERVAL '1 hour'
GROUP BY minute ORDER BY minute;

例

入力:「API が 500 エラーを返す原因を見つける」 **アクション:**ログで 500 ステータスを検索し、スタックトレースを見つけて、根本原因を特定します

入力:「過去 1 時間のエラーパターンを分析する」 **アクション:**エラーを種類ごとに集計し、急増を見つけて、イベントと関連付けます

コメント