第 6 章 使用 RHEL 系统角色配置日志记录


您可以使用 logging RHEL 系统角色将本地和远程主机配置为自动记录服务器,以便从多个客户端系统收集日志。

日志记录解决方案提供多种读取日志和多个日志记录输出的方法。

例如,日志记录系统可接受以下输入:

  • 本地文件
  • systemd/journal
  • 网络上的另一个日志记录系统

另外,日志记录系统还可有以下输出:

  • 日志存储在 /var/log/ 目录中的本地文件中
  • 日志发送到 Elasticsearch 引擎
  • 日志被转发到另一个日志系统

使用 logging RHEL 系统角色,您可以组合输入和输出以适合您的场景。例如,您可以配置一个日志解决方案,将来自 日志 的输入存储在本地文件中,而从文件读取的输入则被转发到另一个日志系统,并存储在本地日志文件中。

您可以使用 logging RHEL 系统角色的基于属性的过滤器,根据各种情况过滤本地日志消息。因此,您可以实现,例如:

  • 日志清晰度:在高流量环境中,日志可能会快速增长。专注于特定消息(如错误)有助于更快地识别问题。
  • 优化的系统性能:大量日志通常与系统性能下降有关。仅针对重要事件选择记录日志可以防止资源耗尽,从而使您的系统更有效地运行。
  • 增强了安全性:通过安全消息,如系统错误和失败的登录进行高效过滤,有助于仅捕获相关日志。这对于检测漏洞和满足合规性标准非常重要。

先决条件

流程

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

    ---
    - name: Deploy the logging solution
      hosts: managed-node-01.example.com
      tasks:
        - name: Filter logs based on a specific value they contain
          ansible.builtin.include_role:
            name: redhat.rhel_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]
    Copy to Clipboard Toggle word wrap

    示例 playbook 中指定的设置包括如下:

    logging_inputs
    定义一个记录输入字典的列表。type: basics 选项涵盖了来自 systemd 日志或 Unix 套接字的输入。
    logging_outputs
    定义一个记录输出字典的列表。type: files 选项支持将日志存储在本地文件中,通常存储在 /var/log/ 目录中。property: msg; property: containsproperty_value: error 选项指定所有包含 error 字符串的日志都存储在 /var/log/errors.log 文件中。property: msg; property: !contains; 和 property_value: error 选项指定所有其他日志都放在 /var/log/others.log 文件中。您可以将 error 值替换为您要过滤的字符串。
    logging_flows
    定义一个记录流字典的列表,以指定 logging_inputslogging_outputs 之间的关系。inputs: [files_input] 选项指定一个从其开始处理日志的输入的列表。outputs: [files_output0, files_output1] 选项指定一个日志发送到的输出的列表。

    有关 playbook 中使用的所有变量的详情,以及 rsyslog 的更多信息,请参阅控制节点上的 /usr/share/ansible/roles/rhel-system-roles.logging/README.md 文件和 rsyslog.conf (5)syslog (3) 手册页。

  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

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

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

验证

  1. 在受管节点上,测试 /etc/rsyslog.conf 文件的语法:

    # rsyslogd -N 1
    rsyslogd: version 8.1911.0-6.el8, config validation run...
    rsyslogd: End of config validation run. Bye.
    Copy to Clipboard Toggle word wrap
  2. 在受管节点上,验证系统是否向日志发送包含 error 字符串的消息:

    1. 发送测试信息:

      # logger error
      Copy to Clipboard Toggle word wrap
    2. 查看 /var/log/errors.log 日志,例如:

      # cat /var/log/errors.log
      Aug  5 13:48:31 hostname root[6778]: error
      Copy to Clipboard Toggle word wrap

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat