Datadog Free Plan で GCP をモニタリングして Slack にアラート通知する

## はじめに
個人的に GCP の無料枠で立ててるサーバを、Datadog の Free Plan で監視して Slack に通知してみたので、その際の設定メモを記載する
※自宅との VPN/BGP (こっちは有料) もしているのでそちらの監視もやってみた
Datadog も Slack も初心者なので間違いあればご容赦・ご指摘ください

記載内容は 2020.10.31 時点の状況

下記ざっくり絵
![datadog-gcp-slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/31e18ab7-18b6-90fb-9a5b-809490129c76.png)


## DataDog 無料枠
料金は公式ドキュメントから Free Plan を抜粋して記載(2020.10.31時点) ([公式リンク](https://www.datadoghq.com/ja/pricing/))

| 項目 | 無料枠 |
|:-:|:-:|
| メトリクス | 1日 |
| ホスト数 | 5 |
| 利用可能な機能 | ・400+ Integrations<br>・Host and Container Maps<br>・その他色々 |

14日間はフル機能を無料で試せて、15日目以降は上記の無料枠のプランになる
GCP は無料枠範囲であればホスト 1 台なので行けそう (GCP その他メトリクスもやってみたら取れたがどこが Free の上限か不明)

Free Plan の [**Alerts にチェックが入っていない**](https://www.datadoghq.com/ja/pricing/#section-infra)ので**今後できなくなるかも？** (下記の通り、今いまできている)

## 前提
### Datadog
Datadog Free Trial 14日過ぎていて Free Plan になっているもの

![スクリーンショット 2020-10-31 14.30.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/25fc2437-5aca-4526-5b11-f252948f1d76.png)



### Datadog GCP 連携
下記図・別記事に書いた通り Monitoring の連携済み
[Qiita: Datadog の登録から始めて GCP のメトリクス・ログ投入まで](https://qiita.com/suzuyui/items/b18a7e686bab69d9ecd2)

![Datadog_GCP.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/c47691dc-a2cb-b9ef-140f-61fc50d191ce.png)

※ただし、ログは上記通り実施すると量がすごく、GCPの Egress トラフィック課金が出るので切っている

### Slack
個人で無料で使っている Slack , Workspace 
ここの例では「HomeLab」というワークスペースを作成して実施している

## 実施手順

1. Datadog と Slack の連携
2. Datadog でのモニタリング追加 (Slackへ通知)
3. 発報試験

## 1. Datadog と Slack の連携
[Slack] 下記通りワークスペースの URL をメモする
![スクリーンショット 2020-10-31 15.16.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/34257960-68f8-c31f-bc66-f316f32a7fd1.png)


[Slack] 連携するワークスペース内に Datadog から通知を受けるチャンネルを作成する
![スクリーンショット 2020-10-31 15.08.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/0e3005d9-a701-2527-fdc2-60cdfe078026.png)

[Datadog] Datadog で `Integrations` > `Integrations` を選択し、`Slack` を選択する
https://app.datadoghq.com/account/settings#integrations/slack
![スクリーンショット 2020-10-31 15.14.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/82c779a7-2920-bc37-4113-810d63d50d2e.png)

[Datadog] 上記画面の `Connect Slack Account` をクリックしてワークスペースへコネクトする

[Datadog] 下記画面に遷移するので Slack へログインする

![スクリーンショット 2020-10-31 15.43.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/00274eaa-3ff4-4a93-b43e-6be73f1fe7ed.png)

[Slack] slack アカウントの認証をする

![スクリーンショット 2020-10-31 15.20.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/a8cdf62a-5e9d-4bee-0a63-e03a7114896b.png)


[Slack] 認証が成功すると、下記でアクセス権限付与になるので `許可する` をクリックする

![スクリーンショット 2020-10-31 15.21.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/d5e8f23d-536c-8a84-d017-041c102a733e.png)

[Datadog] 下記画面に戻り、アカウント連携ができたことを確認できる

![スクリーンショット 2020-10-31 15.21.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/e638c281-e2d5-b14f-eed5-d91bfdc95353.png)

[Datadog] また、下記 URL で連携した Slack アカウントが確認可能
https://app.datadoghq.com/auth/integration/slack/connect-account

![スクリーンショット 2020-10-31 15.28.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/afe833b8-b8bf-cd8f-50fa-8047751193dc.png)


[Datadog] チャンネル登録を下記で実施する

![スクリーンショット 2020-10-31 15.32.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/a5a8de2e-4c41-e997-dd7b-03a85d2a13c0.png)
![スクリーンショット 2020-10-31 15.37.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/21bfce2e-afb2-914d-8270-8d3d45fe7612.png)

[Slack] 上記完了すると、自動で Datadog アプリが Slack チャンネルに連携される
![スクリーンショット 2020-10-31 15.35.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/65bdf4f6-08a1-3662-b336-5a9a7ba8885e.png)
 
以上で、Datadog と Slack の連携が完了

## 2. Datadog でのモニタリング追加 (Slackへ通知)
`Monitors` > `New Monitor` をクリック
![スクリーンショット 2020-10-31 15.46.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/9fbf322a-cb5b-f8bd-b9ab-68cf651e30ee.png)

### ホスト監視
GCP の VM インスタンスに Datadog エージェント入れてないパターンで試してみた。(低スペックなので)

`Integration` を選択する
![スクリーンショット 2020-10-31 16.08.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/4f8ccd6f-6c59-417e-81e4-d206c8f92e49.png)


下記画面になるので、設定する

![スクリーンショット 2020-10-31 18.57.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/1043b72a-ddd0-754c-07f6-fdd44a3d6e2d.png)



 - Say what's happening
    - Alert の通知内容が記載できる
    - 例としては下記
        - Title
            - 例
                - Monitor Host {{host.name}}
            - 上記通りにすることで、ホスト名がタイトルに追加できる
        - Message
            - 例
                - {{#is_alert}} Host Down {{/is_alert}} 
                - {{#is_alert_recovery}} Host Up {{/is_alert_recovery}} 
                - @slack-HomeLab-datadog-monitoring
            - #で通知するタイミングでメッセージ内容を変えられる
            - @で通知先を記載できる
                - 今回は Slack なので`@slack`-[ワークスペース名]-[チャンネル名] で指定できる

![スクリーンショット 2020-10-31 16.21.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/1e04cf19-f183-35a1-3ee9-a13aefbd95e4.png)

### BGP 監視
GCP の BGP 監視も `Integration` から作成してみる
VPN の監視もできるが、VPN 上でやっている BGP のセッション数を監視することにした

 - Say what's happening
    - Alert の通知内容が記載できる
    - 例としては下記
        - Title
            - 例
                - GCP BGP Session State Change Project Name [ {{project_id}} ]
            - 上記通りにすることで、GCP のプロジェクト名がタイトルに出せる
        - Message
            - 例
                - {{#is_alert}} BGP Neighbor down {{/is_alert}} 
                - {{#is_alert_recovery}} BGP Neighbor Up {{/is_alert_recovery}} 
                - @slack-HomeLab-datadog-monitoring

![スクリーンショット 2020-10-31 21.17.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/29dcd26a-f69f-1bd2-a804-a540688eb9ab.png)

### モニタリング確認
`Monitors` > `Manage Monitors` で下記画面にてモニタリング状況を確認できる

![スクリーンショット 2020-10-31 22.07.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/555303bc-74ea-65f3-02fe-4762aff00d7d.png)

試しにホスト監視の状況を確認すると下記の通り時系列で状況がみれる (発報試験をした後にキャプチャしたので断が多い画像になっている)

![スクリーンショット 2020-10-31 22.09.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/ace9a918-90c8-a75c-b183-b75a794d085b.png)


## 3. 発報試験

### ホスト監視
試しに VM インスタンスを poweroff / on して、下記発報を確認した

![スクリーンショット 2020-10-31 21.40.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/da1de270-2197-d04e-e8c9-0aaf0d2b323b.png)


レスポンス悪く5分くらいしないと障害・復旧出なかったので、レスポンスよくするにはエージェント入れたほうがよさそうだった

### BGP 監視
オンプレ側のルータで VPN インターフェース (VTI) を落として、下記発報を確認した

![スクリーンショット 2020-10-31 21.41.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326183/c67b1db4-748f-733b-db14-361a6bc980d0.png)

こちらも検知に 10 分くらいかかった。個人的なラボなんでこれでいいが商用環境とかでやるには別の方法が良さそう

## おわりに
GCP を Datadog の Free Plan でモニタリングして Slack 通知を可能にした
Datadog の Free Plan の Alerts がずっと使えるのか？上限が有るのか？…ドキュメント見つからずわからない
できれば個人試験目的なので無料でやっていきたい

・今後
Slack 通知したグラフ画像が UTC で JST から9時間ずれたので修正方法を確認したい
他にも Datadog 初心者なので色々と試していきたい