Google Cloud に Datadog を導入してみよう - GCP Integration 編

こんにちは、京セラコミュニケーションシステム 井筒 (@kccs_naoto-izutsu) です。

前回の記事に引き続き、Datadog シリーズの第2回目です。

https://qiita.com/kccs_naoto-izutsu/items/a0de7a78589a0b6eb750

今回は、Datadog の GCP Integration を使って Cloud Monitoring の情報を収集してみたいと思います。

## この記事の対象者

- Datadog に興味がある人
- これから Datadog を使って Google Cloud をモニタリングしてみようと思っている人

## GCP Integration の設定

GCP Integration で Cloud Monitoring の情報を収集するためには、以下のステップで設定を行います。

1. Google Cloud 側の設定
   1. API の有効化
   2. Service Account の作成
2. Datadog 側の設定
   1. GCP Integration の設定

Datadog 公式のセットアップ手順は以下になります。
本記事では、公式ドキュメントからポイントを絞って説明します。

https://docs.datadoghq.com/ja/integrations/google_cloud_platform/#%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97

### Google Cloud 側の設定

#### API の有効化

Datadog の GCP Integration で Cloud Monitoring の情報を収集するためには、Google Cloud 側でいくつかの API を有効化する必要があります。

具体的には、以下の 4 つです。

| API 名                                           | サービス名                  |
| ------------------------------------------------ | --------------------------- |
| [Cloud Billing API](https://console.cloud.google.com/apis/library/cloudbilling.googleapis.com) | cloudbilling.googleapis.com |
| [Stackdriver Monitoring API(Cloud Monitoring API)](https://console.cloud.google.com/apis/library/monitoring.googleapis.com) | monitoring.googleapis.com   |
| [Compute Engine API](https://console.cloud.google.com/apis/library/compute.googleapis.com) | compute.googleapis.com      |
| [Cloud Asset API](https://console.cloud.google.com/apis/library/cloudasset.googleapis.com) | cloudasset.googleapis.com   |

各 API の詳細画面で、以下のように「API が有効です」となっていれば問題ありません。
そうでない場合は、「有効にする」ボタンをクリックして有効化しておきます。

![Q-0061_001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989018/167d2121-152c-9f0a-5221-a3929670a4c1.png)

#### Service Account の作成

続いて、サービスアカウントを作成します。
GCP Integration では、以下の 3 つのロールが必要です。

1. Compute 閲覧者
2. モニタリング閲覧者
3. クラウド アセット閲覧者

3つ目の「クラウド アセット閲覧者」ですが、Datadog のドキュメントでは「Cloud Asset 閲覧者」と表記されています。
私が試した環境では、ロール検索の際にカタカナでないとヒットしませんでした。ご注意ください。
(サービスアカウントの作成方法については、本記事では割愛します)

サービスアカウントを作成したら、サービス アカウント キーを JSON で作成・ダウンロードしておきましょう。

### Datadog 側の設定

続いて、Datadog 側の設定を行います。

Integrations をクリックして、「Google Cloud Platform」を検索して、設定画面を開きます。

![Q-0061_002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989018/91c13925-9914-7a94-4bfa-21026347d149.png)

以下のリンクをクリックしてもOKです。

https://app.datadoghq.com/integrations/google-cloud-platform?search=Google

設定画面を開いたら、Configuration タブから「Upload Private Key File」をクリックして、先ほどダウンロードしておいたサービスアカウントキーの JSON ファイルをアップロードします。
以下の図のように、「ProjectID」と「Client Email」に想定した内容が表示されていれば OK です。
**次章の注意点を先に読んでから**、画面下部の「Install Integration」ボタンをクリックしてください。

![Q-0061_003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989018/da2f227f-0119-9ecf-2fe4-e3adf0595bce.png)

### 注意点

GCP Integration を設定するにあたって、注意すべき点が 2 つあります。

#### 1つ目：Google Cloud 側での課金

**Cloud Monitoring API に対して課金が発生します。**

第1回目の記事で説明した通り GCP Integration は Cloud Monitoring API をコールしますので、Cloud Monitoring API の利用料が発生します。
Google Cloud 側の各種リソースの作成状況によりますが、Cloud Monitoring API コールの無料枠(100万回)ではカバーできないと思っておいてください。

#### 2つ目：Datadog 側での課金

**Compute Engine に対して、Datadog Infrastructure の課金が発生します。**

Datadog の Infrastructure サービスはモニタリング対象ホスト数に応じて課金されます。
Datadog Agent をインストールしているホストだけが対象と思ってしまうかもしれませんが、Cloud Monitoring API 経由で Metrics を収集している Compute Engine のインスタンスも課金対象となります。
Datadog Agent のインストール有無は関係ありません。

意図しない課金を避けるためには、GCP Integration の設定画面にある「Optionally Limit Metrics Collection to hosts with tag」を活用しましょう。

![Q-0061_004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989018/23c9dbda-6480-e733-d4b3-2e8613d08df8.png)

ここに任意のタグ(たとえば datadog_monitor:true など)を設定することで、**そのタグ(Compute Engine 的にはラベル)を持つインスタンスのみをデータ収集対象にできます**。
指定したラベルがついている Compute Engine のインスタンスだけが課金対象なりますので、必要に応じて設定してください。
もちろん、Compute Engine 側のラベルも、これに合わせて設定する必要があります。
ただし、Datadog Agent をインストールしている場合は Compute Engine のラベルにかかわらず課金対象です。

## 確認

GCP Integration の設定が終わったら、Datadog 側に Cloud Monitoring のデータが収集されているか確認してみましょう。

Datadog の画面から「Metrics -> Summary」を開いて、検索してみましょう。

![Q-0061_005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989018/a8f12809-d163-8185-d057-a56a486ca87f.png)

Google Cloud 関連の Metrics は「gcp.」で始まりますので、検索窓に「gcp.」と入力してみます。
Cloud Monitoring からデータが収集されていれば、ずらりと Metrics の一覧が表示されると思います。
私が試した環境では、601 個の Metrics が収集されていました。

![Q-0061_006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989018/7161f8a9-2829-18db-6e0d-636a2510c6b0.png)

### 注意点

GCP Integration が収集する Cloud Monitoring の Metrics は、以下のページに記載されているものが対象となります。
このページを見ると、ローンチステージが `GA(General Availability)` だけではなく、`ALPHA` や `BETA`、`DEPRECATED` も含まれています。

https://cloud.google.com/monitoring/api/metrics_gcp?hl=ja

例えば、こういう Metrics です。

![Q-0061_007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989018/e8279a55-acbf-106a-7182-a3946a9451d1.png)

![Q-0061_008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989018/2dfdd823-6769-2466-f8a1-1aa41a33b490.png)

GCP Integration は、ローンチステージに関係なくすべての Metrics を収集しますが、Datadog 側でローンチステージを確認するすべはありません。
Datadog でダッシュボートやモニターを作成する場合は、[Cloud Monitoring の Metrics 一覧ページ](https://cloud.google.com/monitoring/api/metrics_gcp?hl=ja)を参照して **使用する Metrics のローンチステージが GA かどうか** を確認しておきましょう。

GA 以外の Metrics を使用していると、いつの間にか挙動が変わって困ったことになる可能性があります。。。

## まとめ

本記事では、Datadog の GCP Integration の設定方法と注意点をご紹介しました。

GCP Integration の設定は難しくないのですが、気軽に課金されてしまう要素がありますので注意が必要です。
Datadog の料金体系は利用するサービス毎に細かく定義されているので、個人的にはとても複雑だと思っています。このあたりについても、またの機会に説明できればと思います。

## 免責事項

本記事に記載している内容は、2022年12月時点の情報となります。
記事の内容を筆者の理解をベースに作成したものとなり、実際の内容とは異なる可能性があります。
正確な情報は、必ず Google Cloud や Datadog の公式ドキュメントを参照してください。