概要
Google Cloud Platform に接続して、すべての Google Compute Engine (GCE) ホストを Datadog に表示できます。GCE ホストタグと追加した GCE ラベルがホストに自動的にタグ付けされるため、Datadog のインフラストラクチャー概要にホストを表示し、分類することができます。
Datadog の GCP インテグレーションは、
すべての Google Cloud メトリクスを収集するように構築されています。Datadog では継続的にドキュメントを更新してすべてのサブインテグレーションを表示できるように努めていますが、新しいメトリクスやサービスがクラウドサービスから次々にリリースされるため、インテグレーション一覧が追い付かないことがあります。
計画と使用
Datadog の Google Cloud インテグレーションをセットアップして、Google Cloud サービスからメトリクスとログを収集します。
前提条件
組織でドメインによるアイデンティティを制限している場合、Datadog の顧客アイデンティティをポリシーで許可値として追加する必要があります。Datadog の顧客アイデンティティ: C0147pk0i
サービスアカウントのなりすましとプロジェクトの自動検出は、プロジェクト監視のために特定のロールと API が有効化されていることを前提としています。開始する前に、監視するプロジェクトで以下の API が有効になっていることを確認してください。
メトリクスの収集
インフラストラクチャーリスト
サービスアカウントの権限委譲は サイトでは利用できません。
Datadog と Google Cloud のインテグレーションには、サービスアカウントの権限委譲とプロジェクトの自動検出を使用することができます。
この方法では、関連するプロジェクトに IAM ロールを割り当てることで、サービスアカウントから見えるすべてのプロジェクトを監視することができます。これらのロールを個別にプロジェクトに割り当てることも、組織レベルやフォルダレベルでこれらのロールを割り当てて、プロジェクトのグループを監視するように Datadog を構成することもできます。このようにロールを割り当てることで、Datadog は、将来グループに追加される可能性のある新しいプロジェクトを含め、指定されたスコープ内のすべてのプロジェクトを自動的に検出して監視することができます。
1. Google Cloud サービスアカウントを作成する
- Google Cloud コンソールを開きます。
- IAM & Admin > Service Accounts に移動します。
- 一番上の Create service account をクリックします。
- サービスアカウントに固有の名前を付け、Create and continue をクリックします。
- サービスアカウントに以下のロールを追加します。
- Monitoring Viewer
- Compute Viewer
- Cloud Asset Viewer
- Browser
- Continue、Done の順にクリックすると、サービスアカウントの作成が完了します。
2. サービスアカウントに Datadog プリンシパルを追加する
- Datadog で Integrations > Google Cloud Platform に移動します。
- Add GCP Account をクリックします。プロジェクトが構成されていない場合は、自動的にこのページにリダイレクトされます。
- 組織の Datadog プリンシパルを生成していない場合は、Generate Principal ボタンをクリックします。
- Datadog プリンシパルをコピーして、次のセクションで使用します。このウィンドウは次のセクションまで開いておいてください。
- Google Cloud コンソールの Service Acounts メニューから、最初のセクションで作成したサービスアカウントを探します。
- Permissions タブに移動し、Grant Access をクリックします。
- Datadog プリンシパルを New principals テキストボックスに貼り付けます。
- Service Account Token Creator のロールを割り当て、Save をクリックします。
注: 以前に共有 Datadog プリンシパルを使用してアクセスを構成している場合は、この手順を完了した後に、そのプリンシパルの権限を取り消すことができます。
3. Datadog でインテグレーションセットアップを完了する
- Google Cloud コンソールで、Service Account > Details タブに移動します。そこで、この Google サービスアカウントに関連付けられているメールアドレスを見つけることができます。
<sa-name>@<project-id>.iam.gserviceaccount.com
のような形式です。 - このメールアドレスをコピーします。
- Datadog のインテグレーション構成タイルに戻ります (前のセクションで Datadog プリンシパルをコピーした場所)。
- Add Service Account Email の下にあるボックスに、先ほどコピーしたメールアドレスを貼り付けます。
- Verify and Save Account をクリックします。
約 15 分後、Datadog にメトリクスが表示されます。
4. 他のプロジェクトにロールを割り当てる (オプション)
プロジェクトの自動検出により、監視対象のプロジェクトを追加するプロセスが簡素化されます。サービスアカウントに他のプロジェクト、フォルダ、または組織へのアクセスを許可すると、Datadog はこれらのプロジェクト (およびフォルダや組織にネストされたプロジェクト) を検出し、インテグレーションタイルに自動的に追加します。
- 必要なスコープでロールを割り当てるための適切な権限があることを確認します。
- プロジェクト IAM 管理者 (またはそれ以上)
- フォルダ管理者
- 組織管理者
- Google Cloud コンソールで、IAM ページに移動します。
- プロジェクト、フォルダ、または組織を選択します。
- リソース上で他のロールをまだ持っていないプリンシパルにロールを付与するには、Grant Access をクリックし、先ほど作成したサービスアカウントのメールアドレスを入力します。
- 以下のロールを割り当てます。
- Compute Viewer
- Monitoring Viewer
- Cloud Asset Viewer
注: Browser ロールは、サービスアカウントのデフォルトプロジェクトでのみ必要です。
- Save をクリックします。
構成
オプションで、プロジェクトのドロップダウンメニューの下にある Limit Metric Collection テキストボックスにタグを入力することで、Datadog に取り込まれる GCE インスタンスを制限することができます。定義されたタグの 1 つに一致するホストのみが Datadog にインポートされます。ワイルドカード (?
は 1 文字、*
は複数文字) を使って多くのホストに一致させたり、!
を使って特定のホストを除外することができます。この例では c1*
サイズのインスタンスをすべて含めますが、ステージングホストは除外します。
datadog:monitored,env:production,!env:staging,instance-type:c1.*
詳しくはラベルの作成と管理に関する Google のドキュメントを参照してください。
ログ収集
Google Cloud Dataflow と Datadog テンプレートを使用して Google Cloud サービスから Datadog にログを転送します。この方法では、Datadog に転送する前にイベントの圧縮とバッチ処理の両方が提供されます。このセクションの指示に従ってください。
1。構成されたログシンクからログを受信するために、Pub/Sub トピックとプルサブスクリプションを作成します
2。カスタム Dataflow ワーカーサービスアカウントを作成し、Dataflow パイプラインワーカーに最小権限を提供します
3。ログシンクを作成し、ログを Pub/Sub トピックに公開します
4。Datadog テンプレートを使用して Dataflow ジョブを作成し、Pub/Sub サブスクリプションから Datadog にログをストリーミングします
GCE や GKE ログを含め、ログシンクで作成したロギングフィルターを通して、どのログを Datadog に送信するかを完全に制御することができます。フィルターの書き方については Google の Logging のクエリ言語のページを参照してください。
注: Google Cloud Dataflow を使用するには、Dataflow API を有効にする必要があります。詳細は Google Cloud ドキュメントの API の有効化を参照してください。
GCE または GKE で実行されているアプリケーションからログを収集するには、Datadog Agent を使用することもできます。
Pub/Sub Push サブスクリプションによる Google Cloud ログの収集は、以下の理由により非推奨になるプロセス中です。
- Google Cloud VPC がある場合、Push サブスクリプションは VPC 外のエンドポイントにアクセスできない
- Push サブスクリプションはイベントの圧縮やバッチ処理を提供しないため、非常に少ないログ量にのみ適している
Push サブスクリプションのドキュメントは、トラブルシューティングやレガシーセットアップの変更のためにのみ維持されています。Google Cloud のログを Datadog に転送するには、Datadog Dataflow テンプレートで Pull サブスクリプションを代わりに使用してください。
1. Cloud Pub/Sub トピックとサブスクリプションを作成する
Cloud Pub/Sub コンソールに移動し、新しいトピックを作成します。Add a default subscription オプションを選択し、セットアップを簡素化します。
注: 手動で Cloud Pub/Sub サブスクリプションを Pull 配信タイプで構成することもできます。手動で Pub/Sub サブスクリプションを作成する場合は、Enable dead lettering
ボックスをオフにしたままにしてください。詳細については、サポートされていない Pub/Sub 機能を参照してください。
トピックに export-logs-to-datadog
のような明示的な名前を付け、Create をクリックします。
Datadog API によって拒否されたログメッセージを処理するために、追加のトピックとデフォルトのサブスクリプションを作成します。このトピックの名前は Datadog Dataflow テンプレート内で outputDeadletterTopic
テンプレートパラメーターのパス構成の一部として使用されます。失敗したメッセージの問題を検査して修正したら、Pub/Sub to Pub/Sub テンプレートジョブを実行して元の export-logs-to-datadog
トピックに送り返します。
Datadog では、後で Datadog Dataflow テンプレートで使用するために、有効な Datadog API キーを使用して Secret Manager でシークレットを作成することを推奨しています。
警告: Cloud Pub/Sub は、Google Cloud の割り当てと制限の対象となります。Datadog では、ログ数がこの制限を超える場合は、ログを複数のトピックに分割することをお勧めしています。この制限に近づいた場合のモニター通知のセットアップについては、Pub/Sub ログの転送を監視するセクションを参照してください。
2. カスタム Dataflow ワーカーサービスアカウントを作成する
Dataflow パイプラインワーカーは、デフォルトの挙動として、プロジェクトの Compute Engine のデフォルトのサービスアカウントを使用します。これは、プロジェクト内のすべてのリソースに権限を与えるものです。Production 環境からログを転送する場合は、代わりに必要なロールと権限のみでカスタムワーカーサービスアカウントを作成し、このサービスアカウントを Dataflow パイプラインワーカーに割り当てる必要があります。
- Google Cloud コンソールの Service Accounts ページにアクセスし、プロジェクトを選択します。
- CREATE SERVICE ACCOUNT をクリックし、サービスアカウントに分かりやすい名前を付けます。CREATE AND CONTINUE をクリックします。
- 必要な権限テーブルにロールを追加し、DONE をクリックします。
必要なアクセス許可
ロール | パス | 説明 |
---|
Dataflow Admin | roles/dataflow.admin | このサービスアカウントによる Dataflow 管理タスクの実行を許可します |
Dataflow Worker | roles/dataflow.worker | このサービスアカウントによる Dataflow ジョブ操作の実行を許可します |
Pub/Sub Viewer | roles/pubsub.viewer | このサービスアカウントが Google Cloud ログで Pub/Sub サブスクリプションからのメッセージを表示することを許可します |
Pub/Sub Subscriber | roles/pubsub.subscriber | このサービスアカウントが Google Cloud ログで Pub/Sub サブスクリプションからのメッセージを取得することを許可します |
Pub/Sub Publisher | roles/pubsub.publisher | このサービスアカウントが別のサブスクリプションにフィールドメッセージを公開することを許可します。これにより、ログの解析や再送信が可能になります |
Secret Manager Secret Accessor | roles/secretmanager.secretAccessor | このサービスアカウントが Secret Manager で Datadog API キーにアクセスすることを許可します |
Storage Object Admin | roles/storage.objectAdmin | このサービスアカウントがファイルのステージング用に指定された Cloud Storage バケットに対する読み取りと書き込みを行うことを許可します |
注: Dataflow パイプラインワーカー用のカスタムサービスアカウントを作成しない場合は、デフォルトの Compute Engine のサービスアカウントが上記の必要な権限を持っていることを確認してください。
3. Google Cloud Pub/Sub トピックからログをエクスポートする
Google Cloud コンソールの Logs Explorer ページにアクセスします。
Log Router タブより、Create Sink を選択します。
シンクに名前を設定します。
宛先として Cloud Pub/Sub を選択し、その目的で作成された Cloud Pub/Sub トピックを選択します。注: Cloud Pub/Sub トピックは別のプロジェクトに配置できます。
オプションの包含または除外フィルターを使用して、シンクに含めるログを選択します。検索クエリでログをフィルタリングするか、sample 関数を使用します。例えば、severity
レベルが ERROR
のログの 10% だけを含めるには、severity="ERROR" AND sample(insertId, 0.01)
の包含フィルターを作成します。
Create Sink をクリックします。
注: 異なるシンクを利用して、Google Cloud Logging から同一の Cloud Pub/Sub トピックに対して複数のエクスポートを行うことが可能です。
4. Dataflow ジョブを作成して実行する
Google Cloud コンソールの Create job from template ページに移動します。
ジョブに名前を付け、Dataflow 地域エンドポイントを選択します。
Dataflow template ドロップダウンで Pub/Sub to Datadog
を選択すると、Required parameters セクションが表示されます。
a. Pub/Sub input subscription ドロップダウンで入力サブスクリプションを選択します。
b. Datadog Logs API URL フィールドに以下の値を入力します。
注: 上記の URL をコピーする前に、ページの右側にある Datadog サイトセレクタがあなたの Datadog サイトに設定されていることを確認してください。
c. Output deadletter Pub/Sub topic ドロップダウンで、メッセージの失敗を受信するために作成されたトピックを選択します。
d. Temporary location フィールドで、ストレージバケット内の一時ファイルのパスを指定します。
- ステップ 1 で言及したように Datadog API キーの値で Secret Manager にシークレットを作成した場合は、シークレットのリソース名を Google Cloud Secret Manager ID フィールドに入力します。
その他の利用可能なオプションの使用については、Dataflow テンプレートのテンプレートパラメーターを参照してください。
apiKeySource=KMS
で、apiKeyKMSEncryptionKey
に Cloud KMS のキー ID を、apiKey
に暗号化された API キーを設定- 非推奨:
apiKeySource=PLAINTEXT
で、apiKey
にプレーンテキストの API キーを設定
- カスタムワーカーサービスアカウントを作成した場合は、Service account email ドロップダウンでそれを選択します。
- RUN JOB をクリックします。
注: 共有 VPC がある場合は、Dataflow ドキュメントのネットワークとサブネットワークの指定ページを参照して、Network
と Subnetwork
パラメーターの指定のガイドラインを確認してください。
検証
Datadog Log Explorer に Cloud Pub/Sub トピックに配信された新規ログイベントが表示されます。
注: Google Cloud Pricing Calculator を使用して、潜在的なコストを計算することができます。
Cloud Pub/Sub ログの転送を監視する
Google Cloud Pub/Sub インテグレーションは、ログ転送のステータスを監視するのに役立つメトリクスを提供します。
gcp.pubsub.subscription.num_undelivered_messages
は配信保留中のメッセージ数を表しますgcp.pubsub.subscription.oldest_unacked_message_age
は、サブスクリプション内の最も古い未承認メッセージの年齢を表します
上記のメトリクスをメトリクスモニターと一緒に使用すると、入力とデッドレターサブスクリプション内のメッセージのアラートを受け取ることができます。
Dataflow パイプラインを監視する
Datadog の Google Cloud Dataflow インテグレーションを使用して、Dataflow パイプラインのあらゆる側面を監視することができます。すぐに使えるダッシュボード上で、Dataflow ワークロードを実行している GCE インスタンスに関する情報や Pub/Sub スループットなどのコンテキストデータでリッチ化された、すべての Dataflow 主要メトリクスを確認できます。
また、あらかじめ構成されている Recommended Monitor を使用して、パイプラインのバックログ時間の増加に対する通知をセットアップすることもできます。詳細は、Datadog ブログの Datadog による Dataflow パイプラインの監視を参照してください。
リアルユーザーモニタリング
データセキュリティ
メトリクスについては、個別の Google Cloud インテグレーションのページを参照してください。
累積メトリクス
累積メトリクスは、メトリクス名ごとに .delta
メトリクスを伴って Datadog にインポートされます。累積メトリクスとは、値が時間の経過とともに常に増加するメトリクスです。たとえば、sent bytes
のメトリクスは累積的である可能性があります。各値は、その時点でサービスによって送信された総バイト数を記録します。デルタ値は、前回の測定からの変化を表します。
例:
gcp.gke.container.restart_count
は累積的なメトリクスです。このメトリクスを累積メトリクスとしてインポートする際、Datadog は (累積メトリクスの一部として送信される集計値ではなく) デルタ値を含む gcp.gke.container.restart_count.delta
メトリクスを追加します。詳細については、Google Cloud メトリクスの種類を参照してください。
ヘルプ
Google Cloud Platform によって生成されたすべてのサービスイベントが Datadog のイベントエクスプローラーに転送されます。
ヘルプ
Google Cloud Platform インテグレーションには、サービスのチェック機能は含まれません。
Lambda のトレースされた起動の 1 時間単位使用量の取得
タグは、Google Cloud Platform と Google Compute Engine の様々な構成オプションに基づいて自動的に割り当てられます。project_id
タグは、すべてのメトリクスに追加されます。追加のタグは、利用可能な場合に Google Cloud Platform から収集され、メトリクスの種類に応じて異なります。
また、Datadog は以下をタグとして収集します。
<キー>:<値>
ラベルが付けられたホスト。- Custom labels from Google Pub/Sub、GCE、Cloud SQL、Cloud Storage のカスタムラベル
ヘルプ
ユーザー定義の gcp.logging メトリクスに不正なメタデータが適用される
非標準の gcp.logging メトリクス (Datadog に付属するログメトリクス以外のメトリクスなど) に適用されるメタデータが Google Cloud Logging と一致しない場合があります。
このような場合は、メタデータを手動で設定する必要があります。設定するには、メトリクスサマリーページに移動し、問題のメトリクスを検索して選択し、メタデータの横にある鉛筆アイコンをクリックします。
ご不明な点は、Datadog のサポートチームまでお問い合わせください。
その他の参考資料