[OpenBMC] 从代码谈 Redfish 的Log 机制 (LogService/EventLog)

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

和往常一样,OpenBMC中官方对Redfish 的Log 机制已经有很详细的介绍,所以这篇是结合一些额外的资料来看整个LogService 的架构和原理 (*如果之后OpenBMC架构有变,这边不会再更新)

docs/redfish-logging-in-bmcweb.md at master · openbmc/docs · GitHubhttps://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",
    
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值