16.5. Logging システムロールを使用したリモートロギングソリューションの適用
以下の手順に従って、Red Hat Ansible Core Playbook を準備および適用し、リモートロギングソリューションを設定します。この Playbook では、1 つ以上のクライアントが systemd-journal
からログを取得し、リモートサーバーに転送します。サーバーは、remote_rsyslog
および remote_files
からリモート入力を受信し、リモートホスト名によって名付けられたディレクトリーのローカルファイルにログを出力します。
前提条件
-
Logging システムロールを設定する
管理対象ノード
1 つ以上へのアクセスおよびパーミッション。 コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
-
ansible-core
パッケージおよびrhel-system-roles
パッケージがインストールされている。 - 管理対象ノードが記載されているインベントリーファイルがある。
-
デプロイメント時にシステムロールが rsyslog
をインストールするため、rsyslog
パッケージをインストールする必要はありません。
手順
必要なロールを定義する Playbook を作成します。
新しい YAML ファイルを作成し、これをテキストエディターで開きます。以下に例を示します。
# vi logging-playbook.yml
以下の内容をファイルに挿入します。
--- - name: Deploying remote input and remote_files output hosts: server roles: - rhel-system-roles.logging vars: logging_inputs: - name: remote_udp_input type: remote udp_ports: [ 601 ] - name: remote_tcp_input type: remote tcp_ports: [ 601 ] logging_outputs: - name: remote_files_output type: remote_files logging_flows: - name: flow_0 inputs: [remote_udp_input, remote_tcp_input] outputs: [remote_files_output] - name: Deploying basics input and forwards output hosts: clients roles: - rhel-system-roles.logging vars: logging_inputs: - name: basic_input type: basics logging_outputs: - name: forward_output0 type: forwards severity: info target: _host1.example.com_ udp_port: 601 - name: forward_output1 type: forwards facility: mail target: _host1.example.com_ tcp_port: 601 logging_flows: - name: flows0 inputs: [basic_input] outputs: [forward_output0, forward_output1] [basic_input] [forward_output0, forward_output1]
host1.example.com
はロギングサーバーに置き換えます。注記必要に応じて、Playbook のパラメーターを変更することができます。
警告ロギングソリューションは、サーバーまたはクライアントシステムの SELinux ポリシーで定義され、ファイアウォールで開放されたポートでしか機能しません。デフォルトの SELinux ポリシーには、ポート 601、514、6514、10514、および 20514 が含まれます。別のポートを使用するには、クライアントシステムおよびサーバーシステムで SELinux ポリシーを変更 します。システムロールを使用したファイアウォールの設定は、まだサポートされていません。
サーバーおよびクライアントを一覧表示するインベントリーファイルを作成します。
新しいファイルを作成してテキストエディターで開きます。以下に例を示します。
# vi inventory.ini
以下のコンテンツをインベントリーファイルに挿入します。
[servers] server ansible_host=host1.example.com [clients] client ansible_host=host2.example.com
詳細は以下のようになります。
-
host1.example.com
はロギングサーバーです。 -
host2.example.com
はロギングクライアントです。
-
インベントリーで Playbook を実行します。
# ansible-playbook -i /path/to/file/inventory.ini /path/to/file/_logging-playbook.yml
詳細は以下のようになります。
-
inventory.ini
はインベントリーファイルに置き換えます。 -
logging-playbook.yml
は作成した Playbook に置き換えます。
-
検証
クライアントとサーバーシステムの両方で、
/etc/rsyslog.conf
ファイルの構文をテストします。# rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run (level 1), master config /etc/rsyslog.conf rsyslogd: End of config validation run. Bye.
クライアントシステムがサーバーにメッセージを送信することを確認します。
クライアントシステムで、テストメッセージを送信します。
# logger test
サーバーシステムで、
/var/log/messages
ログを表示します。以下に例を示します。# cat /var/log/messages Aug 5 13:48:31 host2.example.com root[6778]: test
host2.example.com
は、クライアントシステムのホスト名です。ログには、logger コマンドを入力したユーザーのユーザー名 (この場合はroot
) が含まれていることに注意してください。
関連情報
- RHEL System Roles を使用するための制御ノードと管理対象ノードの準備
-
rhel-system-roles
パッケージでインストールされたドキュメント (/usr/share/ansible/roles/rhel-system-roles.logging/README.html
) - RHEL システムロール のナレッジベース記事