見出し画像

「再起動したら直った」は悪魔のささやき。RHEL障害対応、証拠(ログ)を消す前にまずsosreportを。

tempting...(悪魔のささやき)

システムが極端に遅い。サービスが応答しない。
深夜の障害対応中、高まるプレッシャー。

その時、あなたの頭に魅力的な言葉が響きます。

「とりあえず、再起動してみよう」

そして、再起動すると...システムはあっさり正常に戻る。

「よし、直った。これで朝まで様子を見よう」

これは、問題解決ではありません。根本原因(犯人)を野放しにした「証拠隠滅」です。

なぜなら、「再起動したら直った」は、「原因は不明のまま闇に葬られた」とほぼ同義だからです。RHELの障害対応において、その「悪魔のささやき」に屈してはいけません。

プロのエンジニアが最初に行うべき行動は、ただ一つ。

問題が発生している「まさにその瞬間」のsosreportを取得することです。


なぜ「再起動」が最悪の証拠隠滅になるのか?

トラブルシューティングにおける最大の敵は「証拠の消失」です。
そして、システム再起動は、最も致命的な証拠隠滅行為です。

再起動は、以下の「揮発性データ(真っ先に消える証拠)」をメモリ上から完全に消し去ります。

  • カーネルリングバッファ (dmesg)

    • カーネルが記録する最新のイベントログ。再起動で完全にクリアされます。

  • /proc ファイルシステム

    • 全プロセスの詳細な状態(psコマンドの元ネタ)。ハングアップの状況証拠です。

  • メモリ状態 (free, /proc/meminfo)

    • OOM Killer(メモリ不足によるプロセス強制終了)が発生する直前の、逼迫したメモリ状況。

  • ネットワーク状態 (ss, netstat)

    • TIME_WAITやCLOSE_WAITの異常な蓄積。通信が詰まっている様子。


■ よくある「迷宮入り」のケース

「システムが極端に遅くなったため、再起動したら正常に戻った」

この場合、再起動後に取得した sosreport では、リソースは正常に見え、ログにも異常な記録は残っていません。これでは「原因不明(再現性なし)」として処理するしかありません。

しかし、もし問題発生中(再起動前)に sosreport を取得していれば、
そこには「決定的な証拠」が残っていたはずです。

  • ps.txt には、数百のプロセスがDステート(I/O待ち)で停止している記録。

  • top-b-n1.txt では、CPUの "wa"(I/O Wait)が90%に達していた事実。

この「スナップショット」が存在するだけで、調査の焦点は即座に「ストレージI/Oのボトルネック」に絞り込めます。sosreport は、憶測を排除し、事実に基づいた分析を可能にする、唯一の「証拠保全」の手段なのです。


sosreport:完全な「現場スナップショット」

では、なぜ sosreport がそれほど強力なのでしょうか。

それは、障害対応に必要な3つの要素を完璧に満たしているからです。

1. 圧倒的な「網羅性」

「messages だけ送ってください」という依頼は、当て推量を助長する危険な行為です。システム障害は、複数の要因が複雑に絡み合って発生します。

sosreport は、診断に必要な情報の99%を、単一コマンドで体系的に収集します。

  • ログ: messages, dmesg, journalctl の完全なダンプ

  • 設定: /etc 配下のほぼ全て(fstab, sysctl.conf など)

  • リソース: ps, top, free, df, ss

  • HW/カーネル: lspci, lsmod, sysctl -a

  • パッケージ: rpm -qa, rpm -Va(整合性検証)

「アプリがハングした」原因が、dmesg に記録された「I/O error」だった、というように、一見無関係な情報が根本原因を指し示すことは日常茶飯事です。


2. サポートプロセスの「標準化」

sosreport は、エンジニア間の「共通言語」として機能します。
これが無い場合、サポートプロセスは非効率な情報の往復に終始します。

「messages をください」
「異常ありません。top と free の出力をください」
「I/O Waitが高いです。dmesg をください」

このやり取りだけで数日を要することもあります。

sosreport は、この「情報の往復」を初回で撲滅します。Red Hatサポートにケースを起票する際も必須であり、エンジニアが即座に分析フェーズに入れるようにすることで、MTTR(平均修復時間)を劇的に短縮します。


膨大な証拠から「犯人」を見つける最初の一歩

sosreport を取得したはいいものの、その膨大なファイル群(情報の洪水)を前に、どこから手をつければよいか分からない、という状況はよくあります。

専門家は、まず以下の「トリアージ(優先順位付け)」から始めます。

これは、システム全体に影響する「致命的な兆候」を5分以内に特定するための手順です。

■ 現場トリアージ・クイックリファレンス

  1. dmesg / dmesg.log (最優先)

    • 見るもの: カーネルとハードウェアの"悲鳴"がないか。

    • キーワード: "Call Trace" (カーネルパニック), "OOM-killer" (メモリ枯渇), "segfault", "I/O error" (ストレージ障害)

  2. messages / journal-dump.txt

    • 見るもの: システム全体の時系列イベント。

    • キーワード: "ERROR", "Failed", "CRITICAL"。障害発生時刻周辺のイベント。

  3. リソース枯渇チェック

    • df.txt: 100%の使用率に達しているファイルシステムはないか(特に /var)。

    • free.txt: Swapが大量に使用されていないか。Available(利用可能)メモリが枯渇していないか。

  4. プロセス状態チェック

    • ps.txt: ゾンビプロセス (Z) や、Dステート(Uninterruptible Sleep = I/O待ち)のプロセスが多数存在しないか。

この初期トリアージは、ベテランエンジニアの「まずここを見る」という経験則(ヒューリスティクス)を形式知化したものです。以下のクイックリファレンス・テーブルは、分析の効率を最大化するためのチェックリストとして機能します。
これらの初期調査だけでも、問題がメモリ、ストレージ、あるいは特定のアプリケーションのどれに起因するかの大まかな切り分けが可能です。

初期トリアージ・クイックリファレンス

結論:「まず sosreport」を合言葉に

「再起動したら直った」という"悪魔のささやき"は、その場しのぎの安心感しか与えてくれません。根本原因(犯人)はシステムに潜伏したままであり、必ず同じ問題(再犯)を引き起こします。

組織のインフラ運用において、「障害発生時には、まず sosreport を取得する」ことをSOP(標準作業手順書)に組み込むことは、極めて重要です。

これにより、憶測による無駄な作業を排除し、エンジニアが即座にデータに基づいた体系的な調査に着手できる、プロフェッショナルな障害対応文化が醸成されます。

次に障害が起きたら、再起動の前に、まず一呼吸。

そして、こう唱えましょう。

「証拠(ログ)を消す前に、まず sosreport を」

いいなと思ったら応援しよう!