DatadogでSSL証明書の監視を実装して、slackで通知させるまで【$5/月】【mackerelと比較】

以前、ssl証明書の期限切れ監視について、
mackerelで実装して行きましたが、

Datadogでも、SSL証明書の期限を監視できるようになので、
実装し比較した結果です。

## DataDogで行う場合の料金

Datadogには様々な料金プランがありますが
外形監視（SSL証明書の監視）のみを行う場合は、
「Datadog Synthtic Monitorling」のプランになります。

年間契約で $5/month
単月契約で $7.2/month  です。

SSL証明書の監視を行うサービスとしては、
なかなか手軽な金額ではないでしょうか。

注意する点としては、
1万リクエスト/month の制限があります。

SSL証明書の監視であれば
1日1回程度のリクエストで問題ないため、気にならないですが
url監視など1分に1回リクエストを送る必要があるなどの場合は、
このプランでは厳しそうですね。

![datadog_price_1_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/69c03e42-a317-c9f2-0512-886aca581470.jpeg)


## Datadogの始め方

無料でも、2週間ほど使えますので
気軽にサクサク使っていきましょう。

アカウント登録後
UX Monitoring > Synthetic Test > Monitor your systems from locations around the world から Get started

![datadog_start_1_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/8bc63933-728d-6c81-c938-7de4de4b02f1.jpeg)


## SSL証明書の設定

ここではNew API Testを選択。

![datadog_setting_2_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/d1400e67-7d14-ae19-6971-e31ff47afa97.jpeg)


続いて、SSL証明書の監視なのでsslを選択

監視するHostの指定。
（ポートはデフォルトで443です）

タグの入力は自由

監視元のLocationを選べるため、
今回はregionが異なる3つのLocationを指定

![datadog_setting_3_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/dd8f5c1f-0537-edf3-53cf-3718da87a585.jpeg)


次に、Specify test frequencyにて、リクエストを送る頻度を設定。

今回はURL監視ではなく、SSL証明書の監視なので1d(1日)に設定。

Define assertionsでは、通知する設定を追加可能。
今回は
- 証明書の有効期限まで30日を切った場合
- レスポンスタイムが15秒
で通知されるように設定しました。


また、Definite alert conditionsでは
アラートのトリガーを何回中何回失敗したときに、何度リトライするかを指定できます。

今回は,1分間で3箇所中2箇所で失敗した場合に、
3回リトライするように設定しました。

![datadog_setting_4_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/757605bf-4478-8341-7610-ec8b2fa143c1.jpeg)


最後に、Notify your teamにて

通知先と、解決されない場合の再通知までの時間を設定できます。
Slack通知させる場合は、ここでSlackのチャンネル名などを入力しますが、
DatadogとSlackの連携設定を行っていないため
一旦スルーして、あとで設定します。

![datadog_setting_5_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/6aa90221-9e44-a56a-651e-dae0e768f1dd.jpeg)


設定が終わった状態がこちら。

SSL証明書の有効期限が切れるまでがTime to expireと大きく表示されてわかりやすいですね。

![datadog_setting_6_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/b9765c21-8c16-fc81-5084-50e2db2b1657.jpeg)


## Slackでの通知

無事に、アラームの設定が済んだところで、
SlackとDatadogの連携を行い、
slackへ通知させるようにしましょう。

大きく分けて、3段階のステップを踏んで行きます。

### 1. SlackへDatadogの連携とwebhook urlの取得

SlackのAPPからDatadogを検索そして追加し、
webhook urlを取得します。

![datadog_slack_1_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/e70eff8b-5e7f-63c6-891d-f408c04e3826.jpeg)
![datadog_slack_2_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/8ec9153c-a381-e168-586a-b7b8dc3aafbd.jpeg)


### 2. DatadogからSlackの連携

次に、datadog側にSlackを読み込ませる必要があります。

Integrations >Integrationsへと進み、
今度はSlackを検索そして追加して下さい。

![datadog_slack_3_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/6a645c71-b2f5-5b36-080f-c650804a2718.jpeg)
![datadog_slack_4_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/3d8aca6a-9467-de8a-63ea-80a4e73e87b4.jpeg)


そして、Configrationには
Slack Account Nameと
先ほど１で取得したSlackのWebhook URLを入力します。

Slack Account Nameには、
Slackで通知させたいチャンネル名を入力しておくとわかりやすいです。

![datadog_slack_5_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/970d5cf6-b38d-90c1-24b8-6a3b1be874ee.jpeg)

実際に通知させるチャンネル名は
下のCHANNEL NAMEで入力します。
![datadog_slack_6_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/c8649f46-12bd-b987-0a18-e779debc2466.jpeg)

これで、DatadogとSlackを連携させることができました！

### 3. Datadogで、各アラームの設定を修正

それでは最後に
スルーしていた通知内容の部分（Notify your team）に、
通知させたいチャンネルを追加しましょう。

`@slack-チャンネル名`という形で
メッセージの中に入力することで、
アラート時に通知されるようになります。

また、その下のEvery 6 hoursと書いてある部分では
アラートがなって改善されない場合に、
再度通知させるまでの時間を選択できます。

最大1日です。

![datadog_slack_edit_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/eb10237d-3ecd-9725-4020-856942cd8670.jpeg)


## 結果

希望したSlackのチャンネルに
このようにErrorと正常で通知がきているか確認しましょう。


![datadog_slack_7_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/ce9e26f9-a34c-b602-3efc-2a2cf79afd8e.jpeg)
![datadog_slack_８_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/56c68b0d-ce41-7280-93e0-fcd4033bdb66.jpeg)

うまく行っていますね！
これにて完全終了です！。


## Datadogとmackerelの料金比較

SSL証明書の監視だけを使用する場合は
 

- mackerelは、監視するURLの数によって料金が変わり10個ごとに1833円
- Datadogは、リクエストの回数により料金が変わり1万リクエストごとに$5

という料金になっています。

SSL証明書の監視だけならDatadog。
そのほかの監視（URLの死活監視）も行うならmackerelといったところでしょうか。

![datadog_price_1_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/2fa17cc9-bb31-fa5c-8076-9183de7fcd46.jpeg)


![mackererl_price_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/705189a4-b56c-e776-6c7b-c9e1feb5657d.jpeg)


調べたところ、SSL証明書の監視のみを行っているサービスは少なく、多くが他の機能と抱き合わせたサービスでした。そのため、意外と1000円/月以下のものが少なかったです。

他に調べたサービスは
savaMoni, Site24x7, New Relic, uptime Robot, Site Alert, solarwindsですね。

相場としては700円〜2000円/月くらいでした。

## Datadogのよかった点

mackerelと比較して、よかった点を軽く紹介します。

### 一覧が見やすい

設定し終わった後の一覧画面が
mackerelに比べ、Datadogの方が見やすかったです。

- Uptimeが表示されているため期限がわかりやすい
- ぱっと見すっきりしている
- タグで管理しやすそう

といった点で、Datadogの方が好きな見た目でした。

![mackererl_list_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/a076a57a-88a2-2e61-d7df-9bef9895027e.jpeg)

![datadog_result_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/b5dccc17-ef06-9128-a783-8210396ef80c.jpeg)


### HTTPリクエストを送らずにSSL証明書の監視ができる。

ここは地味に重要な点で

mackerelはurlの死活監視のオプションとして、
SSL証明書の有効期限切れをチェックしているため、
必ずHTTP \HTTPSのリクエストを送る必要があります。

それに比べ、Datadogでは
SSL証明書のみを見に行くため、設定次第では、
死活監視とSSL証明書の有効期限切れで

別々のメッセージを通知することもできるなど
細かなところに手が届く設定になっていると感じました。

### 監視するサーバーを選べる。

Datadogでは監視するサーバーを
AWSのregionから選ぶことができるので
こちらも、あると嬉しい機能でした。

## Datadogとmackerelの知名度比較

Datadogもmackererlもよく耳にするものの
どちらが多く採用されているのか疑問に思ってので
軽くGoogle トレンドで検索してみましょう

2015年からの推移になりますが、
世界的には、圧倒的にmackerelが圧倒していますね。

new Relicも安定感あり
Datadogが追い上げてきているという印象です。

![trend_ssl_world_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/5fc2d32e-2fbf-f1f0-d97b-d0d633cb6ca7.jpeg)

世界ではなく、日本に絞ってトレンドを追った結果がこちら

![trend_ssl_jp_compressed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352124/2db4083e-734e-f944-5594-b384482a8507.jpeg)

Datadogの激しい追い上げから、ほぼ一人勝ちに近い勢いを見ることができます。
mackerelの検索数も、ここ１年で減少傾向にあるのが気になりますね。

## 最後に

SSL証明書の監視を他の競合サービスと比較しつつ
Datadogで設定していきました。

所感としても、設定が多少細かいものの
datadogの方が見やすくて、安価だったため、
こちらを使っていこうかと考えています。

Slackへの連携含めても、30分程度で終わるので
まだ触ったことない方は、この機会にDatadog触ってみてください。2週間無料ですよ！

## 参考

[Datadogを始めてみましょう](https://docs.datadoghq.com/ja/integrations/slack/?tab=standardintegration)

[Slackインテグレーションを使って情報共有](https://www.datadoghq.com/ja/blog/slack%E3%82%A4%E3%83%B3%E3%83%86%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E6%83%85%E5%A0%B1%E5%85%B1%E6%9C%89/)

[Syntheticsでサイトの証明書の期限を監視する | Observability Platform - New Relic公式ブログ](https://blog.newrelic.co.jp/observability-design-pattern/monitoring-website-health-status-with-certification-expiry/)