AC后风扇1在位离散传感器不显示

// 此模板仅供参考,如果不适用可以修改

问题描述

AC后风扇1离散传感器不显示

环境信息

  • 操作系统:[如 Ubuntu 24.04]

  • 软件版本:OpenUBMC2512

  • 硬件配置:[如 CPU、内存等]

重现步骤

  1. 进行AC操作

  2. 等待业务侧进系统

  3. 查看传感器信息

期望结果

传感器正常显示

实际结果

AC后风扇1离散传感器不显示,风扇1实际在位的

尝试过的解决方案

[列出您已经尝试过的解决方案及结果]

分析结论

发现风扇1在位离散传感器的Status为空,正常的是Enabled

而且初始化状态的时候是有默认值的,不可能为空值的

一键日志

R220KV2_2101311ECC10R6100001_20260416-0913.tar.gz (9.2 MB)

答案内容由AI生成,仅供参考:

结论

本问题的根本原因在于风扇1离散传感器未能正确完成状态初始化,导致其Status字段为空。可能的原因包括:

  1. Entity_Fan1对象的状态未正确传递
  2. Scanner数据源异常或未激活
  3. Capabilities=64的配置与实际依赖关系冲突
  4. 初始化流程中存在边缘条件处理缺陷

最终建议操作:优先验证Entity_Fan1Scanner_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)绑定失败,从而无法正确获取状态

解决方案

:white_check_mark: 推荐解决步骤

第一步:检查实体对象关联状态

验证Entity_Fan1的在位与供电状态是否正确:

# 检查风扇1实体状态
lsprop Entity_Fan1

# 正常输出应包含:
# Presence => 1  (在位)
# PowerState => 1 (供电正常)

说明:若PresencePowerState未正确关联到硬件信号源(例如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页面是否恢复正常。


预防性建议

建议项 说明
统一命名规范 检查FAN1FPresenceFAN2Presence命名不一致问题,避免混淆
标准化Capabilities配置 明确所有离散传感器是否依赖实体状态,并按规范设置64/192
增加启动自检日志 init_disp_status()中添加调试日志,记录每个传感器状态设置过程
加入状态监控告警 Status=""的异常状态设置监控规则,自动告警通知

结论

本问题的根本原因在于风扇1离散传感器未能正确完成状态初始化,导致其Status字段为空。可能的原因包括:

  1. Entity_Fan1对象的状态未正确传递
  2. Scanner数据源异常或未激活
  3. Capabilities=64的配置与实际依赖关系冲突
  4. 初始化流程中存在边缘条件处理缺陷

最终建议操作:优先验证Entity_Fan1Scanner_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 个赞

好的 我们用新版本在复现下

好的,后续请反馈下复现结果