从 agent ramdisk 收集日志¶
https://bugs.launchpad.net/ironic/+bug/1587143
此规范添加了从 agent ramdisk 检索部署系统日志的支持。
问题描述¶
目前我们没有记录任何自动从 Bootstrap 检索系统日志的机制。在部署失败后,访问 agent ramdisk 日志可能非常重要。在远程服务器上收集日志是常见的部署操作。有很多专有、开源、标准化的技术来解决此任务。让我们来看看 Linux 原生支持的
Syslog:是标准化的消息记录协议,在 RFC 中有描述。所有发行版都以不同的实现方式支持 syslog
rsyslogd,syslogd,syslog-ngSystemd journal-remote:systemd 工具,用于通过网络发送/接收 journal 消息。
提议的变更¶
提议的实现方式是添加文档,帮助 Operators 构建具有收集日志功能的 agent ramdisk。基于 syslog 和 systemd journal-remote 技术之上。
IPA 中的更改¶
添加了一个新的内核参数 use_syslog。
use_syslog(布尔值):IPA 是否应该将日志发送到 syslog。默认为“False”。
Ironic 中的更改¶
在 [agent] 部分添加了新的 pxe_append 参数 use_syslog 和 syslog_server。
use_syslog(布尔值):IPA 是否应该将日志发送到 syslog。默认为“False”。syslog_server(字符串):用于发送系统日志的 syslog 服务器的 IP 地址或 DNS 名称。默认为“ironic-conductor 节点的 IP 地址”。该变量可用于配置rsyslogd或syslog或任何其他 syslog 服务器实现。
agent ramdisk 中的更改¶
Bootstrap 应该支持通过 syslog/systemd 进行远程日志记录。所有 agent ramdisk 更改都与日志工具配置(rsyslogd、syslogd、journal-remote)相关。日志服务应该在网络服务启动后立即启动,以确保我们发送所有来自 OpenStack 服务的日志。在 Collector 侧(ironic-conductor)我们从 Originator(agent ramdisk)接收消息,并根据本地规则放置。它可能是文件系统上的一个目录:/var/log/remote/ironic/<node_uuid>/<log_filename>
备选方案¶
按照 https://review.opendev.org/323511 中描述的方式,在 Ironic 和 IPA 中实现日志收集机制。
数据模型影响¶
无
状态机影响¶
无
REST API 影响¶
无
客户端 (CLI) 影响¶
无
RPC API 影响¶
无
驱动程序 API 影响¶
无
Nova 驱动程序影响¶
无
Ramdisk 影响¶
将向 ramdisk 构建工具(例如 diskimage-builder)和 IPA 仓库中的镜像构建脚本添加支持,以构建具有远程日志记录支持的 ramdisk。
安全影响¶
无。
其他最终用户影响¶
无。
可扩展性影响¶
无
性能影响¶
无
其他部署者影响¶
Deployer 选择应该使用哪种机制来收集日志。agent ramdisk 的一般更改在 agent ramdisk 中的更改 中描述
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
lucasagomes <lucasagomes@gmail.com> vsaienko <vsaienko@mirantis.com>
其他贡献者
工作项¶
添加文档,描述如何在 ironic-conductor 上配置
Collector,以及在 ironic agent ramdisk 上基于 rsyslogd 或 syslogd 或 journal-remote 配置Originator。添加构建最流行的镜像(coreos、tinyipa)的 syslog 支持示例。还将添加一个新的
dib元素。集成在 devstack 主机上配置
Collector。
依赖项¶
无
测试¶
将在 gate jobs 上配置从 agent ramdisk 收集日志。来自 agent ramdisk 的日志目录将被存档,并在 jobs artefacts 中可用。
升级和向后兼容性¶
无。
文档影响¶
将提供关于如何配置 syslog Collector 以接收和存储来自 Originator 的日志的文档。
参考资料¶
无。