ミッション 監視の自動化
3つを1つに束ねる
この章で、離れても切れない端末、太らないログ、原因の読めるエラーログ、死活の判定、決まった間隔での自動実行を作りました。部品はもう揃っています。
最後に、これらを回り続ける1つの体制にします。やることは3つです。
- 自分で作ったログにも、畳む設定を用意する
- 状況をまとめて読める報告を作る
- 報告も自動で更新されるようにする
自分のログにも寿命を決める
ヘルスチェックの記録は、放っておけば nginx のログと同じように太ります。2分ごとに1行なら1日 720 行です。
パッケージが置いてくれるのは、そのパッケージのログの設定だけです。自分で作ったログは、自分で面倒を見ます。
/var/log/healthcheck.log {
weekly
rotate 4
compress
missingok
notifempty
}create の行はここでは要りません。書いているのは root だからです。誰が書いているかで、必要な指定は変わります。
まとめて読める形にする
ログが複数あると、それぞれを開いて回ることになります。朝いちばんに見る場所は1つにしたいので、要点だけを集めた報告を作ります。
集めるものは次の3つです。
- 直近の死活判定。いま生きているか
- 直近で NG が何回あったか。安定しているか
- ディスクの空き。埋まりかけていないか
ディスクは df -h / で見られます。-h は人が読みやすい単位にする指定です。logrotate を入れた理由そのものなので、報告に並べておく価値があります。
5章で作った証明書の期限も、同じ考えで並べておけます。-checkend の判定は終了コードで返るので、報告に書ける形にするひと手間が要ります。
報告も自動で更新する
報告を手で走らせるなら、結局ログを見て回るのと変わりません。前のレッスンと同じ形で、.service と .timer を1組作ります。
間隔は中身に合わせます。死活は2分ごとでも、報告は1時間に1回で十分です。何もかも短くすると、ディスクとログを無駄に消費します。
手を動かす
ヘルスチェックのログを畳む設定を書き、状況をまとめる報告スクリプトを作り、それを1時間ごとに更新させます。