mackerelでSSL証明書の監視を行いSlackに通知させるまで


SSL証明書の期限の管理は
メール等で飛んでくるように設定していても忘れがちですね。

自動更新と思っていたものが、手動更新だったり、
外部のURLが証明書の期限切れていたり。。。

外部のものも合わせると
自分が担当しているプロジェクトは、
約10個ほど証明書の期限を管理する必要があったため、
監視できるサービスを調査していました。

というわけでmackerelでSSL証明書の期限の監視を
実装して行きましょう。


## mackerelの料金

まず、mackerelの料金から。
プラン自体は2種類でFreeプランと
有料のStandardプランがあります。

初回登録から2週間まではTrialプランとして
Standardプランと同じ機能を使うことができます。

注意点として、
 
* Trialプラン終了後は自動的にFreeプランに変更
* SSL証明書の監視は、外形監視項目となるので、Freeプランでは使用できない。

今回のように、外形監視のみを行う場合でも、
外形監視が20個ごとに、スタンダードホスト1台とみなされるので
1833円/月かかってしまうことに注意です。

![mackererl_price.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/fa2e9678-f86e-5dc3-8448-67e1135fe11b.png)



## アカウント（組織）の設定

mackerelは、アカウント登録時にorganization(組織)を作成し、
内部の設定は組織ごとの設定になります。

![mackerel_organization.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/6e59a3d1-b2de-6011-0f78-f7035c3df9eb.png)



## モニタリング項目の設定

アカウント登録後は
monitor > 監視ルールを追加
でモニタリング項目を登録していきます。

![mackererl_list.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/52935dd7-05a7-eb24-7398-82c3a9ea07dd.png)

今回、外形監視であるSSL証明書の監視を追加するため
「外形監視」を選択

![mackererl_rule.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/908676ba-dd22-39d6-1a10-1fdddeb7968d.png)


## 監視ルールの詳細設定

監視対象のURLやhttpメソッドを入力していきます。

アラートの発生条件は、オプションを指定しない場合は

* ステータスコードが、4XX,5XXの場合
* 15秒以上のタイムアウト
* SSL証明書が不正の場合
になります。

![mackererl_setting_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/ad481fbb-59b4-627d-e90e-b1a22ef2bb77.png)

以降は、オプション設定です。

* レスポンスタイムの閾値
* 通知の再送間隔
* リクエストヘッダ、ボディ
* **証明書の有効期限の閾値**

などを設定できます。

![mackererl_setting_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/f4a95aa6-fce8-cd83-5868-72c0e2d5d11b.png)
![mackererl_setting_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/8af286e3-fe51-d3a8-84fb-3f091bedc2c0.png)
![mackererl_setting_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/29b3f913-b9c8-7b4b-7e32-90d521344f18.png)

ここまでで、
監視項目の設定が終わったので、
アラートの内容をslackに通知させるようにしましょう。

![mackererl_list.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/c6e0caa1-3bd6-6dd5-9d23-3b13749284b0.png)

## 通知設定

Channelsで通知設定できますが、
アカウント作成時はDefaultで、Emailが設定されています。

Slackを追加する場合は、
右上の「通知グループ/通知チャンネルを追加」から
Slackを選択します。

![mackererl_notification_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/8991db32-dac5-691a-f3e8-a08811972e7f.png)
![mackererl_notification_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/78e318ff-c523-b1d7-97ec-edb4939fc64b.png)

ここで、通知チャンネルと
Slackの[Incomming Webhooks URL](https://metaps.slack.com/apps/new/A0F7XDUAZ--incoming-webhook-)を入力します。

上のURLから、Incomming Webhooks URLをコピペしてきてください。

![mackererl_notification_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/db2f2d11-c9cc-33eb-35df-d9db764e4cde.png)

また、通知する内容や、通知するイベントなどを設定できます。

![mackererl_notification_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/d9347d2b-7852-dade-04b6-2078cd784648.png)


ここまで設定すると、Slackで通知されます。
成功するとこんな感じ。

![mackerel_slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/c618e060-097a-a156-e8dc-1f8e8ac52ab3.png)

## 最後に

一通り、SSL証明書の監視をmackerelで設定していきましたが、

SSL証明書の監視だけでいくと1833円/月かかってしまう点と
証明書の監視はあくまでhttpリクエストのオプションとしてついている点が気になりますね。

とはいえ、説明やヘルプが日本語なので設定自体が簡単で
slackの設定まで含めて、30分以内で設定可能なのは嬉しいですね。