从 agent ramdisk 收集日志

https://bugs.launchpad.net/ironic/+bug/1587143

此规范添加了从 agent ramdisk 检索部署系统日志的支持。

问题描述

目前我们没有记录任何自动从 Bootstrap 检索系统日志的机制。在部署失败后,访问 agent ramdisk 日志可能非常重要。在远程服务器上收集日志是常见的部署操作。有很多专有、开源、标准化的技术来解决此任务。让我们来看看 Linux 原生支持的

  1. Syslog:是标准化的消息记录协议,在 RFC 中有描述。所有发行版都以不同的实现方式支持 syslog rsyslogd, syslogd, syslog-ng

  2. Systemd journal-remote:systemd 工具,用于通过网络发送/接收 journal 消息。

提议的变更

提议的实现方式是添加文档,帮助 Operators 构建具有收集日志功能的 agent ramdisk。基于 syslog 和 systemd journal-remote 技术之上。

IPA 中的更改

添加了一个新的内核参数 use_syslog

  1. use_syslog (布尔值):IPA 是否应该将日志发送到 syslog。默认为“False”。

Ironic 中的更改

[agent] 部分添加了新的 pxe_append 参数 use_syslogsyslog_server

  1. use_syslog (布尔值):IPA 是否应该将日志发送到 syslog。默认为“False”。

  2. syslog_server (字符串):用于发送系统日志的 syslog 服务器的 IP 地址或 DNS 名称。默认为“ironic-conductor 节点的 IP 地址”。该变量可用于配置 rsyslogdsyslog 或任何其他 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 的日志的文档。

参考资料

无。