一般的なシステムログには、複数の発生元からの通常通知、warning、error が集まります。調査の出発点として便利ですが、ファイル名と内容は routing policy による選択であり、すべての Linux に共通する保証ではありません。
ロギング · レッスン 3
一般的なロギング
Linux の一般的なシステムログを見つけ、絞り込み、追跡、相関する方法を学びます。
関係する情報源を見つける
ディストリビューションと設定によって、一般メッセージは /var/log/syslog、/var/log/messages、systemd journal、または複数の宛先に現れます。最初にホストと障害時間帯を特定し、利用可能な情報源を調べます。
$ ls -lh /var/log
$ journalctl --since '2026-08-31 09:00' --until '2026-08-31 09:15'
アプリケーションログは独自のサブディレクトリや外部サービスにある場合があります。authentication、audit、package、database、web-server のレコードは、一般ストリームから意図的に分離されていることもあります。
すべての Linux ホストに /var/log/messages があると想定すべきでないのはなぜですか?
テキストログを調べる
制御しながら移動するには less、最新レコードには tail を使います。
$ sudo less /var/log/syslog
$ sudo tail -n 100 /var/log/messages
範囲を限定した再現中に新しい行を追うには、tail -F FILE を使います。単純な snapshot と異なり、-F は rotation でファイルが置き換わっても再試行します。Ctrl-C で追跡を止め、広い権限の session を開いたままにしないでください。
制御された再現中、tail -F は何に役立ちますか?
文脈を失わず絞り込む
無制限の live stream をすぐ pipe するのではなく、範囲を限定した file または journal interval を検索します。
$ grep -n -C 3 'connection refused' /var/log/example.log
$ journalctl -u example.service --since '10 minutes ago' --grep='connection refused'
大文字小文字、表現、rate limit、localization によって literal search は不完全になる場合があります。成功・失敗イベントの両方を記録し、目に見える error より前に原因がある可能性を考え、前後の行を保持します。
一致した error の周辺行を含めるのはなぜですか?
Rotation 済み Archive を含める
障害が rotation の境界をまたぐ場合があります。有効ファイル、番号付き archive、圧縮ファイルに、同じ一連の事象の別部分が入ることがあります。zgrep や zless は gzip 圧縮 archive を読みます。
$ sudo zgrep -n 'connection refused' /var/log/example.log*.gz
suffix だけでなく、実際の timestamp で結果を並べます。証拠をコピーする前に metadata を保持し、ログに個人データや認証情報が含まれる可能性を考えてアクセスを制限してください。
障害が log rotation をまたぐ場合、何を確認すべきですか?
レッスン完了
一般的なロギング を完了しました
これで、file、journal、rotation の境界をまたいで一般ログを調査できます。
普遍的なファイル名を想定せず、宛先を見つける。
限定した時間帯を読み、再現中だけ追跡する。
一致レコードの周辺にある時間的文脈を保持する。
rotation 済み archive を含め、機密性の高い証拠を保護する。