ログは嘘をつかないが、読み手を狂わせる!障害調査で「派手なエラー」に飛びついて自滅した話 

アイキャッチ画像

テクニカルサポート・問い合わせ対応の修羅場

システムで予期せぬ障害や不具合が発生し、一次受けや顧客から「画面が固まって動かないので至急調査してください!」と連絡が入る。エンジニアにとって、冷や汗が流れる瞬間です。

まずは状況を把握しようと、私たちはこう依頼します。 「状況を詳しく確認したいので、まず発生時のログを送っていただけますか?」

しかし、この「ログを頼りに調査する」というプロセスこそが、焦っているエンジニアを罠に引きずり込む最大の修羅場のはじまりでした。

送られてきた大容量ログと、先頭エラーの罠

依頼の後、顧客から送られてきたのはzipファイル。開いてみると、中には日付ごとに分割された大量のログデータが格納されていました。

「よし、原因を特定して早く回答しなきゃ……!」

焦るあまり、中身の構造を精査することもなく、送られてきたファイルを開いて上から順に眺めていく。すると、一番上のほうでひときわ派手に光る巨大なエラー(Exception)のスタックトレースが目に飛び込んできます。

「原因見つけた! これだ!!」

その文字を見た瞬間、これなら、ナレッジもあるしすぐに過去事例から似たようなものもあるから、同じように回答すればOKだなと考えていた。

しかし、意気揚々と顧客へ調査結果を報告した私を待っていたのは、あまりにも冷酷な一言でした。

「あ、困ってるのはそこの現象じゃなくて、別のエラーなんですけど……」

全く関係のない、昔から放置されていた別のトラブルのログを必死に解析していたことが判明した瞬間です。そこには、盛大な徒労感と、「そもそも最初に対象の現象や起きた時間をちゃんと確認していなかった」という痛恨のミスに対する絶望だけが残りました。

ログ調査で暴走しない「3つの型」

この恥ずかしくも痛い失敗を経て、私は障害調査のときに「目先の派手なエラーに飛びつかない」ための3つの型を自分に義務付けました。

型1:ログを受け取る前に「解決したい現象」と「発生時刻」を先に聞き出す

ログの海に飛び込む前に、「何が起きたか(具体的な現象)」と「何時頃起きたか(発生時刻)」を必ずセットで先にヒアリングします。この2つの座標(縦軸・横軸)が明確に揃うまで、ログファイルを開くことは絶対に禁止にしました。

型2:エラー文面ではなく「時間軸(時計)」を一番最初に固定する

送られてきたログを開いたら、目立つエラーメッセージよりも先にタイムスタンプ(時刻)を見に行きます。あらかじめ「固定した発生時刻」の周辺だけを切り出し、それ以外の時間帯のログ(特に過去の別件エラーや古いノイズ)は一切視界に入れないようにフィルターをかけます。

型3:仮説は立てず、時間とその前後で起きた事象を淡々と並べて俯瞰する

あらかじめ「これが原因に違いない」という都合の良い仮説を立てるのではなく、固定した発生時刻を軸に、その時間帯の前後で起きた事象をピンポイントで検索(Grep)して淡々と抽出します。

そこでヒットしたログや関連しそうな事象を机の上に並べるように洗い出し、「この時系列の並びの中で何が起きているのか」を客観的に俯瞰します。

現象を確認したら「一番最初に同じエラーが出たタイミング(初出)」も確認する
そのエラーが「今回の障害で初めて出た新規のトラブル」なのか、「実は以前からずっと吐かれ続けていた単なるノイズ」なのかを突き止めます。必要に応じて、顧客や運用側にそのエラーの発生背景をさらに追加ヒアリングします。

「焦ったときほど、ファクトを並べて俯瞰する」

「ログは嘘をつかないが、読み手を簡単に勘違いさせる」

派手なエラー文面(Exception)は視覚的に目立つため、障害対応で焦っているときほど、そこに飛びつきがちになります。しかし、最初に信用すべきなのはエラーの派手さではなく、「発生時刻と現象という揺るぎない事実(ファクト)」です。

事前にヒアリングして時間と現象を固定し、調査のゴールを設定することこそが、無駄な迷走を防ぐ最強の防波堤になります。

トラブルが起きたとき、脳内で勝手に原因を想像して動揺するのではなく、まずはファクトを机の上に並べるように整理して俯瞰する。その上で「直近でどこをどう変更したか」といった前後の文脈を確認していく。

この泥臭くも冷静なアプローチは、外部からの障害対応だけでなく、自分が改修したシステムが動かなくなった時のパニック防止にもそのまま通用する、エンジニアにとっての最強の鉄則です。