0
Help us understand the problem. What are the problem?

posted at

updated at

Organization

ラズパイのプロセス監視を slee-Pi3 のウォッチドッグタイマで【異常動作検知による監視編】

今回は slee-Pi3のウォッチドッグタイマを利用したプロセス監視機能を活用します。
slee-Pi3 の動作確認が狙いなので、お手元の環境で実行する際は service ファイルのオプションを調整してください。
※作業環境と事前準備は こちら をご覧ください。

[関連ブログ]

slee-Pi3 のウォッチドッグタイマを利用したプロセス監視
OOM 状態からの即時復帰
正常動作検知による監視
【異常動作検知による監視】← 本ブログ
異常動作検知-実装編

[目的と方法]

目的:停止したくないプログラムが停止した場合にクリーンな状態で再開させたい。
方法:プログラム内にハートビートを組込んでおき、ウォッチドッグタイマが異常検知した際に再起動させる。

[手順1]service ファイル作成

目的の再現性を高める+プロセスがkillされやすいように Nice=19 , OOMScoreAdjust=1000 に設定しています。
設定の詳細は以下をご覧ください。
Nice
OOMScoreAdjust

/etc/systemd/system/test-heartbeat.service
[Unit]
Description=sleepi3 test heartbeat
DefaultDependecies=no 
After=sysinit.target

[Service]
Type=simple
Nice=19
OOMScoreAdjust=1000
ExecStart=/opt/mtx/test-heartbeat.sh ← 実行ファイルのフルパス

[Install]
WantedBy=sysinit.target

[手順2]実行プログラム+ハートビートを作成

前回と同じプログラムを使用しています。
詳細は こちら をご覧ください。

#[手順3]既存の sleepi3-heartbeat.service を停止し、自作ハートビートを起動する
sleepi3-heartbeat.service は sleePi3-utils に含まれている service です。

sudo systemctl disable sleepi3-heartbeat.service
sudo systemctl enable test-heartbeat.service
sudo systemctl restart test-heartbeat.service

test-heartbeat.service 部分には自作ハートビートのファイル名を入れてください。

[手順4] OOMKiller 用プログラム作成と実行

今回は こちら のブログを参考に作成しました。

[手順5]復帰確認

OOM 状態になるとハートビートが途絶える様子を確認できます。
途絶えてから60秒後に再起動を始め、正常に起動すれば異常状態からの復帰は成功です。
※slee-Pi3 セットアップ時のウォッチドッグタイマ監視時間は60秒です。

また、下記コマンドを実行すると再起動要因がわかります。

sleepi3ctl get wakeup-flag
watchdog

[まとめ]

今回は slee-Pi3 のウォッチドッグタイマによるプロセス監視機能を利用しました。
監視させているプロセスが OOMKiller に kill された際にハードウェアリセットをかける仕組みです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?