こんにちは、増田(id:masutaka26)です。秋は体が急に冷え、一年で一番体調を崩しやすいので、意識して風呂に浸かっています。元気です。
id:critical_alert から https://healthchecks.io/ を教えてもらいました。
cron 系の定期実行ジョブが本当に実行されたかを監視してくれるサービスです。
以前、sidekiq-cron のバグで定期実行ジョブが実行されないことがあったので、なんらかの方法でお手軽に監視したいモチベーションがありました。
terraform-provider-healthchecksio を発見
コード化したいなーと思って調べたら、非公式の Terraform provider を発見。
kristofferahl/terraform-provider-healthchecksio
こういった設定は属人化しやすいため、Terraform でコード化できるのは助かります。
ただ、この時点では schedule や timezone などに対応していなかったため、採用は断念しました。
healthchecks.io 上でポチポチと監視用のエンドポイントを作成し、ビジネスロジックにも ping するコードを埋め込み、いい感じに動作していました。
実装開始
悶々とした日を送り続けたある日、調べてみたら意外と簡単に機能が実装できそうなことが分かりました。
👇 それで送ったのがこの PR。可能な限りのパラメータを使えるようになりました。
terraform import もしたいなーと調べたら、たったの 3 行で対応出来ることが判明。👇 2 つ目の PR を出して無事マージされました。
ついでにしれっとコラボレータに招待してくれて、commit 権を頂けました。やったぜ!
👇 先ほど 3 つ目の PR を出しました。非公式の Terraform provider なので、自分でバイナリを設置する必要があるのですよね。参考になりそうな Makefile を作りました。
今後の予定
The database failover process is manual, and the ops team consists of a single person, so multi-hour or even multi-day outages are possible!
While we can only guarantee a best effort availability, in practice the availability has exceeded 99.9% since the service publicly launched in July 2015.
healthchecks.io は安定稼働しており、2015 年 7 月のサービス開始以来、稼働率は 99.9% を超えているそうです。ただあくまでベストエフォート型の可用性しか保証していないので、過信は禁物です。いわゆる 1 人開発プロジェクトでもあります。
今後は Datadog で同じ監視が出来るか調査して、healthchecks.io と併用したいなーと思っています。Cronitor も頭の片隅にあるけど、少しオーバースペック感があります。
おまけ
healthchecks.io は OSS でもあり、GitHub 上にコードが公開されています。Django で実装されています。