15.2. 使用 logging RHEL 系统角色应用一个远程日志解决方案


您可以使用 logging RHEL 系统角色配置远程日志记录解决方案,其中一个或多个客户端从 systemd-journal 服务获取日志并将其转发到远程服务器。服务器从 remote_rsyslogremote_files 配置接收远程输入,并将日志输出到远程主机名命名的目录中的本地文件。

因此,您可以涵盖您需要的用例:

  • 集中式日志管理:从单一存储点收集、访问和管理多台计算机的日志消息,简化了日常监控和故障排除任务。此外,此用例还减少了登录各个计算机来检查日志消息的需要。
  • 增强的安全性:在一个中央位置存储日志消息会增加他们处于安全且篡改的环境中的机会。这样的环境可以更轻松地检测和响应安全事件,并更方便地满足审计要求。
  • 提高了日志分析的效率:协调来自多个系统的日志消息对于跨多个机器或服务的复杂问题的快速故障排除非常重要。这样,您可以快速分析和交叉引用来自不同来源的事件。

先决条件

流程

  1. 创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml

    ---
    - name: Deploy the logging solution
      hosts: managed-node-01.example.com
      tasks:
        - name: Configure the server to receive remote input
          ansible.builtin.include_role:
            name: 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: Deploy the logging solution
      hosts: managed-node-02.example.com
      tasks:
        - name: Configure the server to output the logs to local files in directories named by remote host names
          ansible.builtin.include_role:
            name: 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]

    示例 playbook 的第一个 play 中指定的设置包括:

    logging_inputs
    定义日志记录输入字典的列表。type: remote 选项涵盖通过网络的其他日志记录系统的远程输入。udp_ports: [ 601 ] 选项定义要监控的 UDP 端口号的列表。tcp_ports: [ 601 ] 选项定义要监控的 TCP 端口号列表。如果设置了 udp_portstcp_ports,则使用 udp_ports,并丢弃 tcp_ports
    logging_outputs
    定义日志输出字典的列表。type: remote_files 选项使输出将日志存储到每个远程主机和程序名称,其源自日志。
    logging_flows
    定义日志记录流字典列表,以指定 logging_inputslogging_outputs 之间的关系。inputs: [remote_udp_input, remote_tcp_input] 选项指定从其处理日志的输入列表。outputs: [remote_files_output] 选项指定日志发送到的输出列表。

    示例 playbook 的第二个 play 中指定的设置包括:

    logging_inputs
    定义日志记录输入字典的列表。type: basics 选项涵盖了 systemd 日志或 Unix 套接字的输入。
    logging_outputs
    定义日志输出字典的列表。type: forwards 选项支持通过网络向远程日志服务器发送日志。severity: info 选项指的是有关信息重要性的日志消息。facility: mail 选项指的是正在生成日志消息的系统程序类型。target: <host1.example.com > 选项指定远程日志记录服务器的主机名。udp_port:601/tcp_port:601 选项定义远程日志记录服务器侦听的 UDP/TCP 端口。
    logging_flows
    定义日志记录流字典列表,以指定 logging_inputslogging_outputs 之间的关系。inputs: [basic_input] 选项指定从其处理日志的输入列表。输出: [forward_output0, forward_output1] 选项指定日志发送到的输出列表。

    有关 playbook 中使用的所有变量的详情,请查看控制节点上的 /usr/share/ansible/roles/rhel-system-roles.logging/README.md 文件。

  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml

    请注意,这个命令只验证语法,不会防止错误但有效的配置。

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml

验证

  1. 在客户端和服务器系统上测试 /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.
  2. 验证客户端系统向服务器发送信息:

    1. 在客户端系统中发送测试信息:

      # logger test
    2. 在服务器系统上,查看 /var/log/<host2.example.com>/messages 日志,例如:

      # cat /var/log/<host2.example.com>/messages
      Aug  5 13:48:31 <host2.example.com> root[6778]: test

      其中 <host2.example.com> 是客户端系统的主机名。请注意,该日志包含输入 logger 命令的用户的用户名,本例中为 root

其他资源

  • /usr/share/ansible/roles/rhel-system-roles.logging/README.md 文件
  • /usr/share/doc/rhel-system-roles/logging/ 目录
  • rsyslog.conf (5)syslog (3) 手册页
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.