コンテンツにスキップ

show system-health サブコマンド

概要

show system-healthsystem-health デーモン(HealthCheckerManager)が保持するシステム状態(サービス・ハードウェア・ファイルシステムなど)と、SmartSwitch 構成での DPU 状態、システムが boot 完了したかの「sysready」状態を表示する。実装は show/system_health.pyshow/main.py 末尾で cli.add_command(system_health.system_health) の形で登録される1

HealthCheckerManager の本体は health_checker/ パッケージで、/usr/share/sonic/device/<platform>/system_health_monitoring_config.json をベースに監視対象を決める。show system-healthroot 権限必須os.geteuid() チェック)。

コマンド一覧

コマンド 用途
show system-health summary 状態 LED + Services / Hardware の OK/Not OK サマリ
show system-health detail summary + monitor list + ignore list
show system-health monitor-list 監視対象のサービス・デバイス一覧
show system-health sysready-status sysreadyshow 経由のシステム ready 状態
show system-health sysready-status brief sysreadyshow --brief
show system-health sysready-status detail sysreadyshow --detail
show system-health dpu <module_name> SmartSwitch 構成での DPU 状態(CHASSIS_STATE_DB.DPU_STATE)

各コマンドの詳細

show system-health summary

動作:

  1. HealthCheckerManager を生成し、config.config_file_exists() で構成ファイル(system_health_monitoring_config.json)の有無を確認。なければ exit 1。
  2. chassis = sonic_platform.chassis.Chassis() で chassis オブジェクトを取得。
  3. manager.check(chassis) を呼び、サービス/ハードウェア/FS のチェック結果 dict (stat) を取得。
  4. chassis.initizalize_system_led() を呼んで status LED の現在色を取得。
  5. 整形ロジック (display_system_health_summary) で Services / Hardware を OK / Not OK 判定して表示。Services の Not OK 内訳は「Not Running(プロセス未起動)」と「Not Accessible(FS アクセス不可)」に分けて表示する2
📋 検証エビデンス: sonic-net/sonic-utilities/show/system_health.py#L113-L131 (sha: 39732bceb8bdefe706518ab40623bbbba6ff33b9)

出典:

sonic-net/sonic-utilities/show/system_health.py#L113-L131 (sha: 39732bceb8bdefe706518ab40623bbbba6ff33b9)

抜粋:

@click.group(name='system-health', cls=clicommon.AliasedGroup)
def system_health():
    """Show system-health information"""
    return

@system_health.command()
def summary():
    _, chassis, stat = get_system_health_status()
    display_system_health_summary(stat, chassis.get_status_led())

show system-health detail

summary の出力に加えて、

  • monitor list(監視対象 = サービス + デバイス、各々のステータスとタイプ)
  • ignore listconfig.ignore_services / config.ignore_devices に登録された監視除外項目)

tabulate で表示する。

show system-health monitor-list

stat.values() を走査し、各要素のステータス順にソートして (Name, Status, Type) のテーブルを表示。

show system-health sysready-status [brief|detail]

invoke_without_command=True のため、サブコマンド無しで呼ぶと sysreadyshow を引数なしで実行する。

形式 内部実行
sysready-status sysreadyshow
sysready-status brief sysreadyshow --brief
sysready-status detail sysreadyshow --detail

sysreadyshow 自体は別スクリプトで、SONiC が boot 完了したかどうかを STATE_DBSYSTEM_READY|SYSTEM_STATE から判定して人間可読に表示する。

show system-health dpu <module_name>

前提: is_smartswitch() が True の場合のみ実 動作(False の場合は黙って return)。

動作:

  1. redis_chassis.server:6380CHASSIS_STATE_DB(DB 13)に接続。
  2. DPU_STATE|<module_name> キー(module_nameDPU で始まる場合)または DPU_STATE|*(全件)を取得。
  3. 各エントリの <key>_state フィールドを midplane_state / control_plane_state / data_plane_state の 3 軸に振り分けて表示。midplane_state == down なら全体 Offline、3 軸とも up なら Online、それ以外は Partial Online
  4. _state に対応する _time / _reason フィールドも添えて表示。

module_nameis_smartswitch() が True のときのみ Choice バリデーションが付く(get_all_dpu_options() の戻り値から)。

関連 DB / ファイル

ソース 用途
system_health_monitoring_config.json(platform 固有) HealthCheckerManager の監視対象定義
STATE_DB.SYSTEM_READY sysreadyshow の入力
CHASSIS_STATE_DB.DPU_STATE(chassis-only) dpu サブコマンドの入力
chassis.get_status_led()(platform API) summary の状態 LED 色

注意

  • root 権限が無いと summary / detail / monitor-list は exit 1。
  • chassis モジュール (sonic_platform.chassis.Chassis) が存在しないプラットフォームでは ImportError になる可能性がある。
  • ユニットテスト用の UTILITIES_UNIT_TESTING=1MockerManager / MockerChassis に切り替わるパスがある。

関連リファレンス

引用元

データフロー (手動作成)

flowchart LR
  CLI["show system-health"]
  SH["system-health daemon<br/>(HealthCheckerManager)"]
  ST[("STATE_DB<br/>SYSTEM_HEALTH_INFO / DPU_STATE")]
  CLI --> SH
  ST --> CLI

凡例

show 系 (CLI ← STATE_DB ← system-health daemon) のミニ図。CONFIG_DB を直接介さないコマンドのため手動で記述。

関連 Topics

運用ヒント

典型的な利用シーン

  • fan / PSU / temperature / container health の集約確認。
  • NMS 連携前のしきい値確認。

よくある落とし穴

  • system-health monitor list には Ignored 項目が含まれる。production では誤検知の温床。
  • syshealth daemon が落ちると show system-health summary も止まる。

関連する show / debug

show system-health summary
show system-health monitor-list
show platform fan

関連 CLI コマンド