コンテンツにスキップ

運用

ここでは、装置 health と optics に関連する確認順序を、運用シナリオ別に整理します。各 daemon の詳細は元 HLD を参照してください。

どの daemon がどこを見ているか

flowchart LR
  subgraph pmon[pmon container]
    X[xcvrd]
    T[thermalctld]
    P[psud]
    PC[pcied]
    SS[ssdmon / storage_monitor]
    SE[sensormond]
  end
  X --> SDB[STATE_DB]
  T --> SDB
  P --> SDB
  PC --> SDB
  SS --> SDB
  SE --> SDB
  SDB --> CLI[show platform / SNMP / Redfish]

show platform 系コマンドは基本的に STATE_DB を経由するため、daemon が値を更新できていないと CLI も空に見えます。最初に確認するのは daemon の up/down です。

daemon の起動確認

admin@sonic:~$ docker exec pmon supervisorctl status
xcvrd                            RUNNING   pid 42, uptime 5 days, 02:13:41
thermalctld                      RUNNING   pid 45, uptime 5 days, 02:13:41
psud                             RUNNING   pid 48, uptime 5 days, 02:13:41
pcied                            RUNNING   pid 51, uptime 5 days, 02:13:41
ledd                             RUNNING   pid 54, uptime 5 days, 02:13:41
syseepromd                       EXITED    Mar 03 12:00 PM
chassisd                         RUNNING   pid 60, uptime 5 days, 02:13:41

EXITED / FATAL の daemon があると STATE_DB が更新されません。docker logs pmon から該当 daemon の例外を拾います。

Optics: SFP / QSFP / CMIS

xcvrd は SFP 系の EEPROM 読出しと state machine を担当します。CMIS (Common Management Interface Spec) 採用モジュールは、レガシー SFP より複雑な state machine を持ちます。

「モジュールを挿したのに認識されない / DOM が出ない / link が上がらない」は、まず xcvrd ログと STATE_DB の TRANSCEIVER_INFO / TRANSCEIVER_DOM_SENSOR を見ます。

show / DB 確認の典型

admin@sonic:~$ show interfaces transceiver presence Ethernet0
Port         Presence
-----------  ----------
Ethernet0    Present

admin@sonic:~$ show interfaces transceiver eeprom -d Ethernet0
Ethernet0: SFP EEPROM detected
        Vendor Name: ARISTA NETWORKS
        Vendor PN: QSFP-100G-SR4
        Vendor SN: XKT201234567
        Module Temperature: 41C
        Module Voltage: 3.28V
        ChannelMonitorValues:
          RX1Power: -1.5dBm  TX1Bias: 7.5mA  TX1Power: -2.0dBm
          ...

admin@sonic:~$ redis-cli -n 6 hgetall 'TRANSCEIVER_INFO|Ethernet0'
1) "type"
2) "QSFP28 or later"
3) "vendor_name"
4) "ARISTA NETWORKS"
...

admin@sonic:~$ redis-cli -n 6 hgetall 'TRANSCEIVER_STATUS|Ethernet0'
1) "status"
2) "READY"
3) "cmis_state"
4) "DP_ACTIVATED"

CMIS の場合、cmis_stateDP_ACTIVATED まで進まないとデータパスが上がりません。DP_INIT で止まる、MODULE_LOW_PWR のままなどは、xcvrd ログで state machine 遷移を追います。

admin@sonic:~$ docker exec pmon tail -n 50 /var/log/syslog | grep xcvrd
xcvrd[42]: Ethernet0: CMIS state INACTIVE -> MODULE_HW_INIT
xcvrd[42]: Ethernet0: CMIS state MODULE_HW_INIT -> DP_DEINIT
xcvrd[42]: Ethernet0: CMIS state DP_DEINIT -> DP_ACTIVATED
xcvrd[42]: Ethernet0: error reading page 0x10: I/O timeout

I2C エラーが頻発する場合は SFP 抜き差し、それでも直らなければプラットフォームの SFP refactoring 経路 (sfp_optoe) を疑います。

Thermal / Fan / 液冷

thermal shutdown が走ると port は強制 down します。port down の原因解析で見落としやすい経路です。

thermal / fan 確認の典型

admin@sonic:~$ show platform temperature
        Sensor          Temperature    High TH    Crit High TH    Warning
------------------  -------------  ---------  --------------  ---------
ASIC                         62.0       85.0           100.0       False
CPU                          45.0       90.0           105.0       False
PSU 1                        38.0       70.0            80.0       False
Inlet                        29.0       60.0            70.0       False

admin@sonic:~$ show platform fan
       Drawer    LED         FAN     Speed    Direction    Presence    Status     Timestamp
-------------  -----  ----------  --------  -----------  ----------  --------  --------------
fantray1       green   fantray1     45%       intake       Present         OK   20260510 03:21
fantray2       green   fantray2     45%       intake       Present         OK   20260510 03:21

admin@sonic:~$ docker exec pmon tail -n 30 /var/log/syslog | grep thermalctld
thermalctld[45]: thermal action: increase fan speed to 80% due to ASIC=92C
thermalctld[45]: thermal warning: ASIC temperature 92.0C exceeds 85.0C

Warning=True が継続するセンサーは、thermalctld のポリシーで自動的に fan を上げます。それでも下がらない場合は over_temperature action で port shutdown まで進むため、/var/log/syslogOvertempPolicy 等を検索します。液冷装置の場合は liquid_leak_detector の event を最優先で確認します。

PSU

電源冗長の片系障害は show platform psustatus 等で確認できます。

admin@sonic:~$ show platform psustatus
    PSU    Model         Serial     HW Rev    Voltage (V)    Current (A)    Power (W)    Status    LED
-------  -----------  ------------ --------  -------------  -------------  -----------  --------  -------
PSU 1    PS1-1100W    XKT12345        A2          11.95           45.10        540.0        OK    green
PSU 2    PS1-1100W    XKT12346        A2           0.00            0.00          0.0    NOT OK      red

admin@sonic:~$ redis-cli -n 6 hgetall 'PSU_INFO|PSU 2'
1) "presence"
2) "true"
3) "status"
4) "false"
5) "voltage"
6) "0.00"

status=false + presence=true は「装着されているが死んでいる」状態。AC ケーブル / breaker / コンセントを順に確認。presence=false は物理的に未装着、または PSU 検出 GPIO の reverse logic 問題(platform.json で psu_status_reverse_logic 設定)を疑います。

Storage / SSD

SONiC は装置の SSD 寿命を継続監視します。

書込み量や bad block 増加は装置交換判断につながるため、定期確認の対象です。

admin@sonic:~$ show platform ssdhealth
Device Model       :  Innodisk SATADOM-SH 3SE3 V2 16GB
Serial            :  20150818AAAA0000019
Firmware          :  S140714
Health            :  87%
Temperature       :  44C
Power Cycles      :  324
Power On Hours    :  43890
Reallocated Sectors: 0

Health < 50% または Reallocated Sectors が急増した装置は計画交換対象です。storage_monitor daemon が定期的に SMART 値を STATE_DB に書き、syslog にもしきい値超過を吐きます。

PCIe

PCIe error は ASIC との通信不能や syncd 落ちにつながるため、syslog と STATE_DB を併せて確認します。

admin@sonic:~$ show platform pcieinfo -c
PCIe Device Checking All Test
PCI Device:  ASIC 0000:03:00.0 ........ Passed
PCI Device:  NIC 0000:05:00.0 ......... Passed
PCI Device:  USB 0000:00:14.0 ......... Passed

admin@sonic:~$ docker logs pmon 2>&1 | grep pcied | tail
pcied[51]: PCIe AER: Bus error detected on 0000:03:00.0
pcied[51]: PCIe AER: Uncorrectable error: severity=fatal

AER (Advanced Error Reporting) の severity=fatal は次に syncd が落ちる前兆です。lspci -vvDevSta / UncorrErr も併せて確認。

DB 参照表

主要 platform daemon の出力先:

Daemon DB テーブル
xcvrd STATE_DB (6) TRANSCEIVER_INFO, TRANSCEIVER_DOM_SENSOR, TRANSCEIVER_STATUS
thermalctld STATE_DB TEMPERATURE_INFO, FAN_INFO
psud STATE_DB PSU_INFO
pcied STATE_DB PCIE_DEVICES_INFO, PCIE_DEVICE
ssdmon / storage_monitor STATE_DB STORAGE_INFO
chassisd CHASSIS_STATE_DB CHASSIS_INFO, CHASSIS_MODULE_TABLE
syseepromd STATE_DB EEPROM_INFO

redis-cli -n 6 keys '*INFO*' で daemon が更新中のテーブルを一覧確認できます。

show platform の読み方

show platform 配下は、装置情報、PSU、fan、temperature、transceiver、SSD、PCIe など、上で挙げた daemon の出力をまとめた CLI です。詳細は show platform リファレンス を参照してください。「装置全体の健康診断」を 1 か所で見たいときの入口になります。

異常検出と復旧の早見表

症状 確認順 想定原因
show interfaces transceiver presenceNot present 物理挿抜 → dmesg \| grep -i sfp → xcvrd ログ GPIO 反転、ケーブル抜け、I2C 通信不可
port が Down/Down で link 上がらない optics presence → DOM Rx Power → FEC 設定 対向 speed/FEC 不一致、SI 設定
CMIS DP_ACTIVATED に到達せず xcvrd ログ → media_settings.jsonoptoe driver CMIS app_select 未設定
全 port が同時 down thermal → PCIe AER → syncd 状態 thermal shutdown、ASIC リセット
PSU 片系 NOT OK show platform psustatus → AC ケーブル → psud ログ 電源喪失、PSU 故障
fan 100% に張り付き show platform temperature → thermal policy ファイル sensor 故障、policy 設定
SSD Health 急減 show platform ssdhealth → SMART logs NAND 寿命、書込み量超過
syncd が周期的に落ちる pcied ログ → dmesg \| grep AER PCIe error、ASIC 過熱

復旧コマンドの目安

操作 コマンド 副作用
pmon container 再起動 sudo systemctl restart pmon sensor 値が一時 N/A、port は維持
xcvrd のみ再起動 docker exec pmon supervisorctl restart xcvrd TRANSCEIVER_* が一時的に空
port reset (CMIS 再初期化) sudo sfputil reset Ethernet0 該当 port が link down → 再初期化
transceiver 低消費電力モード解除 sudo sfputil lpmode off Ethernet0 データパス再初期化
装置 EEPROM 再読込 sudo decode-syseeprom -d なし

他章への誘導

関連ページ