Red Hat Training

A Red Hat training course is available for RHEL 8

38.6. RELP でのロギングシステムロールの使用

Reliable Event Logging Protocol (RELP) とは、TCP ネットワークを使用する、データとメッセージロギング用のネットワーキングプロトコルのことです。イベントメッセージを確実に配信するので、メッセージの損失が許されない環境で使用できます。

RELP の送信側はコマンド形式でログエントリーを転送し、受信側は処理後に確認応答します。RELP は、一貫性を保つために、転送されたコマンドごとにトランザクション番号を保存し、各種メッセージの復旧します。

RELP Client と RELP Server の間にリモートロギングシステムを検討してください。RELP クライアントはログをリモートロギングシステムに転送し、RELP Server はリモートロギングシステムから送信されたすべてのログを受け取ります。

管理者は Logging システムロールを使用して、ログエントリーが確実に送受信されるようにロギングシステムを設定することができます。

38.6.1. RELP を使用したクライアントロギングの設定

Logging システムロールを使用して、ローカルマシンにログインしている RHEL システムでロギングを設定し、Ansible Playbook を実行して、ログを RELP でリモートロギングシステムに転送できます。

この手順では、Ansible インベントリーの client グループ内の全ホストに RELP を設定します。RELP 設定は Transport Layer Security (TLS) を使用して、メッセージ送信を暗号化し、ネットワーク経由でログを安全に転送します。

前提条件

  • RELP を設定する管理ノードで Playbook の実行権限がある。
  • 管理対象ノードがコントロールノードのインベントリーファイルに記載されている。
  • ansible パッケージおよび rhel-system-roles パッケージがコントロールノードにインストールされている。

手順

  1. 以下の内容を含む playbook.yml ファイルを作成します。

    ---
    - name: Deploying basic input and relp output
      hosts: clients
      roles:
        - rhel-system-roles.logging
      vars:
        logging_inputs:
          - name: basic_input
            type: basics
        logging_outputs:
          - name: relp_client
            type: relp
            target: logging.server.com
            port: 20514
            tls: true
            ca_cert: /etc/pki/tls/certs/ca.pem
            cert: /etc/pki/tls/certs/client-cert.pem
            private_key: /etc/pki/tls/private/client-key.pem
            pki_authmode: name
            permitted_servers:
              - '*.server.example.com'
        logging_flows:
          - name: example_flow
            inputs: [basic_input]
            outputs: [relp_client]

    Playbook は、以下の設定を使用します。

    • target: リモートロギングシステムが稼働しているホスト名を指定する必須パラメーターです。
    • port: リモートロギングシステムがリッスンしているポート番号です。
    • TLS: ネットワーク上でログをセキュアに転送します。セキュアなラッパーが必要ない場合は、tls 変数を false に設定します。デフォルトでは tls パラメーターは true に設定されますが、RELP を使用する場合には鍵/証明書およびトリプレット {ca_certcertprivate_key} や {ca_cert_srccert_srcprivate_key_src} が必要です。

      • {ca_cert_srccert_srcprivate_key_src} のトリプレットを設定すると、デフォルトの場所 (/etc/pki/tls/certs/etc/pki/tls/private) を、コントロールノードから転送する管理対象ノードの宛先として使用します。この場合、ファイル名はトリプレットの元の名前と同じです。
      • {ca_certcertprivate_key} トリプレットが設定されている場合には、ファイルはロギング設定の前にデフォルトのパスを配置する必要があります。
      • トリプレットの両方が設定されている場合には、ファイルはコントロールノードのローカルのパスから管理対象ノードの特定のパスへ転送されます。
    • ca_cert: CA 証明書へのパスを表します。デフォルトのパスは /etc/pki/tls/certs/ca.pem で、ファイル名はユーザーが設定します。
    • cert: 証明書へのパスを表します。デフォルトのパスは /etc/pki/tls/certs/server-cert.pem で、ファイル名はユーザーが設定します。
    • private_key: 秘密鍵へのパスを表します。デフォルトのパスは /etc/pki/tls/private/server-key.pem で、ファイル名はユーザーが設定します。
    • CA_cert_src: ローカル CA 証明書ファイルパスを表します。これはターゲットホストにコピーされます。ca_cert が指定している場合は、その場所にコピーされます。
    • cert_src: ローカル証明書ファイルのパスを表します。これはターゲットホストにコピーされます。cert を指定している場合には、その証明書が場所にコピーされます。
    • private_key_src: ローカルキーファイルパスを表します。これはターゲットホストにコピーされます。private_key を指定している場合には、その場所にコピーされます。
    • pki_authmode: name または fingerprint の認証モードを使用できます。
    • permitted_servers: ロギングクライアントが、TLS 経由での接続およびログ送信を許可するサーバーの一覧。
    • inputs: ロギング入力ディクショナリーの一覧。
    • outputs: ロギング出力ディクショナリーの一覧。
  2. オプション: Playbook の構文を確認します。

    # ansible-playbook --syntax-check playbook.yml
  3. Playbook を実行します。

    # ansible-playbook -i inventory_file playbook.yml