[ 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 设置
持久化 journald 存储
默认情况下,systemd 日志保存在内存中,并在重新启动后丢弃。 OpenStack-Ansible 默认设置变量
openstack_host_keep_journals: true,这会在重新启动时持久化日志。 如有需要,可以在您的user_variables.yml中显式配置它openstack_host_keep_journals: true
这确保了即使在主机重新启动后,日志仍然可用于故障排除。
自定义 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 堆栈部署和指标收集。