これはなに
内部的に証明書の期限監視をしたいタイミングがあり、検証したものをまとめました
やりたいこと
AWS+New RelicでSSL証明書の有効期限が近づいてきたらアラートを発生させ通知したい。
事前準備
AWS Certificate Manager で証明書を準備しておきます。 (証明書期限が365日以内のもの)
手順
モニター作成
New Relicコンソールから Synthetic Monitoring > Create monitor > Certificate Check を選択します。
モニター名と監視する証明書のドメイン名を入力します。
Days remaining until expiration(有効期限までの残り日数)はとりあえず100に設定しておきます。
また、検証のためPeriodは1分に設定します。
ロケーションは任意の場所を選択します。(今回は東京)
モニター作成が完了すると以下のような画面が表示されます。
アラート作成
Alert conditions > New alert condition > Write your own query でアラートを作成します。
QueryではmonitorNameの後に先ほど作成したモニター名を入力します。
SELECT count(*) FROM SyntheticCheck FACET monitorName, result WHERE result = 'FAILED' AND monitorName = 'your-monitor-name'
閾値は検証のため以下の通り設定していきます。
condition名とポリシーを任意の値に設定します。
Close open incidents afterは検証のため30分に設定します。
(ここをデフォルトのままにすると、閾値を変更してもアラート継続状態が3日くらいクローズされないため)
conditionを作成、確認します。
アラート発報テスト
作成したモニター > Generalを開き、 Days remaining until expirationを有効期限よりも多く設定します。
(今回は期限まで110日のため200に設定)
Save monitorで設定を変更します。
アラートが発生することを確認します。
ワークフローを設定していたのでSlackでもアラート通知を確認できました。
アラートクローズテスト
この方法で設定すると、閾値を元に戻してもアラート状態が継続してしまいます。
今回はClose open incidents afterを設定していたので閾値を戻して30分待ってみます。
閾値を100に戻します。
閾値を戻して10分後の状態です。
まだアラートが継続しています。
閾値を戻して30分以上経過した状態です。
アラートがクローズされていることが確認できました。
終わりに
以上で今回の検証は終了です。
検証当初は閾値を直した後もアラートが継続してしまい頭を悩ませていましたが、Close open incidents afterの存在に気が付き無事解決できました。証明書の有効期限切れを防ぐためにも、Certificate Check で SSL証明書期限監視をしてみてはいかがでしょうか。