Armadilloフォーラム

コンテナの監視方法について

tmygt

2024年2月21日 15時21分

お世話になっております。コンテナ上で常時起動中となるようなアプリケーションを実装しています。
もしアプリケーションに何らかの不備がありコンテナが停止してしまったような場合に、クラウド上にメッセージを残すような仕組みを実装したいのですが、実装方法について悩んでいます。ご意見いただけないでしょうか。

下記を考えています。

a. local.dで定期監視
https://armadillo.atmark-techno.com/forum/armadillo/16035 によれば、local.dに 無限ループになるようなスクリプトを書くことができそうなので、これを使って一定時間ごとに監視処理を実行

b-1. abos上のcronで一定時間間隔で監視
https://armadillo.atmark-techno.com/forum/armadillo/14960 によれば、abosのcronを有効化することでcronを実行可能。cronから監視処理を起動。

b-2. 別のコンテナのcron
2-1の亜種。abosのcronではなく、cron専用のコンテナを立てておく

aの方法が一番簡単そうなのでこれで行きたいのですが、この無限ループが強制終了されることがないのか気になっています。
コンテナの監視について、良い方法があれば教えていただけないでしょうか。

コメント

mori.k

2024年2月21日 15時39分

ほぼ類似することの実現を検討している一人のArmadilloユーザーです。

> もしアプリケーションに何らかの不備がありコンテナが停止してしまったような場合に、クラウド上にメッセージを残すような仕組みを実装したい
> コンテナの監視について、良い方法があれば教えていただけないでしょうか。

ログを監視して、特定の文字列を確認できた場合に、LINEやSlackへ通知させることを実装しています。
その際、下記リンク先の手段を参考にしました。
https://shell-mag.com/rensai-shellscript1-13/

お役に立てるか分かりませんが、ご参考まで。

at_dominique.m…

2024年2月21日 16時26分

tmygtさん

マルティネです。

> aの方法が一番簡単そうなのでこれで行きたいのですが、この無限ループが強制終了されることがないのか気になっています。

確認サービスを自動リスタートのコンテナ(デフォルト)にいれたら終了の心配はあまりないと思いますが、よりいい方法としては watchdog 形式(アプリケーション自体から定期的に動いていることを示す動作を行う)がいいかと思います。

方向としては二つあって:
* Armadillo の /dev/watchdog で問題がある場合に再起動させる(その場合は起動時に通信送れば、問題の時の通信の代わりにもなれるかと思います)
デフォルトではコンテナ全体が停止した場合にコンテナを再起動するようになっていますが、綺麗に停止しない場合などに役に立つ機能です。
* クラウドなどで定期的に固定な URL を叩いて、叩かなかった場合に通信を行う。 https://github.com/louislam/uptime-kuma のようなサービスでできます(探せばそのまま使える有料サービスもあります)

ちなみに abos に cron のサービスがインストールされてませんので、cron の形で監視する場合はコンテナにする必要があります (--pid=hostなどでの設定でしたら、監視は充分できるかと思います)

よろしくお願いします。

tmygt

2024年2月21日 17時20分

mori.kさん、マルティネさん

回答ありがとうございます。私の説明が足りていなかったのですが、定期実行部分が主に質問したいところで、クラウド側についてはすでに実装していました。ただ、uptime-kumaは知らなかったので勉強になりました。

定期実行部分ですが、マルティネさんのおっしゃる通り自動リスタートなコンテナで監視すれば十分な気がしました。
(ハングアップの対策ができていないですが、まずは異常終了さえ検知できればOK)

コメントありがとうございました。