[ English | Indonesia | русский ]

OpenStack-Ansible 中的日志服务

自 Train 版本发布以来,OpenStack-Ansible 服务已配置为将日志保存到 systemd-journald 而不是传统的日志文件。容器的 journald 日志会传递到物理主机,因此您可以使用 journalctl 等工具直接从金属主机读取和操作所有服务日志。

systemd-journald 与各种日志收集器和转发器集成良好,包括 rsyslog。但是,虽然 rsyslog 将数据存储为纯文本(使其更难有效地索引和搜索),但 journald 使用结构化格式,允许现代日志分析工具更有效地查询和处理日志。

日志位置

所有容器日志都可以在主机上访问

/var/log/journal/

这允许您使用 journalctl 等工具直接在主机上访问和过滤所有服务日志。 这也允许在主机上运行的日志收集器更无缝地获取和处理来自所有服务容器的 journald 日志流。

注意

由于采用 systemd-journald 作为主要的日志后端,因此容器内 /openstack/log//var/log/$SERVICE 的传统映射不再存在。 应通过 journald 工具(如 journalctl)直接访问日志,或检查主机上的 /var/log/journal/ 目录。

配置 journald

openstack_hosts 角色允许控制主机上 systemd-journald 的行为。 有以下变量可配置 journald 设置

  1. 持久化 journald 存储

    默认情况下,systemd 日志保存在内存中,并在重新启动后丢弃。 OpenStack-Ansible 默认设置变量 openstack_host_keep_journals: true,这会在重新启动时持久化日志。 如有需要,可以在您的 user_variables.yml 中显式配置它

    openstack_host_keep_journals: true
    

    这确保了即使在主机重新启动后,日志仍然可用于故障排除。

  2. 自定义 journald 配置

    您可以通过在 user_variables.yml 中的 openstack_hosts_journald_config 中定义映射来提供任意 journald 配置选项。 例如

    openstack_hosts_journald_config:
      SystemMaxUse: 20G
      MaxRetentionSec: 7day
    

    此示例将 journald 的最大磁盘使用量限制为 20 GB,并保留 7 天的日志。

调整任何 journald 相关变量后,可以通过重新运行 openstack_hosts_setup 角色来应用更改

openstack-ansible openstack.osa.openstack_hosts_setup

您还可以查看我们的 ELK 角色,来自 OPS 仓库,以获取现成的 ELK 堆栈部署和指标收集。