コンテンツにスキップ

HEARTBEAT テーブル

概要

システムプロセスの heartbeat 監視 (生存確認) のインターバルとアラート間隔をプロセスごとに設定するテーブル1。 process monitor は登録された name のプロセスから heartbeat_interval ms ごとに生存通知を期待し、alert_interval ms 内に通知がなければアラートを上げる。

データフロー (自動生成)

flowchart LR
  CDB[("CONFIG_DB<br/>HEARTBEAT")]
  DM["process-monitor"]
  CDB --> DM

凡例

CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。

key 構造

HEARTBEAT|<name>

<name>: 1–32 文字。監視対象プロセス名 (例: pmon, swss, syncd 等)。

フィールド

フィールド 既定 説明
heartbeat_interval uint32 10000 期待される heartbeat 送信間隔 [ms]
alert_interval uint32 60000 この時間内に heartbeat 不達ならアラート [ms]

購読者

  • process monitor デーモン (heartbeat 監視機能を持つ host service)。各プロセスは STATE_DB 等に生存通知を書き、監視側がタイムアウトを検査する

関連 YANG

  • sonic-heartbeat

関連リファレンス

  • YANG: sonic-heartbeat

引用元

関連ページ

運用ヒント

典型値

  • key 形式: HEARTBEAT|<key>
  • interval: 秒単位の hearbeat 間隔。デフォルトはイメージ依存。

よくある誤設定

  • interval を極端に短くすると CPU 負荷が上がり他デーモン処理が遅延する。

確認コマンド

sonic-db-cli CONFIG_DB keys 'HEARTBEAT|*'

値依存挙動マトリクス

このテーブルに strict な enum フィールドはない。interval の特殊値で動作が分岐する。

interval (eventd 側の内部スキーマ、events_wrap.h / eventd.cpp 準拠)

挙動
-1 heartbeat を無効化("A value of -1 implies no heartbeat")
< -1(-2 以下) invalid 扱い。syslog 記録後処理中断
0 システムデフォルト 2 秒として動作(HEARTBEAT_INTERVAL_SECS = 2
正値 内部 300ms 単位(STATS_HEARTBEAT_MIN)に切り上げ量子化。指定値と実周期がずれる場合がある

注意: YANG では heartbeat_interval / alert_interval は uint32 [ms] 単位。 eventd.cpp 側の interval とはスキーマが別(秒単位)なので混同に注意。

例外条件・特殊挙動

条件 挙動
interval = -1 heartbeat を無効化(events_wrap.h L131「A value of -1 implies no heartbeat」)
interval < -1(-2 以下) invalid 扱い。syslog に詳細記録後処理中断(events_wrap.h L136)
interval = 0 システムデフォルト 2 秒として動作(eventd.cpp L43 HEARTBEAT_INTERVAL_SECS = 2
任意の正値 内部は 300ms 単位に切り上げ量子化。指定値と実周期がずれる場合がある(eventd.cpp L145)
heartbeat publish 失敗 SWSS_LOG_ERROR("Failed to publish heartbeat rc=%d") → ハートビート欠落するが eventd は継続