11.7. 使用带有 RELP 的 logging 系统角色

可靠的事件日志协议(RELP)是一种通过 TCP 网络记录数据和消息的网络协议。它确保了事件消息的可靠传递,您可以在不容许任何消息丢失的环境中使用它。

RELP 发送者以命令的形式传输日志条目,接收者在处理后确认这些条目。为确保一致性,RELP 将事务数保存到传输的命令中,以便进行任何类型的消息恢复。

您可以考虑在 RELP 客户端和 RELP Server 间的远程日志系统。RELP 客户端将日志传送给远程日志系统,RELP 服务器接收由远程日志系统发送的所有日志。

管理员可以使用 logging 系统角色将日志系统配置为可靠地发送和接收日志条目。

11.7.1. 配置带有 RELP 的客户端日志

您可以使用 logging 系统角色在 RHEL 系统中配置日志,这些日志记录在本地机器上,并通过运行 Ansible playbook 来将日志传送到带有 RELP 的远程日志系统。

此流程对 Ansible 清单中 客户端 组中的所有主机配置 RELP。RELP 配置使用传输层安全(TLS)来加密消息传输,保证日志在网络上安全传输。

先决条件

  • 您有在要配置 RELP 的受管节点上运行 playbook 的权限。
  • 受管节点列在控制节点上的清单文件中。
  • ansiblerhel-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。在与 RELP 工作时,默认的 tls 参数被设置为 true,且需要密钥/证书和 triplets {ca_certcertprivate_key} 和/或 {ca_cert_src,cert_src,private_key_src}。

      • 如果设置了 {ca_cert_src, cert_src ,private_key_src} triplet ,默认位置 /etc/pki/tls/certs/etc/pki/tls/private 被用作受管节点上的目的地,来从控制节点传输文件。在这种情况下,文件名与 triplet 中的原始名称相同
      • 如果设置了 {ca_certcertprivate_key} triplet,则在日志配置之前,文件应位于默认路径上。
      • 如果同时设置了 triplet,则会将文件从本地路径从控制节点传输到受管节点的特定路径。
    • 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:接受身份验证模式为 namefingerprint
    • permitted_servers :日志客户端允许通过 TLS 连接和发送日志的服务器列表。
    • inputs :日志输入字典列表。
    • outputs:日志输出字典列表。
  2. 可选:验证 playbook 语法。

    # ansible-playbook --syntax-check playbook.yml
  3. 运行 playbook:

    # ansible-playbook -i inventory_file playbook.yml

11.7.2. 配置带有 RELP 的服务器日志

您可以使用 logging 系统角色将 RHEL 系统中的日志配置为服务器,并通过运行 Ansible playbook 从带有 RELP 的远程日志系统接收日志。

此流程对 Ansible 清单中 服务器 组中的所有主机配置 RELP。RELP 配置使用 TLS 加密消息传输,以保证在网络上安全地传输日志。

先决条件

  • 您有在要配置 RELP 的受管节点上运行 playbook 的权限。
  • 受管节点列在控制节点上的清单文件中。
  • ansiblerhel-system-roles 软件包已安装在控制节点上。

流程

  1. 使用以下内容创建一个 playbook.yml 文件:

    ---
    - name: Deploying remote input and remote_files output
      hosts: server
      roles:
        - rhel-system-roles.logging
      vars:
        logging_inputs:
          - name: relp_server
            type: relp
            port: 20514
            tls: true
            ca_cert: _/etc/pki/tls/certs/ca.pem_
            cert: _/etc/pki/tls/certs/server-cert.pem_
            private_key: _/etc/pki/tls/private/server-key.pem_
            pki_authmode: name
            permitted_clients:
              - '_*example.client.com_'
        logging_outputs:
          - name: _remote_files_output_
            type: _remote_files_
        logging_flows:
          - name: _example_flow_
            inputs: _relp_server_
            outputs: _remote_files_output_

    playbook 使用以下设置:

    • port :远程日志记录系统正在监听的端口号。
    • tls :确保日志在网络上安全地传输。如果您不想要安全打包程序,可以将 tls 变量设置为 false。在与 RELP 工作时,默认的 tls 参数被设置为 true,且需要密钥/证书和 triplets {ca_certcertprivate_key} 和/或 {ca_cert_src,cert_src,private_key_src}。

      • 如果设置了 {ca_cert_src, cert_src ,private_key_src} triplet ,默认位置 /etc/pki/tls/certs/etc/pki/tls/private 被用作受管节点上的目的地,来从控制节点传输文件。在这种情况下,文件名与 triplet 中的原始名称相同
      • 如果设置了 {ca_certcertprivate_key} triplet,则在日志配置之前,文件应位于默认路径上。
      • 如果同时设置了 triplet,则会将文件从本地路径从控制节点传输到受管节点的特定路径。
    • 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:接受身份验证模式为 namefingerprint
    • permitted_clients:日志记录服务器允许通过 TLS 连接和发送日志的客户端列表。
    • inputs :日志输入字典列表。
    • outputs:日志输出字典列表。
  2. 可选:验证 playbook 语法。

    # ansible-playbook --syntax-check playbook.yml
  3. 运行 playbook:

    # ansible-playbook -i inventory_file playbook.yml