// 此模板仅供参考,如果不适用可以修改
问题描述
AC后风扇1离散传感器不显示
环境信息
-
操作系统:[如 Ubuntu 24.04]
-
软件版本:OpenUBMC2512
-
硬件配置:[如 CPU、内存等]
重现步骤
-
进行AC操作
-
等待业务侧进系统
-
查看传感器信息
期望结果
传感器正常显示
实际结果
AC后风扇1离散传感器不显示,风扇1实际在位的
尝试过的解决方案
[列出您已经尝试过的解决方案及结果]
分析结论
发现风扇1在位离散传感器的Status为空,正常的是Enabled
而且初始化状态的时候是有默认值的,不可能为空值的
一键日志
R220KV2_2101311ECC10R6100001_20260416-0913.tar.gz (9.2 MB)
答案内容由AI生成,仅供参考:
结论
本问题的根本原因在于风扇1离散传感器未能正确完成状态初始化,导致其Status字段为空。可能的原因包括:
Entity_Fan1对象的状态未正确传递
- Scanner数据源异常或未激活
Capabilities=64的配置与实际依赖关系冲突
- 初始化流程中存在边缘条件处理缺陷
最终建议操作:优先验证Entity_Fan1和Scanner_Fan1_Presence的状态输出,确保数据链路完整;然后调整Capabilities配置;最后重启sensor服务验证修复效果。
点击此处查看详细分析解答
AC后风扇1在位离散传感器不显示问题分析与解决方案
问题描述
在进行AC(交流电复位)操作后,风扇1的在位离散传感器状态未正常显示,Status字段为空值。尽管风扇物理上在位且其他风扇传感器工作正常,但只有风扇1的离散传感器状态异常。
实际现象:
- 风扇1物理在位、转速正常
- Web界面中风扇1的离散传感器
Status为空
- 其他风扇(如FAN2)传感器显示正常,
Status为"Enabled"
- 系统日志显示传感器初始化时应有默认值,不应为空
根源分析
1. 离散传感器状态生成机制
根据知识库中的配置逻辑,离散传感器状态由以下流程决定:
function sensor_instance:init_disp_status()
local data = { id = self.mdb_obj.EntityId, instance = self.mdb_obj.EntityInstance, host_id = sel }
local data = self.entity_sigs.getStatus:emit(data)
if status == utils.SCAN_DISABLED then
local cap = utils.capability:unpack(string.pack('I1', self.mdb_obj.Capabilities))
if (not cap or cap.ignore_support ~= 1) then
status = utils.SCAN_ENABLED
end
end
local s = utils.reading_state:unpack(string.pack('I1', self.sensor_status))
s.disable_scanning_local = status
self.sensor_status = string.unpack('I1', utils.reading_state:pack(s))
shm_data_mgmt.update_sensor_prop(self.sensor_number, 'scan_status', self.sensor_status)
local disp_status = common_get_scan_enabled(self.sensor_status) and 'Enabled' or 'Disabled'
return common.convert_sensor_status(self.disp_obj.Status, disp_status)
end
该函数负责将底层状态转换为Web可读的Enabled/Disabled状态。
2. 风扇1与风扇2配置对比差异
通过对两个传感器属性的比对分析,发现关键差异:
| 属性 |
FAN1 Presence |
FAN2 Presence |
ObjectName |
DiscreteSensor_FAN1FPresence_010103 |
DiscreteSensor_FAN2Presence_010103 |
EntityInstance |
100 |
97 |
SensorNumber |
39 |
40 |
Status |
空值 |
“Enabled” |
虽然Capabilities均为64(表示传感器使能状态不受实体在位/上下电影响),但最终显示状态不一致。
3. 核心问题点
- 空值问题:
bmc.kepler.Systems.DiscreteSensorDisplay.Status为空字符串,而非预期的"Enabled"
- 初始化异常:按照逻辑,即使扫描被禁用,若
Capabilities不支持禁用(ignore_support=1),也会强制设为SCAN_ENABLED
- EntityInstance关联性:不同
EntityInstance可能导致与实体对象(如Entity_Fan1)绑定失败,从而无法正确获取状态
解决方案
推荐解决步骤
第一步:检查实体对象关联状态
验证Entity_Fan1的在位与供电状态是否正确:
# 检查风扇1实体状态
lsprop Entity_Fan1
# 正常输出应包含:
# Presence => 1 (在位)
# PowerState => 1 (供电正常)
说明:若Presence或PowerState未正确关联到硬件信号源(例如Scanner),会导致依赖其的传感器无法启用。
第二步:确认Scanner数据源有效性
检查Scanner_Fan1_Presence是否正常输出:
# 查看Scanner值
lsprop Scanner_Fan1_Presence
# 期望输出类似:
# Value = 1
如无输出或固定为0,需检查GPIO/硬件连接或Scanner配置。
第三步:修复Capabilities配置逻辑
根据BMC传感器配置规范,当传感器使能状态受实体在位和上下电影响时,应配置为192,否则为64。
当前两个风扇均配置为64,但行为不同,建议统一检查并修正:
"DiscreteSensor_FAN1FPresence": {
"Capabilities": 192, // 若受实体状态影响
...
}
第四步:重启sensor服务强制重载
尝试清除缓存并重启传感器管理模块:
systemctl restart sensor
# 或
pkill sensor && sleep 3; sensor &
然后再次观察Web页面是否恢复正常。
预防性建议
| 建议项 |
说明 |
| 统一命名规范 |
检查FAN1FPresence与FAN2Presence命名不一致问题,避免混淆 |
| 标准化Capabilities配置 |
明确所有离散传感器是否依赖实体状态,并按规范设置64/192 |
| 增加启动自检日志 |
在init_disp_status()中添加调试日志,记录每个传感器状态设置过程 |
| 加入状态监控告警 |
对Status=""的异常状态设置监控规则,自动告警通知 |
结论
本问题的根本原因在于风扇1离散传感器未能正确完成状态初始化,导致其Status字段为空。可能的原因包括:
Entity_Fan1对象的状态未正确传递
- Scanner数据源异常或未激活
Capabilities=64的配置与实际依赖关系冲突
- 初始化流程中存在边缘条件处理缺陷
最终建议操作:优先验证Entity_Fan1和Scanner_Fan1_Presence的状态输出,确保数据链路完整;然后调整Capabilities配置;最后重启sensor服务验证修复效果。
如果资源协作接口有但北向接口查不到,那么一定是该传感器未注册到sensor组件管理,怀疑是注册阶段存在问题。当前分析日志发现最近的两次启动中,前一次是正常注册的后一次则漏掉了FAN1的注册
行 872: [2026-05-03 17:41:16] sensor DiscreteSensor_FAN1FPresence_010103 of host 0 is registered, number is 197.
行 873: [2026-05-03 17:41:16] discrete sdr DiscreteSensor_FAN1FPresence_010103 of host 0 is registered.
行 874: [2026-05-03 17:41:16] sensor DiscreteSensor_FAN2FPresence_010103 of host 0 is registered, number is 198.
行 875: [2026-05-03 17:41:16] discrete sdr DiscreteSensor_FAN2FPresence_010103 of host 0 is registered.
行 876: [2026-05-03 17:41:16] sensor DiscreteSensor_FAN4FPresence_010103 of host 0 is registered, number is 199.
行 877: [2026-05-03 17:41:16] discrete sdr DiscreteSensor_FAN4FPresence_010103 of host 0 is registered.
行 878: [2026-05-03 17:41:16] sensor DiscreteSensor_FAN3FPresence_010103 of host 0 is registered, number is 200.
行 879: [2026-05-03 17:41:16] discrete sdr DiscreteSensor_FAN3FPresence_010103 of host 0 is registered.
行 880: [2026-05-03 17:41:16] discrete event [DiscreteEvent_FAN1FPresence_010103] is registered
行 881: [2026-05-03 17:41:17] discrete event [DiscreteEvent_FAN2FPresence_010103] is registered
行 882: [2026-05-03 17:41:17] discrete event [DiscreteEvent_FAN3FPresence_010103] is registered
行 883: [2026-05-03 17:41:17] discrete event [DiscreteEvent_FAN4FPresence_010103] is registered
=============================================================================================================================
行 1061: [2026-05-03 17:46:20] sensor DiscreteSensor_FAN4FPresence_010103 of host 0 is registered, number is 12.
行 1062: [2026-05-03 17:46:20] discrete sdr DiscreteSensor_FAN4FPresence_010103 of host 0 is registered.
行 1063: [2026-05-03 17:46:20] sensor DiscreteSensor_FAN2FPresence_010103 of host 0 is registered, number is 40.
行 1064: [2026-05-03 17:46:20] discrete sdr DiscreteSensor_FAN2FPresence_010103 of host 0 is registered.
行 1065: [2026-05-03 17:46:20] sensor DiscreteSensor_FAN3FPresence_010103 of host 0 is registered, number is 41.
行 1066: [2026-05-03 17:46:20] discrete sdr DiscreteSensor_FAN3FPresence_010103 of host 0 is registered.
行 1067: [2026-05-03 17:46:20] discrete event [DiscreteEvent_FAN3FPresence_010103] is registered
行 1068: [2026-05-03 17:46:20] discrete event [DiscreteEvent_FAN2FPresence_010103] is registered
行 1069: [2026-05-03 17:46:20] discrete event [DiscreteEvent_FAN4FPresence_010103] is registered
怀疑是异步注册且风扇对象在启动阶段可能会发生卸载再加载,触发了该概率问题;注意到当前使用的 sensor 组件版本为 sensor/1.70.103@openubmc/stable,启动注册问题在 1.70.107 版本已做过加固优化(优化传感器对象注册),请尝试升级版本修复该问题
2 个赞