第6章 RHEL システムロールを使用したロギングの設定
logging RHEL システムロールを使用すると、ローカルホストとリモートホストをロギングサーバーとして自動的に設定し、多数のクライアントシステムからログを収集できます。
ロギングソリューションは、ログと複数のロギング出力を読み取る複数の方法を提供します。
たとえば、ロギングシステムは以下の入力を受け取ることができます。
- ローカルファイル
-
systemd/journal - ネットワーク上の別のロギングシステム
さらに、ロギングシステムでは以下を出力できます。
-
/var/log/ディレクトリーのローカルファイルに保存されるログ - Elasticsearch エンジンに送信されるログ
- 別のロギングシステムに転送されるログ
logging RHEL システムロールを使用すると、状況に合わせて入力と出力を組み合わせることができます。たとえば、journal からの入力をローカルのファイルに保存しつつも、複数のファイルから読み込んだ入力を別のロギングシステムに転送してそのローカルのログファイルに保存するようにロギングソリューションを設定できます。
6.1. logging RHEL システムロールを使用したローカルログメッセージのフィルタリング リンクのコピーリンクがクリップボードにコピーされました!
logging RHEL システムロールのプロパティーベースのフィルターを使用すると、さまざまな条件に基づいてローカルログメッセージをフィルタリングできます。その結果、たとえば以下を実現できます。
- 明確なログ: トラフィック量の多い環境では、ログが急増することがあります。エラーなどの特定のメッセージに注目することで、問題をより早く特定できるようになります。
- システムパフォーマンスの最適化: ログの量が多すぎると、通常、システムパフォーマンスが低下します。重要なイベントのみを選択的にログに記録することで、リソースの枯渇を防ぎ、システムをより効率的に運用できます。
- セキュリティーの強化: システムエラーやログイン失敗などのセキュリティーメッセージを効率的にフィルタリングすることで、関連するログのみを取得できます。これは、違反を検出し、コンプライアンス基準を満たすために重要です。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
logging_inputs-
ロギングの入力ディクショナリーのリストを定義します。
type: basicsオプションを指定すると、systemdジャーナルまたは Unix ソケットからの入力が対象になります。 logging_outputs-
ロギングの出力ディクショナリーのリストを定義します。
type: filesオプションにより、ローカルファイル (通常は/var/log/ディレクトリー内) にログを保存できます。property: msg、property: contains、およびproperty_value: errorオプションを指定すると、error文字列を含むすべてのログが/var/log/errors.logファイルに保存されます。property: msg、property: !contains、およびproperty_value: errorオプションを指定すると、他のすべてのログが/var/log/others.logファイルに保存されます。error値は、フィルタリングする必要がある文字列に置き換えることができます。 logging_flows-
ロギングのフローディクショナリーのリストを定義して、
logging_inputsとlogging_outputsの関係を指定します。inputs: [files_input]オプションは、ログの処理を開始する入力のリストを指定します。outputs: [files_output0, files_output1]オプションは、ログ送信先の出力のリストを指定します。
Playbook で使用されるすべての変数の詳細と
rsyslogの詳細は、/usr/share/ansible/roles/rhel-system-roles.logging/README.mdファイルと、コントロールノードのrsyslog.conf(5)およびsyslog(3)man ページを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
管理対象ノードで、
/etc/rsyslog.confファイルの構文をテストします。rsyslogd -N 1
# rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run... rsyslogd: End of config validation run. Bye.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 管理対象ノードで、システムが
error文字列を含むメッセージをログに送信することを確認します。テストメッセージを送信します。
logger error
# logger errorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のように
/var/log/errors.logログを表示します。cat /var/log/errors.log Aug 5 13:48:31 hostname root[6778]: error
# cat /var/log/errors.log Aug 5 13:48:31 hostname root[6778]: errorCopy to Clipboard Copied! Toggle word wrap Toggle overflow hostnameはクライアントシステムのホスト名に置き換えます。ログには、logger コマンドを入力したユーザーのユーザー名 (この場合はroot) が含まれていることに注意してください。