batchの定期実行を監視
動機/発生した問題
systemd.timerがactivating状態のままになってしまい、定期実行が行われていなかった
こういった問題が出たとき、batch処理が実行されていないこと検知したい
cron や systemd で定期実行する batch が定期実行されているか、batch監視したい。
なお、原因は不明。実行中のバッチがハングしたのか、単に実行されなくなってしまったのかは不明。確認する前にサーバーを止めてしまった。
対象外
バッチプロセスは存在しないので、バッチの #プロセス監視 では検知できない
バッチが実行されていないので、バッチの #ログ監視 では検知できない
考えられる検知方法
batchでファイルをtouchして、更新時刻をnagiosやzabbix等の監視ツールで外形監視する
nagiosは、対象ファイルのタイムスタンプが更新されてなかったら通知してくれる
Nagios check_file_age Plugin
Zabbix
ZabSenderで監視(△) バッチ処理が実行されていない状態の検知
systemd.timerのステータスをチェック
onFailue で実行が落ちたことは捕まえられるので、落ちた通知は可能
systemd.timer は最後の実行時間情報をもっている。そのステータスを定期的に見てなんとかする?
heartbeat方式の監視サービスを探す
batch起動時にWebAPI等にアクセスするheartbeat方式で、一定時間途切れるとアラートするサービスがほしい
あるかなー
検討したサービス・ツール
https://www.pingdom.com/
Push-based uptime checks / Heartbeat monitoring – Pingdom help
Push-based uptime checks / Heartbeat monitoring
It would be great if you could support push-based uptime checks (I think it's also refered to as "heartbeat monitoring"). I.e. as long as the source pings an endpoint of Pingdom every X minutes it is seen as being alive.
If you could implement this one wouldn't have to open up ports to one's internal network. This is a feature which can be crucial to some enterprises.
push-based uptime
heartbeat monitoring
https://logz.io/blog/monitor-service-uptime/
heartbeat(ツール)でサービスの監視をしてlog出力し、 logz を使ってElasticSearchに送って、kibanaで確認する
https://www.elastic.co/products/beats/heartbeat
heartbeat (ツール)。自分で監視サービスを走らせる場合に使えそう
Zabbix Sender によるバッチ処理結果の監視 | Tricorn Tech Labs
バッチ処理が実行されていない状態の検知 △
アイディア
1分間に何回ログが出てるかの閾値を監視することはできるか
batch起動時のログは出ている
このログの継続性を監視すればよさそう
このためには、ログを送信する必要がある -> CloudWatch Logs でできるかな?
時間あたりのログの記録数をカウントして、アラーム条件に使えばできるかも
batchの実行状態を書いたページを公開して、実行状態の内容をチェックする
Running since HH:MM:SS, Sleeping since HH:MM:SS みたいに書いておくとか?
時刻で検知するには、相対時間の計算が必要。
RunningやSleepingで検知する場合、監視サービスのタイミング次第でずっとSleepingしか表示されてないとかありそう