このサーバは、メールの転送設定をして、置いておくサーバになってまして。全体的にはWebサーバ類もまとめて、1枚のdocker composeでサイトのほぼ全てが構築されている。
メールはpostfixのコンテナを立ててやってるんですが、最近イメージを更新したタイミングで落ちていることに気づかずに2週間くらい放置されていました。restart設定で起動→失敗のループが続いていた。
この起動ループは手加減してやってくれるので、急激に負荷が上がったということもなく、害は少ない。少ないけど、多くのSPAMメールを受け取れなかったから、良くない状況ではあった。なんかおかしいと思ったんだよね。それを思うまでに2週間を要したのは恥ずかしい。
というわけで監視を入れようと思った。このサーバの通知はntfy.shを使っていて、syslogのパターンを見てunattended-updateでリブートが予定されている時に通知する、といった機能は入っている。コンテナの死活監視はどうするか。監視と通知のシステムを入れるのがいいんだけど、サーバ自体がスペック低いやつを使ってるから、簡易なものにしたい。
探すと、dolceというコンテナの状態の変化を監視するツールと、appriseという各種の通知をしてくれるツールを組み合わせれば簡単にできることが分かった。
こんなイメージ。
x-env: &env
TZ: Asia/Tokyo
services:
apprise:
image: caronc/apprise
container_name: apprise
restart: unless-stopped
environment: *env
dolce:
image: dangrie158/dolce:v4.0.0
container_name: dolce
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
<<: *env
#DOLCE_LOG_LEVEL: DEBUG
NO_COLOR: "1"
APPRISE_HOST: apprise:8000
APPRISE_URLS: ntfys://${NTFY_CHANNEL_NAME}
APPRISE_TAG: all
そして、これでしばらく運用していたところ、毎日通知が来る日々が来た。全くハッピーではない。このdolceは全部のコンテナの状態を見てくれて、コンテナ名とかでフィルタはできないのだ。デイリーで定期実行するコンテナもあるのでこういう事態になったわけだが、これはきつい。appriseにもフィルタは設定できない(?)っぽいので、dolce+appriseの案はナシになった。
ちゃんとやるならzabbixか何かみたいな監視システムを入れてポートが開いてるかとかアイテムとトリガーを設定していくんだろうけど、そこまで作りたくはないんだよなあ。
まあ、継続審議ということで。