11.4. ローカルの Logging システムロールでのログのフィルターリング
rsyslog
プロパティーベースのフィルターをもとにログをフィルターするロギングソリューションをデプロイできます。
前提条件
-
Logging システムロールを設定する
管理対象ノード
1 つ以上へのアクセスおよびパーミッション。 コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
- Red Hat Ansible Core がインストールされている。
-
rhel-system-roles
パッケージがインストールされている。 - 管理対象ノードが記載されているインベントリーファイルがある。
デプロイメント時にシステムロールが rsyslog
をインストールするため、rsyslog
パッケージをインストールする必要はありません。
手順
以下の内容を含む新しい
playbook.yml
ファイルを作成します。--- - name: Deploying files input and configured files output hosts: all roles: - linux-system-roles.logging vars: logging_inputs: - name: files_input type: basics logging_outputs: - name: files_output0 type: files property: msg property_op: contains property_value: error path: /var/log/errors.log - name: files_output1 type: files property: msg property_op: "!contains" property_value: error path: /var/log/others.log logging_flows: - name: flow0 inputs: [files_input] outputs: [files_output0, files_output1]
この設定を使用すると、
error
文字列を含むメッセージはすべて/var/log/errors.log
に記録され、その他のメッセージはすべて/var/log/others.log
に記録されます。error
プロパティーの値はフィルターリングする文字列に置き換えることができます。設定に合わせて変数を変更できます。
オプション:Playbook の構文を確認します。
# ansible-playbook --syntax-check playbook.yml
インベントリーファイルで Playbook を実行します。
# ansible-playbook -i inventory_file /path/to/file/playbook.yml
検証
/etc/rsyslog.conf
ファイルの構文をテストします。# rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run... rsyslogd: End of config validation run. Bye.
システムが
error
文字列を含むメッセージをログに送信していることを確認します。テストメッセージを送信します。
# logger error
以下のように
/var/log/errors.log
ログを表示します。# cat /var/log/errors.log Aug 5 13:48:31 hostname root[6778]: error
hostname
はクライアントシステムのホスト名に置き換えます。ログには、logger コマンドを入力したユーザーのユーザー名 (この場合はroot
) が含まれていることに注意してください。
関連情報
-
rhel-system-roles
パッケージでインストールされたドキュメント (/usr/share/ansible/roles/rhel-system-roles.logging/README.html
)