第20章 ログファイルの表示と管理

20.1. ログファイルの場所の特定
20.2. Rsyslog の基本設定
20.2.1. フィルター
20.2.2. アクション
20.2.3. テンプレート
20.2.4. グローバルディレクティブ
20.2.5. ログローテーション
20.3. 新規設定フォーマットの使用
20.3.1. ルールセット
20.3.2. sysklogd との互換性
20.4. Rsyslog でのキュー (Queue) を使った操作
20.4.1. キューの定義
20.4.2. rsyslog ログファイルの新しいディレクトリーの作成
20.4.3. キューの管理
20.4.4. rsyslog キューの新規構文の使用
20.5. ロギングサーバーでの rsyslog の設定
20.5.1. ロギングサーバーでの新規テンプレート構文の使用
20.6. Rsyslog モジュールの使用
20.6.1. テキストファイルのインポート
20.6.2. データベースへのメッセージのエクスポート
20.6.3. 暗号化トランスポートの有効化
20.6.4. RELP の使用
20.7. Rsyslog と Journal の相互作用
20.8. Rsyslog での構造化ロギング
20.8.1. Journal からのデータのインポート
20.8.2. 構造化メッセージのフィルタリング
20.8.3. JSON の解析
20.8.4. MongoDB でのメッセージの保存
20.9. Rsyslog のデバッグ
20.10. Journal の使用
20.10.1. ログファイルの表示
20.10.2. アクセス制御
20.10.3. ライブビューの使用
20.10.4. メッセージのフィルタリング
20.10.5. 永続的ストレージの有効化
20.11. グラフィカル環境でのログファイルの管理
20.11.1. ログファイルの表示
20.11.2. ログファイルの追加
20.11.3. ログファイルのモニタリング
20.12. その他のリソース
ログファイル とは、システムで実行しているカーネル、サービス、アプリケーションなどのシステムに関するメッセージを格納しているファイルです。各情報にはそれぞれ異なるログファイルがあります。例えば、デフォルトのシステムログファイル、セキュリティメッセージ専用のログファイル、cron タスク用のログファイルなどです。
ログファイルは、カーネルドライバーのロードを試行するなどシステムの問題を解決する場合やシステムへの無許可のログイン試行を探す場合に役立ちます。本章では、ログファイルの場所、ログファイルの閲覧方法、ログファイルの注意する項目を説明します。
一部のログファイルは、rsyslogd という名前のデーモンによって制御されます。rsyslogd デーモンは、sysklogd の拡張版であり、拡張されたフィルタリング、暗号化で保護されたメッセージリレー、さまざまな設定オプション、入出力モジュール、TCP または UDP プロコトルを介した伝送のサポートを提供します。rsyslogsysklogd は互換性があることに注意してください。
ログファイルは、systemd のコンポーネントである journald デーモンで制御することもできます。journald デーモンは全サービスの標準出力および標準エラー出力に書き込まれたメッセージに加えて、Syslog メッセージ、カーネルログメッセージ、初期 RAM ディスクおよび初期起動メッセージを取り込みます。また、これらをインデックス化して、ユーザーが利用できるようにします。ネイティブのジャーナルファイル形式は構造化およびインデックス付きバイナリファイルで、これは検索を改善し、より速い操作を提供します。また、タイムスタンプやユーザー ID といったメタデータ情報も保存します。journald が生成するログファイルはデフォルトで永続的なものではなく、メモリーもしくは /run/log/journal/ ディレクトリーの小型のリングバッファーに保存されるだけです。ログ記録されるデータ量は空きメモリーの量によります。容量の限界に達すると、一番古いエントリーが削除されます。しかし、この設定は変更可能です。「永続的ストレージの有効化」 を参照してください。ジャーナルの詳細情報については、「Journal の使用」 を参照してください。
デフォルトでは、これら 2 つのロギングツールはシステム上で共存しています。journald デーモンは、トラブルシューティング用の主要ツールです。また、構造化ログメッセージの作成に必要な追加データも提供します。journald が取得したデータは、/run/systemd/journal/syslog ソケットに転送され、さらにデータを処理するために rsyslogd が使用する場合があります。しかし、デフォルトでは rsyslogimjournal 入力モジュール経由で実際の統合を行うので、上記のソケットは使用されません。また、omjournal モジュールを使って rsyslogd から journald に逆方向でデータを移動することもできます。詳細については、「Rsyslog と Journal の相互作用」 を参照してください。統合によりテキストベースのログを一貫性のある形式で保持できることになり、rsyslogd に依存するアプリケーションや設定との互換性を確保できます。また、構造化形式で rsyslog メッセージを保持することもできます (「Rsyslog での構造化ロギング」 を参照)。

20.1. ログファイルの場所の特定

rsyslogd により保持されるログファイルの一覧は /etc/rsyslog.conf 設定ファイルにあります。ほとんどのログファイルは /var/log/ ディレクトリーにあります。httpdsamba などの一部のアプリケーションでは、ログファイル用のディレクトリーが /var/log/ 内にあります。
/var/log/ ディレクトリー内には末尾に番号が付いた複数のファイル (例、cron-20100906) があることに気付くかもしれません。これらの番号はローテーションを行ったログファイルに追加されたタイムスタンプを表します。ログファイルは、ファイルサイズが大きくなり過ぎないようにローテーションが行われます。logrotate パッケージには cron タスクが含まれており、これが/etc/logrotate.conf 設定ファイルと /etc/logrotate.d/ ディレクトリー内の設定ファイルにしたがって自動的にログファイルのローテーションを行います。