Mackerel で SSL 証明書の有効期限を監視する

最近は仕事で Mackerel を作っているので、機能理解も兼ねて自分のVPSへの導入を進めている。

parochially.hatenablog.com

この記事で書いたとおり、自分のサイトを作り直したときに let's encrypt を使って HTTPS 配信に切り替えた。証明書の発行と導入のためには let's encrypt のススメに従って certbot を使っている。

certbot を apt でインストールすると、自動で systemd timer または cron が設定され、これによって自動で証明書が更新される... はずなのだが、そのまま放置しているのは怖いので Mackerel で証明書の有効期限を監視するようにした。

Mackerel での証明書監視には以下の2つの方法がある。

1. 外形監視のオプションを利用する方法
2. mackerel-agent の [check-ssl-cert] プラグインを利用する

今回は外形監視を方を利用した。外形監視はTrialかStandardプランで利用できる。

左側のメニューから Monitors を選択し、右上の「監視ルールを追加」から外形監視を選択する。

f:id:side_tana:20190725234427p:plain

監視対象が HTTPS の場合、画面下部の「証明書の有効期限の監視」が利用できるので、ここからそれぞれの条件を入力する。

f:id:side_tana:20190725234546p:plain

7/25 はちょうど certbot が証明書を更新する日で、以下のように warning と crit が発火したあと、cert ボットによる更新が行われ、自動でアラートがcloseされた。

f:id:side_tana:20190725234731p:plain

証明書はほんとうについうっかりで無効にしてしまう事がある一方、うっかり無効にすると大変な目にあう。とくにメインシステムから切り出されたコンポーネントで、メインシステムとの通信にHTTPS を利用しているようなケースでは証明書の失効期限に気が付きにくかったり、開発者が存在に気が付かなかったりということが起きるケースが起きがち。そしてひとたび障害となると大きなダメージを残すことになる。

そういったコンポーネントでも外形監視は手軽に導入できるし、実際に導入されていることも多いので、追加で証明書の期限も監視できるのは嬉しいですね。