ERRORは見つかった。原因は「その前」にある — 巨大ログで前後の文脈を追う方法

使い方

前回は、10GB・50GBのログを分割せずに開いて「ERROR」を見つけるところまでを扱いました。しかし実際の障害調査は、ERRORの行を見つけた瞬間から始まります。ERRORは結果であって、原因はたいていその前の行にあるからです。直前のWARN、数秒前のタイムアウト、数百行前の設定読み込み——それが見えなければ、報告書には「エラーが出ていました」としか書けません。

grepの前後表示だけでは調査にならない理由

コマンドラインなら grep -B 20 -A 5 で前後の行ごと抜き出せます。最初の一歩としては有効ですが、調査を進めると壁に当たります。

  • 文脈の幅が事前に決め打ち——20行で足りるかは、見てみないと分からない。足りなければやり直し
  • 抜き出した断片は「別のテキスト」——そこからさらに数千行さかのぼりたくなった時、元のファイルの該当位置へは戻れない
  • ヒットが数千件あると、断片の山からどれが本命かを探す二次調査が始まる

欲しいのは断片ではなく、「ヒット一覧」と「元のファイルの現場」を行き来しながら読むことです。

手順: UwView(無料)で「一覧」と「現場」を行き来する

UwView は巨大ログ・テキスト専用の無料ビューアです(Windows / macOS / Linux)。検索結果が独立したポップアップウィンドウに一覧表示され、本文とは別々に動かせます。

  1. 無料版をダウンロードし、ログをドラッグ&ドロップで開く(分割不要・開いた瞬間から読めます)
  2. ツールバーの検索で「ERROR」を検索。ヒット行がポップアップに一覧されます
  3. 一覧の行をダブルクリック(またはEnter)。本文が該当行へスクロールし、一瞬ハイライトされます。ポップアップは開いたままなので、一覧→現場→一覧と何度でも行き来できます
  4. 現場では、ERRORの上をそのままスクロールしてさかのぼれます。grepの断片と違い、20行でも2万行でも、途切れずに遡れるのが「元ファイルの現場」の強みです
  5. ポップアップ側では前後±1行の文脈表示をオンにすると、全ヒットを「前の行つき」で流し読みできます。ERRORの直前に毎回同じWARNが出ていれば、この画面で気づけます
  6. あたりが付いたら、リクエストIDやスレッドIDで検索し直して、その1本の処理だけを時系列で追う
  7. 最後に「保存…」でヒット行(前後を含める指定も可)を別ファイルへ書き出せば、そのまま報告書の添付になります

色分けルールを足しておくと、さかのぼり読みがさらに楽になります。ERRORを赤、WARNを黄にしておけば、スクロール中でも「事故の前に黄色が増えていく」パターンが目に入ります(色分けの詳細はこちら)。

無料版で解決できる範囲

「ERRORを見つけ、前後をさかのぼり、原因行を特定して、該当部分を書き出す」——今回の調査は無料版だけで完了します。ジャンプも保存も前後±1行の文脈表示も無料版に含まれています。一度きりの調査なら、ここから先は読まなくて大丈夫です。

文脈を「もっと広く・並行して」見るなら — UwView Pro

繰り返し調査する人には、無料版に3つの上限があります。ポップアップの文脈表示が前後1行までであること、ポップアップが常に1つ(アクティブなタブに連動)であること、そして開き直すたびに索引を作り直すことです。

UwView Pro は、文脈表示を前後最大64行まで広げられ、タブごとに独立したポップアップを同時に開けます。アプリログとDBログを並べて、それぞれのERROR一覧を見ながら突き合わせる——という使い方は Pro の領分です。保存済み索引による瞬時の開き直し(実測0.02〜0.07秒)と圧縮キャッシュ経由の約9倍の検索も、2回目以降の調査で効きます。

作業 UwView無料版 UwView Pro
検索ヒット一覧から該当行へジャンプ
ヒット行の保存(前後を含める指定も可)
ポップアップの前後文脈表示 ○ 前後1行まで ○ 前後最大64行
タブごとに独立したポップアップを並行表示
ポップアップ内の矩形選択
2回目以降を瞬時に開く(索引保存)
圧縮キャッシュ経由の高速検索(約9倍)

一度の調査なら無料版で十分。複数ログの突き合わせや、同じログに何度も戻る調査だけ、Proを検討してください。(買い切り $129/月額 $9・1ライセンスで全OS)

リンク

  • UwView 無料版ダウンロード: https://uvp.y42u.net/download/?utm_source=blog&utm_medium=article&utm_campaign=error-context-2
  • 前回: 巨大ログが開けない — 分割せずに調査する方法: https://uvp.y42u.net/blog/uwview-huge-log-cannot-open/
  • フィルタPopupの設計解説(ジャンプ・保存・前後文脈): https://uvp.y42u.net/blog/uwview-filter-popup-jump-save-context/
  • 実務フロー例: アクセスログの5xxを1本の糸で追う: https://uvp.y42u.net/blog/uwview-access-log-5xx-workflow/
  • ソースコード(GitHub): https://github.com/amru195704/UwView

開発者より: アプリ・Kindle本・オープンソースの一覧は GitHub: amru195704 にまとめています。


お願い
本記事の情報は参考目的で掲載しており、正確性・完全性を保証するものではありません。数値は特定環境での実測であり、環境により異なります。機能の有無は各バージョン時点の確認であり、今後のアップデートで変わる可能性があります。誤記・不正確な情報がございましたら、コメント欄よりご指摘いただければ、確認のうえ修正いたします。

タイトルとURLをコピーしました