今回は、「Heartbeat信号と死活監視の意味と利点・欠点」についての説明です。
1.初めに
最近、製品検査に使用するDiagコマンドの動作確認やリペアワークガイド(検査NGになった時のための対応指示書)の作成業務を手伝っていたんですけど、その中でHeartbeat信号の確認とか死活監視用のLEDという言葉が出てきました。
何となく字面から意味は推測できたのですが、聞き覚えの無い単語だったので意味を調べてまとめておこうとしたところ、この2つの用語が偶々関連することがある用語だったんですよね。
ということで、同じ場所に意味をまとめておこうという試みでこの記事を書いておくことにしました。
2.Heartbeat信号と死活監視の意味
Heartbeat信号とは、システムや機器が正常に動作していることを知らせるための信号のことです。
そもそも、[heartbeat]は[heart(心臓)]の[beat(鼓動)]なので、心臓の鼓動や心拍のことを指しています。
自分の胸に手を当てると、心臓が一定間隔の心拍で動いています。
心臓が停止してもまだ死んでいるとは限りませんが、限りなく死に近い状態になっているのは確かです。
この当たり前の考えをソフト観点に置き換えたものがHeartbeat信号です。
具体的には、監視対象のシステムや機器に対してあらかじめ決まった周期で短い信号やパケットを送信するように設定しておくことで、その信号を受け取っている機器が信号が途絶えたタイミングで監視対象に何かしらの異常が発生したと判断できるようにしています。
一定時間Heartbeat信号が来なくなったらタイムアウト判定になって、異常として検知するのです。
このように、外部からシステムや機器が正常に動作しているかを常に調べ続けることを死活監視と呼びます。
死んでいるのか活きているのかを監視しているのです。
つまり、死活監視の手法の一つがHeartbeat信号というわけです。
ちなみに、死活監視は生死監視とも呼ぶらしいです。
3.Heartbeat信号の仕組み
言葉の説明で大まかな仕組みは理解できたかと思いますが、一応図示しながら簡単に説明しておきます。
Heartbeat信号は死活監視の一種なので、監視する側と監視される側のシステムや機器が存在します。
なので、図1のように受信機器に向けて送信機器がHeartbeat信号を一定間隔で送っていると、受信機器が送信機器は正常動作しているのだと認識できます。

この時、受信側機器ではいつ頃正常動作していたのかという時間情報を記録していて、いつ異常が発生したのか後から確認できるようになっています。
一定間隔でHeartbeat信号を検出できている間はそのまま記録を続けるのですが、設定した期間Heartbeat信号が送られてこなかったとします。
すると、受信機器がタイムアウト判定をし、送信機器で何かしらの異常が発生していると判断することになります。

後は、その異常判定した際に受信機器にどのような動作をさせるのかを考えておくだけです。
送信機器で何かしらの異常が発生したと判断したら即停止させたいのなら、受信機器からの出力信号と送信機器のイネーブル信号を繋いで切り替えるようにしておけば良いです。
異常発生を知らせるために非常灯を点灯させたいのなら、非常灯のカソード側に受信機器からの出力信号を繋いでおき、異常発生時にGNDに引っ張れば良いです。
再起動させるのもアリですね。
その辺りは用途に応じて自由に設定しましょう。
4.死活監視の利点
Heartbeat信号を利用して死活監視することで、常に対象のシステムや機器が動作していることの確認をできます。
なので、Heartbeat信号が途切れた場合は即異常を検出できる為、この時点で異常の早期発見という観点で利点となります。
Heartbeat信号が途切れたら監視者に通知するように設定しておけば、異常発生後に即座に連絡が来るようにできるわけですからね。
他にも、Heartbeat信号が途切れたら予備システムに切り替えるように設定しておけば、異常発生時に自動でシステムを予備のものに切り替えたりもできます。
24時間稼働が当たり前になっているシステムや機器があった場合、異常が発生したからと動作停止されると困りますよね?
そんな場合を考えて死活監視しておくと、システムや機器が停止している時間を最小限に抑えることができるというわけです。
ちなみに、予備システムへの切替のことはフェイルオーバーと呼びます。
5.死活監視の欠点
死活監視は利点が多いように思えますが、もちろん欠点もあります。
主なものは、誤検知のリスクです。
設定した期間Heartbeat信号が送られてこない場合に異常と判断すると述べましたが、この設定値によっては異常が発生していないのに異常と検知してしまう可能性があるのです。
なので、適切な検出期間を調査したり、連続何回検知したら異常発生と判断するという具合にしきい値を設けておく必要性の可否などをしっかりと考える必要があります。
また、誤検知という視点では、本当に機器やシステムの異常発生によってHeartbeat信号が途絶えたのかという視点も必要になります。
例えば、ネットワークの遅延が発生してHeartbeat信号が届かなくなっていた場合、それは別に機器で問題があったわけではないですよね?
一時的に高負荷がかかっていてその間のみHeartbeat信号の出力が遅れたとして、これは機器の異常ではないでしょう?
ただのスペックや状況による問題です。
人間で例えるなら、指揮命令者である上司が部下に定期連絡するように伝えておいたとします。
ですが、電車移動でトンネル通過時に電波が途切れてしまったり、ちょっと手が離せなくて連絡が遅れてしまったりすることはあります。
これらの状態で連絡が途絶えたことを異常と切り捨てるのは違うでしょう?
なので、誤検知しないようにするにはどうすれば良いのかという点はしっかりと考える必要があるのです。
以上、「Heartbeat信号と死活監視の意味と利点・欠点」についての説明でした。




