和往常一样,OpenBMC中官方对Redfish 的Log 机制已经有很详细的介绍,所以这篇是结合一些额外的资料来看整个LogService 的架构和原理 (*如果之后OpenBMC架构有变,这边不会再更新)
docs/redfish-logging-in-bmcweb.md at master · openbmc/docs · GitHub
https://github.com/openbmc/docs/blob/master/architecture/redfish-logging-in-bmcweb.md在Redfish 还没问世之前,BMC的世界中会将有问题的事件纪录成System Event Log (SEL),SEL 在IPMI中是用16 Byte来表示,IPMItool 等工具会将其转换为可读性高的文字,而在Redfish 协议中,系统事件的纪录(开关机,温度异常等)是由LogServices来负责监控和配置这些事件,OpenBMC将这些系统事件称Event Log (LogServices 不只有系统事件,还有包含audit log, crashdump 等,这篇文章只会介绍EventLog)
Journal - Systemd日志
Systemd has its own logging system called the journal; running a separate logging daemon is not required systemd/Journal - ArchWiki (archlinux.org)
Journal是systemd本身自帶的日誌系統,它的log分類是根據Syslog協定,透過 "journalctl"指令可以讀取系統日誌,透過設定檔 /etc/systemd/journald.conf 可以更改Journal 設定
//透过 "journalctl"指令可以读取系统日志
> journalctl
Jun 25 08:41:09 intel-obmc bmcweb[370]: pam_succeed_if(webserver:auth): requirement "user ingroup redfish" was met by user "root"
Rsyslog是一个基于Syslog 的开源软件程序,可在设定档 /etc/rsyslog.conf 中,根据Journal不同的fields 来将不同的logs存放在相对应的档案和设定输出格式。
//加上-o json可以将所有filed用json格式印出来,可以看到"PRIORITY" 这样就算一个filed,我们也可以自己定义想要的filed,filed的数量并没有规定,名字可以自定义的
> journalctl -o json
{
"_SOURCE_REALTIME_TIMESTAMP": "1624610486273832",

本文详细介绍了Redfish中的LogService架构,特别是OpenBMC如何使用Systemd的Journal和Rsyslog对系统事件进行记录和分类。通过`journalctl`命令查看日志,并解释了RedfishTemplate如何用于存储和检索Redfish日志。文章还探讨了MessageRegistry在Redfish中定义和翻译消息的作用。最后,概述了LogService的获取路径`/redfish/v1/Systems/system/LogServices/EventLog/Entries`。
最低0.47元/天 解锁文章
1万+





