9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AoToAdvent Calendar 2024

Day 1

【完全解説】4大クラウドの Datadog integrations アーキテクチャ【2024年版】

Last updated at Posted at 2024-12-01

はじめに

こんにちは、Datadog Japan で Sales Engineer をしている AoTo です。

この投稿は AoTo Advent Calendar 2024 1日目の記事です。

この記事は定期的に更新されています。
現在は2024年12月時点での情報をもとにアップデートされています。1

この記事では、Datadog が提供している、Amazon Web Services(AWS), Microsoft Azure, Google Cloud のいわゆる「3大クラウド」に Oracle Cloud Infrastructure(OCI) を加えた「4大クラウド」からの監視・セキュリティ・コストの情報を収集するためのインテグレーションの全体像とアーキテクチャをまとめています。

本記事内の「4大クラウド」の定義は、2024 Gartner®️ Magic Quadrant™️ for Strategic Cloud Platform Services の内 Leaders に位置されるプラットフォームとしています。

ここでは、各インテグレーションの設定方法に言及しません
設定方法は以下の Datadog の公式ドキュメントをご参照ください。

クラウドインテグレーション概要

Datadog は現在、800以上のインテグレーションを提供しており、インテグレーション入門によるとインテグレーションは以下の3種類に大分されます。

  • エージェントベース
  • 認証(クローラー)ベース
  • ライブラリ

この中で、4大クラウドのインテグレーションは「認証(クローラー)ベース」にあたります。認証 (クローラー)ベース特徴として、「Datadog Agent/Tracer を利用しない」「Datadog API を利用する」「Datadog アプリケーション2内で制御・設定される」ことが挙げられます。

特に、各クラウドインテグレーションはクラウド上に権限リソースを用意し、その情報を用いて Datadog アプリケーションのバックグラウンドで用意されるクローラーによる定期的な情報取得が行われる共通点があります。

Cloud-Integrations.png

メトリクス収集

メトリクス収集は基本的に Pull 型のデータ連携です。

Cloud-Integrations-Metrics.png

各クラウドの監視サービスに保存されているメトリクスは、クラウド上に用意された権限リソースとクローラーによる定期的な情報取得によって Datadog に収集されます。この権限リソースは、図のようなメトリクスデータの取得だけではなく、各クラウドリソースのメタデータの取得・コスト情報の取得・セキュリティ/アセット情報の取得3にも利用されます。

クローラーによる定期的な情報取得となるため、メトリクス取得用の API が提供されていることが前提条件となります。さらに、各クラウド上のメトリクスデータが利用可能となるまでに定められた時間があり、メトリクス取得頻度も5-10分間隔となるため、メトリクスの遅延を考慮する必要があります。

AWS, OCI ではこの方法に限らず、クラウド側からメトリクスを Push 型で送信する方法が提供されています。

ログ収集

ログ収集は基本的に Push 型のデータ連携です。

Cloud-Integrations-Logs.png

各クラウドの監視サービスまたはオブジェクトストレージに保存されているログは、クラウド上のサーバレス関数をログの保管元の更新によりトリガーするイベント駆動型の情報取得によって Datadog に収集されます。

イベント駆動型の情報取得となるため、各クラウドで提供されているトリガー方式やサーバレス関数の仕組みや実装方法が多少異なります。さらに、既存の実働環境への影響を最小限とするため、サーバレス関数などのサービス利用の割り当て制限に注意する必要があります。

コスト情報収集

コスト情報収集はクラウドの機能で出力したコスト情報を、Pull 型のデータ連携で取得します。

Cloud-Integrations-Costs.png

各クラウドは請求情報をその内訳と共にオブジェクトストレージにエクスポートする機能を備えており、Datadog Cloud Cost Management を有効化することで、メトリクス収集で利用している既存の認証情報を利用してコスト情報を収集できます。4

これらのコスト情報は実際の請求を元に生成されるため、クラウド利用時の契約を反映し、Datadog ではカタログ価格であるオンデマンド(On-demand)・契約に応じたディスカウントを含む償却費(Amortized)と非混合費(Unblended)・プライベートディスカウント等を対象とする正味コスト(Net) などに分類して表示可能です。

さらに、コスト情報を可視化するだけではなく、EKS, ECS, AKS, GKE などのコンテナサービスのコストをポッド、ノード、コンテナ、タスクなどのワークロード量に応じてコストの割り当てを行うコンテナコスト配分機能を利用できます。

メタデータ収集

メタデータ収集は基本的に Pull 型のデータ連携です。

Cloud-Integrations-Metadata.png

メトリクス収集と同時に、クローラーが読み取り権限を利用して各リソースのメタデータを取得し Datadog 上の監視情報にタグとして付与します。

この他に、Datadog Cloud Security Management を有効化することで、クラウドの構成情報などを追加で取得してクラウド上の構成ミスを発見する Cloud Security Posture Management(CSPM) を実現できます。

さらに、クラウド認証情報の IAM 情報のリスクを評価する Identity Risk 機能 をさらに活用するためには、実際の利用証跡である監査ログと併せて Cloud Infrastructure Entitlement Management(CIEM)を実現できます。

AWS integration のアーキテクチャ

AWS integration で取得できる情報は AWS アカウント単位です。

AWS Orgatnizations 配下の複数の AWS アカウントに設定を行う場合は、CloudFormation Stack Sets を活用した、AWS integrations for Multi-Accounts の設定がサポートされています。5

 Datadog-AWS-Integration.png

インテグレーションに必要なリソースは、Datadog 内の AWS integration 設定ページから CloudFormation テンプレートを利用してデプロイ可能です。これにより、主にメトリクス収集をはじめとする Datadog からのクローラーベースのアクセスを許可するための IAM role とログを転送する Lambda 関数がデプロイされます。6

詳細は『Datadog integrations Deep Dive - AWS 編』で解説しています。

メトリクス収集

 Datadog-AWS-Integration-Metrics.png

CloudFormation または手動で作成した IAM role の権限を利用して、外部 ID で登録された Datadog クローラーが存在する Datadog AWS アカウントから CloudWatch Metrics API約10分に1回の定期的なアクセスが行われます。

これにより、ほぼすべての CloudWatch Metrics に存在するメトリクス15~20分の遅延で Datadog に収集します。この遅延は、アクセス頻度に加えて AWS 上の各メトリクスが API によって取得可能になるまでのタイムラグを考慮したものであり、Datadog サポートへの依頼で頻度を変更するCloudWatch Metrics Streams を利用することで削減することが可能です。

既存の AWS サービスに新たに追加されたメトリクス7は既存の名前空間(AWS/<AWSサービス名>)に追加されますが、Datadog のサポートが開始されるまではこれらのメトリクスを Datadog へ取り込むことができません。

新たな AWS サービスのメトリクスや独自の名前空間を設定したカスタムメトリクスは、Datadog 上の AWS 設定画面より □ [Collect Custom Metrics] ラジオボタンを有効化することでカスタムメトリクスとして取り込むことが可能です。

ログ収集

 Datadog-AWS-Integration-Logs.png

CloudFromation で作成した Datadog Lambda Forwarder はデータソースとして CloudWatch Logs ロググループS3 バケット を対象にし、それらのログはタグ付け・ログのフィルター・圧縮・暗号化などを経て Datadog Logs intake API に転送されます。

前者はロググループレベルのサブスクリプションフィルターで、後者は S3 イベント通知によって Datadog Lambda Forwarder をトリガーします。これらは Datadog の AWS integration 画面でトリガーを自動的にセットアップすることが可能です。

この他にも、アカウントレベルのサブスクリプションフィルターを用いたログ転送も可能です。

サブスクリプションフィルターを利用する際は、Lambda の再起ループを防止するために、デフォルトで CloudWatch Logs ロググループaws/lambda 配下で文字列 datadog-forwarder を含むロググループでフィルターを作成しないよう設定されます。8

コスト情報収集

 Datadog-AWS-Integration-Costs.png

AWS Cost and Usage Report を利用して、1時間単位のレガシー CUR を S3 に出力し、Datadog クローラーが定期的にコスト情報をに収集することで Datadog Cloud Cost Management で可視化できるようになります。

2024年12月時点で、Datadog Cloud Cost Management はレガシー CUR エクスポートの作成で作成された CUR のみをサポートしています。

通常はアカウント全体の CUR をコスト情報として読み取りますが、AWS Billing Conductor を利用している場合は、Billing Conductor CUR を利用してアカウントの一部の情報を元にしたコスト情報のみを対象とすることが可能です。

メタデータ収集

 Datadog-AWS-Integration-Costs-Metadata.png

各リソースの読み取り権限を用いてメタデータ(リソースの構成・タグ情報)取得し、Datadog 上の監視情報へのタグが付与されます。

Datadog Cloud Security Management を有効化し、追加で Secyrity Audit 権限での情報取得を行うことで、Misconfiguration(CSPM), Identity Risk(CIEM) の機能を活用できます。9

Azure integraion のアーキテクチャ

Azure integration で取得できる情報は Azure サブスクリプションまたは管理グループ単位です。

Azure 管理グループレベルでアプリ登録の読み取り権限を割り当てることで、複数のサブスクリプションを監視し、管理グループ内の新しいサブスクリプションを自動的に監視することが可能です。

Datadog-Azure-Integration.png

インテグレーションに必要なリソースは、Datadog 内の Azure integration 設定ページから ARM テンプレートを利用してデプロイ可能です。これにより、Datadog からのクローラーベースのアクセスを許可するための Service principalリソースログ・アクティビティログを転送する Event Hub, Function App がデプロイされます。

AzureNativeIntegration.png

一方で、Datadog サイト US3 を利用すると、リソースを Azure 管理とする Azure Native integration が利用可能です。このインテグレーションは Datadog Resource と呼ばれる Azure 管理の Datadog へ監視情報を連携する専用のリソースをデプロイすることができ、これにより一括でメトリクス・ログ・メタデータの情報収集が可能です。

詳細については『Datadog integrations Deep Dive - Azure 編』で解説しています。

メトリクス収集

Datadog-Azure-Integration-Metrics.png

前述の手順により作成されたアプリケーション登録を通して利用されるサービスプリンシパルの権限を利用して、Datadog クローラーが Azure Metrics Data plane API10約2分に1回の定期的なアクセスが行われます。

これにより、対応するすべての Azure サービスメトリクスAzure Application Insights のカスタムメトリクス4~5分程度の遅延で Datadog に収集します。11

ログ収集

Datadog-Azure-Integration-Logs.png

ARM テンプレートで作成した Azure Function App はデータソースとして Azure Monitor ログBlob Storage を対象とし、それらのログはタグ付け・ログのフィルター・圧縮・暗号化などを経て Datadog Logs intake API に転送されます。

前者は診断設定(Diagnostic setting)で、後者は Azure Blob Storage トリガーによって Azure Function App をトリガーします。

コスト情報収集

Datadog-Azure-Integration-Costs.png

Azure Cost Managenent のエクスポートを利用して、CSV 形式のコストデータ を Azure Storage に出力し、Datadog クローラーが定期的にコスト情報をに収集することで Datadog Cloud Cost Management で可視化できるようになります。新しいエクスポート (プレビュー)で作成されたコストデータも、正しいデータセットのバージョン・データ形式・データ圧縮形式を選択することで利用できます。

メタデータ収集

Datadog-Azure-Integration-Metadata.png

各リソースの読み取り権限を用いてメタデータ(リソースの構成・タグ情報)取得し、Datadog 上の監視情報へのタグが付与されます。

Datadog Cloud Security Management を有効化し、追加で Microsoft Graph API 権限へのアクセス行うことで、Misconfiguration(CSPM), Identity Risk(CIEM) の機能を活用できます。

Google Cloud integration のアーキテクチャ

Google Cloud integration で取得できる情報は Google Cloud 組織・フォルダ・プロジェクトごと、正確にはサービスアカウントから見えるすべてのプロジェクトです。12

サービスアカウントの権限借用プロジェクトの自動発見を使用して複数プロジェクトを対象にできます。サービスアカウント権限借用は、対象のプロジェクトに IAM ロールを割り当てることで Datadog クローラー用のサービスアカウントの参照権限を広げられます。

インテグレーションは Datadog 内の Google Cloud Platform integration 設定ページから発行された Datadog プリンシパルを使用して、適切な権限を付与したサービスアカウントを作成し登録することで完了します。ログ収集に必要なリソース(Pub/Sub, Dataflow, ログシンク)は、手順に従って手動で構成します。

Datadog-GoogleCloud-Integration.png

詳細については『Datadog integrations Deep Dive - Google Cloud 編』で解説しています。

メトリクス収集

Datadog-GoogleCloud-Integration-Metrics.png

前述のサービスアカウントの権限を利用して、Datadog クローラーが前提条件を満たすプロジェクトの Cloud Monitoring API約5分に1回の定期的なアクセスします。

これにより、ほぼすべての Cloud Monitoring に存在するメトリクスを7~8分の遅延で Datadog 上に収集します。

ログ収集

Datadog-GoogleCloud-Integration-Logs.png

AWS, Azure とは異なり、Cloud Logging ログシンクを Pub/Sub トピックに転送し、プルサブスクリプションと Dataflow ジョブでそれらのログを取り出し Datadog へ転送します。

そのため、対象の Pub/Sub トピックにログを転送する適切な IAM 権限を持たせることで、外部プロジェクトのログや Cloud Logging 以外のデータソースのログを転送できます。

非推奨の方式(Pub/Sub トピックとプッシュサブスクリプションによるログ転送)
Datadog-GoogleCloud-Integration-Logs-depricated.png

過去に標準的な方法であった、Pub/Sub トピックとプッシュサブスクリプションを利用する方式は現在非推奨となっています。その理由として、プライベート接続方式が提供されない点ログ転送の信頼性/効率性が担保されない点があります。
設定ドキュメントはトラブルシューティングやレガシーセットアップの変更のためにのみ残されており、こちらの構成でのサポートは提供されません

コスト情報収集

Datadog-GoogleCloud-Integration-Costs.png

Cloud Billing のデータを BigQuery にエクスポートし、Datadog クローラーが定期的にコスト情報を変換・メタデータの付与・収集することで Datadog Cloud Cost Management で可視化できるようになります。

インテグレーションで監視対象プロジェクトと異なるプロジェクトに課金情報をエクスポートする場合は、BigQuery データ転送サービス(BigQuery Data Transfer Service)プロジェクト間のサービスアカウントの承認を行いコストデータを収集できます。

メタデータ収集

Datadog-GoogleCloud-Integration-Metadata.png

各リソースの読み取り権限を用いてメタデータ(リソースの構成・タグ情報)取得し、Datadog 上の監視情報へのタグが付与されます。

Datadog Cloud Security Management を有効化し、デフォルトでも必要とされる権限の中でも主にCloud Asset APIへのアクセスを行うことで、Misconfiguration(CSPM), Identity Risk(CIEM) の機能を活用できます。

OCI integration のアーキテクチャ

OCI(Oracle Cloud Infrastructure) integration で収集できる情報はテナンシー単位です。

現状、複数テナンシーの監視情報を収集する方法は提供されていません。

Datadog-OracleCloud-Integration.png

メトリクス収集

Datadog-GoogleCloud-Integration-Metadata.png

Datadog が提供する Terraform スタックを OCI Resource Manager(ORM) で使用して、メトリクス転送スタックの作成します。メトリクスの転送は、OCI Metrics をデータソースとして Function App から VCN 内の Service Gateway, NAT Gateway を経由して送信します。

OCI integration はメトリクス転送を push 型で行い、一方でメタデータの収集は別途 API 経由で行います。

Datadog-OracleCloud-Integration-Metadata.png

メタデータ取得は他のクラウドインテグレーションと同様に、権限リソースであるを介して行われます。OCI は権限リソースにユーザーを利用する必要があるため、Datadog は専用の DatadogAuthUser を利用します。ユーザーはグループに所属しアクセス・ポリシーによって権限制御されるため、これらも Datadog が提供する Terraform を ORM を使用して、ポリシースタックを作成します。13

ログ収集

Datadog-OracleCloud-Integration-Logs.png

Datadog が公開している GitHub リポジトリ上から Python コードを使用して **Function App ** を作成し、データソースとして OCI LoggingObject Storage を対象とし、それらのログはタグ付け・ログのフィルター・圧縮・暗号化などを経て Datadog Logs intake API に転送されます。

前者はサービスコネクターハブで、後者は Object Eventによって Function App をトリガーします。

おわりに

本記事は『3大クラウドのDatadog Integrations アーキテクチャ』のアップデートとして執筆しました。

Datadog はアップデートが早く、クラウドインテグレーション機能も効率化・機能追加を繰り返し、カスタマイズ性も向上しています。2024年には4大クラウドの4つ目として記載した Oracle Cloud Infrastructure のメトリクス収集機能が追加され、4大クラウドすべてのマネージド監視ソリューションから Datadog に監視情報やリソース情報を連携できるようになりました。

また、それぞれのインテグレーションを実際に活用するためにはいくつかの考慮事項があり、こちらは各「Dive Deep」記事でまとめています。クラウドの監視ソリューションとして Datadog を最大限活用するためにも是非ご覧ください🐶

  1. この投稿は Datadog Advent Calendar 2022 8日目の記事として執筆された、『3大クラウドのDatadog Integrations アーキテクチャ』の最新版です。

  2. ここでの「Datadog アプリケーション」とは、Web ブラウザー上からアクセスできる datadoghq.com またはそのサブドメインで制御される SaaS 型のアプリケーションのことを指します。

  3. Datadog Log Management からのログのアーカイブや Datadog Monitor の通知にも利用されますが、本投稿では割愛します。

  4. Datadog Cloud Cost Management は最大 15 か月分の履歴データを自動的に取り込みます。

  5. AWS CloudWatch cross-account Observability によって監視アカウントに監視情報が集約されている場合でも、個々のアカウントでの設定が必要となります。

  6. 他にも Datadog API を呼び出し Datadog 上での設定を完了させる Lambda 関数(DatadogAPICall)やログキャッシュ用の S3 などさまざまなリソースが作成されますが、ここでは割愛します。

  7. 2024年には、一部サービスの Serverless 系のメトリクスが新たにサポートされました。(e.g. ElastiCach Serverless)

  8. ある程度の再起ループは Lambda 再帰ループ検出を使用した無限ループの防止によって自動的に防止されますが、Datadog へログを転送する場合は検出されないサービスの組み合わせとなる可能性もあるため、設定時にも注意が必要です。

  9. その他の Workload Secyrity(CWS), Vulnerability は Datadog Agent の導入か Agentless Scanning(AWS のみ)が必要となります。

  10. Azure Metrics Data plane API による効率性とパフォーマンス改善の変遷は『Azure Metrics Data plane API で何が変わったのか?』で解説しています。

  11. Azure Monitor のカスタムメトリックは現在プレビュー版であるため、Datadog での正式な取り込みのサポートはされていません。

  12. 複数のプロジェクトの監視情報を集約する、指標(メトリクス)スコープを利用したスコーピング プロジェクトの場合、外部の監視対象プロジェクトのメトリクスは収集できません。

  13. OCI の IAM は独特な概念を持っているため、詳しくは「IAMの概要」をご参照ください。

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?