4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Raspberry piに電源管理/死活監視モジュール「slee-Pi」をつけてMackerelをインストールしたら、色々と捗る仕組みができた件

Last updated at Posted at 2020-02-06

Mechatraxの電源管理/死活監視モジュールslee-Pi2を入手、これからの開発・調査をするために、先ずはMackerelをインストールしてみた。その後、ごちゃごちゃやっていたら、それなりに今後にも使えそうなものができたので、ここに記録しておく。

詳細な手順等はGitHubで公開中なので、技術的にはもう何も言うことはないのだけど、ここではなぜこのような仕組みになったかを記す。

Raspberry piへの設定作業なので、ansibleのplaybookで実装するのは、この頃の私のデフォルト。一度コード化しておけば、何回も行う作業ならば、作業ミスも防げ、手順等をレビューなどで改善・改良できる。さらには資産にもなるので、もう私の中ではやらない手はないぐらい。

Mackerelを常用していると、その死活監視はその仕組み上リアルタイム性が劣るのを感じていた。特に電源管理・死活監視を司るslee-Piの開発・評価においては致命的になるかと考え、死活監視に関しては独自に実装する必要性を感じたので、boot・shutdown処理において直接slackに投稿する仕組みを実装することに

そのために、systemdのstartstop.serviceとして実装し、boot時に立ち上がったことを、shutdown時にはその旨のメッセージをslackにpostするようにした。当然、slackにはip reachableである前提。

そうこうするうちに、これを使えば、他の事にも使えると考え、実装したのがSTARTUP.shとSHUTDOWN.shをslackを叩くと同様なタイミングで実行する仕組み。

例えば、boot時に

sleep 300&&(sleepi2alarm --set "+5min" && shutdown -h now)

とやれば、5分後に

sleepi2alarm --set "+5min" && shutdown -h now

と投入されることになる。これによって、5分毎に起動・停止を延々と繰り返すRaspberry piができ上がり。

sleepi2alarmについてはsleepi2alarmを参照

さらには、

echo "(sleepi2alarm --set \"tomorrow 9:00:00\"&&shutdown -h)"|at 17:00

とやれば、9-5時にしか稼働しないRaspberry piができ上がります。
同様なシナリオとしては
boot時に

echo "shutdown -h now"|at 17:00

shutdown時に

sleepi2alarm --set "tomorrow 9:00:00"

と実行することでも可能です。
気を付けることとしては、boot時に時刻指定のshutdownコマンドを発行しないこと。例えば、

shutdown "17:00"

と投入すると、shutdownは17時に行われるが、Unprivileged usersがsshでログインできなくなり、色々と面倒なことになる。

これらのSTARTUP.sh/SHUTDOWN.shのコレクションは今後の評価・開発のシナリオに応じて充足していく予定。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?