コンテンツにスキップ

裏取りステータス: code-verified

sonic-platform-daemons/sonic-sensormond/scripts/sensormondVOLTAGE_INFO / CURRENT_INFO テーブル更新と VoltageSensorFs / CurrentSensorFs の使用を確認。base API は sonic-platform-common/sonic_platform_base/sensor_base.py / sensor_fs.py / chassis_base.pyget_all_voltage_sensors / get_all_current_sensors)、Module も module_base.py 経由で公開。SNMP Entity Sensor MIB 拡張は rfc3433.py 側で対応するセンサ種別を確認。

SensorMon(PMON 内の voltage / current センサ監視)

概要

ボード上には電圧コントローラ / 電流センサ / 高度センサ等、温度以外の 環境センサ が多数ある。Linux の lm-sensors / hwmon でも一部読めるが、HLD は次の限界を指摘1:

  • hwmon が対応していないデバイスは見えない
  • 内蔵 monitoring が無い simple device の alarm が上がらない
  • 機種ごとの platform specific threshold を扱えない

そこで PMON コンテナに新 daemon SensorMon を追加し、platform API を通じて汎用にセンサ群を発見・周期 poll・しきい値判定・アラーム生成する1。温度センサは thermalctld の管轄なので 対象外1

動作仕様

スコープ

対象1:

  • voltage sensor(電圧)
  • current sensor(電流)
  • altitude sensor など、将来追加されうる sensor 系

非対象1:

  • 温度センサ(既存 thermalctld 管轄)
  • voltage 障害時の 自動復旧(NMS 側に委ねる)

コンポーネント関係

flowchart LR
  HW["voltage / current<br/>controller IC"] --> PA["platform API<br/>VoltageBase / CurrentBase"]
  PA --> SM["SensorMon daemon<br/>(PMON 内)"]
  SM -->|poll| SDB["STATE_DB<br/>VOLTAGE_INFO / CURRENT_INFO 等"]
  SM -->|threshold 超過| SYS["syslog<br/>minor / major / critical"]
  SM --> SH["system health<br/>aggregation"]
  SDB --> CLI["show platform voltage / current"]
  SDB --> SNMP["Entity MIB / Entity Sensor MIB"]

platform API

ベンダ提供 API は次を満たす1:

  • 指定型のセンサ全列挙(list)
  • 個別センサの読取(測定値・しきい値)

これにより HW 違いを SensorMon 共通コードから抽象化する。

周期 poll とアラーム判定

SensorMon は周期 poll で各 sensor を読み、minor / major / critical の 3 段階しきい値で判定1:

  • しきい値突破時 → syslog xxx voltage <minor|major|critical> alarm raised
  • 戻った時 → syslog xxx voltage alarm cleared

判定はベンダが platform API 経由で渡してくる threshold を信用する。

system health との統合

SensorMon のアラームは system health 集約に乗る1。複数センサの状態が aggregator で 1 つの「ヘルス」として表示できる。

Entity MIB 連携

新規センサ群は Entity MIB / Entity Sensor MIB にも晒される1。これにより SNMP 経由のモニタリングシステムから、温度と同じインタフェースで電圧・電流が見える。

📋 検証エビデンス: sonic-net/SONiC/doc/pmon/pmon-sensormon.md#L34-L48 (sha: 49bab5b5ff0e924f1ea52b3d9db0dfa4191a7c06)

出典:

sonic-net/SONiC/doc/pmon/pmon-sensormon.md#L34-L48 (sha: 49bab5b5ff0e924f1ea52b3d9db0dfa4191a7c06)

抜粋:

Linux does provide some support of voltage and current sensor monitoring using lmsensors/hwmon infrastructure. However there are a few limitations:
- Devices not supported with Hwmon are not covered
- Simple devices which donot have an inbuilt monitoring functions do not generate any alarms
- Platform specific thresholds for monitoring are not available

判断根拠: SensorMon を新設する根本動機の根拠。

拡張性

「将来 sensor 種別を増やす framework」を提供することが要件1。voltage / current は最初の対象。altitude などはこの枠組みに同種で乗せる前提。

設定

関連する CONFIG_DB

該当なし(HLD では明示的な CONFIG_DB 利用無し)。しきい値は platform API 提供。

関連する CLI

CLI は HLD で「provided to display the sensor devices, their measurements, threshold values and if they are reporting an alarm」と書かれるのみ1。具体名(show platform voltage 等)は HLD では確定していないので列挙しない。

設定例

# STATE_DB の確認
redis-cli -n 6 KEYS "VOLTAGE_INFO|*"
redis-cli -n 6 HGETALL "VOLTAGE_INFO|board_3v3"

# 警告ログ
journalctl | grep -iE "voltage.*alarm|current.*alarm"

制限事項

  • 自動復旧アクションは scope 外(NMS 側で実施)1
  • 温度は対象外(thermalctld を使う)
  • ベンダの platform API が voltage / current セット を実装していないと検出できない
  • HLD は Rev 1.0 のみで日付欄空欄。改訂時期不明
  • minor / major / critical の閾値定義は platform API に丸投げで、SONiC レベルでの統一フォーマットは規定されていない

干渉する機能

  • thermalctld: 温度センサのみ。voltage / current には触れない
  • PMON enhancement design: PSU 全体の表現と部分的に重複。voltage センサが PSU 配下にある場合は両 daemon が同一 HW を別観点で見る
  • system health: SensorMon のアラームを集約
  • Entity MIB / Entity Sensor MIB: SNMP 経由で値が見える
  • lm-sensors / hwmon: HLD は明確に「hwmon の限界を埋める」と位置付け、hwmon と並走する

トラブルシューティング

# SensorMon の動作確認
docker exec pmon supervisorctl status sensormond  # 名称はベンダ次第の可能性

# voltage 値
redis-cli -n 6 KEYS "VOLTAGE_INFO|*"
redis-cli -n 6 HGETALL "VOLTAGE_INFO|<key>"

# しきい値チェック
redis-cli -n 6 HGETALL "VOLTAGE_INFO|<key>" | grep -E "high_threshold|warning_status"

# 直近の alarm
journalctl --since "1 hour ago" | grep -iE "voltage|current.*alarm"

関連 reference

引用元


  1. sonic-net/SONiC doc/pmon/pmon-sensormon.md @ 49bab5b5ff0e924f1ea52b3d9db0dfa4191a7c06