栏目介绍:“玩转 OurBMC”是 OurBMC 社区创始的常识分享类栏目,次要聚焦于社区和 BMC 全栈技术相干基础知识的分享,全方位涵盖了从实践原理到实际操作的常识传递。OurBMC 社区将通过“玩转 OurBMC”栏目,帮忙开发者们深刻理解到社区文化、理念及特色,增进开发者对 BMC 全栈技术的了解。
欢送各位关注“玩转 OurBMC”栏目,独特摸索 OurBMC 社区的精彩世界。同时,咱们诚挚地邀请各位开发者向“玩转 OurBMC”栏目投稿,独特学习提高,将栏目打造成为汇聚智慧、激发创意的常识园地。
本期内容咱们将深刻摸索 BMC 日志治理模块。首先,咱们将对 BMC 日志治理模块的框架进行全面解析,理解其组件间的交互与协同工作。其次,通过理论案例的分析,深入探讨功能模块的具体作用,并展现其在日常运维中的理论利用操作。这不仅可能帮忙读者更好地了解和应用 BMC 日志治理模块,还将为服务器的稳固运行和故障排查提供无力的反对。
日志治理框架
在 OpenBMC 中,日志解决是一项外围工作,确保零碎事件、谬误、正告和其余重要信息失去妥善记录和治理。其次要采纳 rsyslog 作为日志解决工具,下图为 OpenBMC 日志治理流程图:
1. 日志生成: 零碎中的各个组件和利用在运行时会产生日志音讯。这些音讯蕴含了零碎运行的重要信息,如谬误、正告、告诉等。
2. 日志发送: 日志音讯通常会被发送到日志治理过程。在 OpenBMC 中,罕用的日志治理过程是 systemd-journald(简称 journald)。systemd-journald 负责收集、存储和治理来自零碎各个局部的日志音讯。
3. 日志同步: rsyslog 过程蕴含一个名为 imjournal 的模块,该模块负责同步 systemd-journald 中的日志音讯。这意味着 rsyslog 可能获取到零碎中所有要害事件的日志记录。
4. 日志筛选与格式化: rsyslog 依据其配置文件中的规定,筛选特定的日志音讯。同时,依据用户定义的格局,rsyslog 将筛选后的日志音讯转换为易于浏览和了解的格局。
5. 日志存储与治理: 格式化后的日志音讯会被保留到指定的文件中。这些文件通常位于零碎的规范日志目录下,如 /var/log。通过这种形式,能确保日志音讯的长久化存储,不便后续查看和剖析。同时,为防止日志文件过大导致性能问题或存储空间有余,OpenBMC 应用 logrotate 过程来治理日志文件。logrotate 能够依据配置规定定期轮转、压缩、删除旧的日志文件,从而确保日志零碎的高效运行。
上面咱们将结合实际的案例,介绍各个功能模块的作用和理论应用的操作。
systemd-journald
systemd-journald 是 systemd 我的项目的一部分,它是一个守护程序,用于收集、存储和检索来自各种零碎组件的日志音讯。systemd-journald 功能强大,它应用二进制格局在文件系统中存储日志,这容许它疾速地将日志转换为文本或 JSON 格局,便于检索和剖析。它由以下三局部组成:守护程序(systemd-journald)、配置文件(/etc/systemd/journald.conf)和调试工具(journalctl),同时 Linux 还提供了一个疾速生成日志的工具 logger,容许用户或应用程序间接向 systemd-journald 发送日志音讯。
日志显示格局有多种,systemd-journald 反对以 JSON 格局输入日志,这使得日志音讯更加结构化和易于解析。一条 JSON 格局的日志音讯次要由 [KEY:VALUE] 键值对组成,如下所示,次要由工夫、音讯内容、日志等级、日志产生者等要害信息组成。
在应用 journalctl 查看系统日志时,次要显示 MESSAGE 字段的值,同时,也能够通过增加须要的 KEY 来筛选所需的信息。当应用层须要记录自定义的日志信息时,能够通过 sd_journal_send 函数调用来实现。下图是 OpenBMC 中产生一条 SEL 音讯的实现形式,次要通过 MESSAGE_ID 来标识 SEL 音讯,同时将该函数注册到到 D-Bus 办法 ipmiSelAdd 上,当其余利用调用该函数或者 D-Bus 办法时,即可产生一条 SEL 日志音讯到零碎中。
systemd 库也提供了 journal 日志的读取遍历的接口,通过 sd_journal_open、sd_journal_get_data、sd_journal_close 来实现。在 OpenBMC 环境中,日志管理程序 phosphor-logging 创立 D-Bus 日志正是基于 systemd 库提供的接口。具体来说,phosphor-logging 通过调用 sd_journal_send() 函数向 systemd-journald 守护程序发送一条固定格局的日志音讯。而后遍历 journal,获取对应 ID 的日志音讯,将其对应属性创立到 D-Bus 上。
总的来说,systemd-journald 是一个功能强大的日志零碎,为 systemd 提供了高效的日志收集、存储和查问性能,为系统管理和开发提供了无力的反对。
本期重点介绍了 BMC 日志治理框架和 systemd-journald 模块,下期咱们将持续摸索 BMC 日志治理模块中的其它功能模块,欢送大家继续关注。
欢送大家关注 OurBMC 社区,理解更多技术干货。
OurBMC 社区官方网站:
https://www.ourbmc.cn/