openubmc的sensor模块针对Mngmnt Health传感器事件的实现如下:
当存在传感器(主要是连续传感器)有硬件访问等异常获取不到值时,会触发一条Mngmnt Health传感器事件,其中SelData2和SelData3承载了异常的传感器编号,具体如下:
SelData3 = 0 :传感器编号为SelData2
SelData3 = 1 :传感器编号为SelData2 + 255
SelData3 = 3 :传感器编号为SelData2 + 510
因此通过查看app.log日志信息中添加事件时的打印能确定到异常的传感器的编号,而后进一步可以通过sensor.log中传感器注册信息确定该编号对应哪个传感器。
需要注意的是,传感器编号是动态分配的,经BMC复位后可能会有变化,比如DISK0复位前为0x1,复位后可能为0x3,因此根据日志信息确定到的异常的传感器的编号,为产生事件当时的传感器编号,要想进一步根据传感器编号确定传感器时,一定要从对应时间段的注册日志中确定到传感器。
例如:事件产生时间为“2025-07-16 21:36:08”,则需要在该时间之前最近的一次注册日志中根据编号确定传感器。