ryan1989
(长江计算_张磊)
1
问题描述
我当前再csr中新增了阈值型传感器来表示SW芯片的温度,在web上可看到传感器,但是读值一直为0,且配置的门限值也不显示;
代码片段
sr中传感器的定义代码:
其中的表达式如下:
“Reading”: “<=/PCIeSwitchChip_1.ChipTemperatureCelsius;<=/PCIeSwitchChip_2.ChipTemperatureCelsius |> expr($1 >= $2) ? $1 : $2)”,
mdb_interface中对于ChipTemperatureCelsius属性的定义中也加入了emitsChangedSignal:true
实际环境的对象属性
PCIeSwitchChip_1_010108 和PCIeSwitchChip_2_010108 能看到温度属性是有值的;
通过lsprop ThresholdSensor_SwBoardChip_Temp_010108 可看到轻微上限和严重上限值
具体问题
- web侧门限值不显示的问题要怎样解决?
- 传感器值不随着PCIeSwitchChip_1_010108 和PCIeSwitchChip_2_010108对象的ChipTemperatureCelsius属性值变化要怎样解决?
答案内容由AI生成,仅供参考:
您好,根据您提供的问题描述和上下文信息,我为您分析这两个问题的可能原因及排查思路。
问题一:Web界面门限值不显示
根据提供的上下文信息,Web界面传感器的显示逻辑主要受以下几个属性控制:
ReadingStatus 属性:该属性表示传感器读值的有效性。如果ReadingStatus值非0(例如为1、2等),则表示读值异常或不可用,Web界面将不会显示该传感器的读值和相关门限。
Status 属性:该属性表示传感器是否被启用。如果Status为Disabled,则传感器数据不会在Web上显示。传感器的Status可能会因为其关联的Entity(实体)的Presence(在位状态)或PowerState(上电状态)为0而被自动禁用。
排查步骤建议:
- 检查
ReadingStatus 的值:通过命令 lsprop ThresholdSensor_SwBoardChip_Temp_010108 查看 ReadingStatus 字段是否等于0。
- 如果
ReadingStatus 不为0,说明传感器读值存在异常。需要进一步分析CSR配置中ReadingStatus属性的表达式,找出导致其非零的原因。
- 检查传感器的
Status:在上述命令的输出中查看 bmc.kepler.Systems.ThresholdSensorDisplay 接口下的 Status 字段是否为 Enabled。
- 如果
Status 为 Disabled,需要检查CSR配置中Capabilities属性的bit 7配置。
- 如果
Capabilities的bit 7配置为1(对应Capabilities值为232),表示传感器会受实体失效影响。当其关联的Entity的Presence或PowerState为0时,传感器状态会被设置为Disabled。
- 检查门限属性的配置:确认
ThresholdSensorDisplay接口下的 UpperCriticalDisplay, UpperNoncriticalDisplay, LowerCriticalDisplay 等门限显示属性是否配置了正确的表达式。如果这些表达式未正确关联数据源或表达式本身有误,也可能导致门限值显示为空。
问题二:传感器读值不随数据源变化
根据上下文,ThresholdSensor的Reading属性需要通过一个“同步机制”来感知其数据源(PCIeSwitchChip_1.ChipTemperatureCelsius)的变化。这个机制就是D-Bus的PropertiesChanged信号。
问题核心:您的阈值传感器未能成功订阅或响应其数据源发送的PropertiesChanged信号。
排查步骤建议:
-
确认数据源信号发送:
- 您提到已在
mdb_interface中为ChipTemperatureCelsius属性配置了emitsChangedSignal: true。请再次确认这个配置是正确的,并且BMC服务已重新加载。
- 使用工具(如
busctl monitor)监听该属性的信号,模拟数据源变化,确认信号是否在数据源对象上成功发出。
-
分析传感器同步日志:
-
检查同步表达式:
- 您的表达式较为复杂,使用了三元运算符
expr($1 >= $2) ? $1 : $2)。请确保此语法在同步引擎中是被正确支持的,并且$1和$2能正确解析为PCIeSwitchChip_1.ChipTemperatureCelsius和PCIeSwitchChip_2.ChipTemperatureCelsius的值。
- 错误的表达式语法或不正确的数据源路径引用都会导致同步失败,表现为读值不更新。