概要
Datadog で Google Cloud Cost Management を使用するには、以下の手順に従います。
- Google Cloud Platform インテグレーションを構成する
- 必要なアクセス許可 (Google サービス API、エクスポートプロジェクトアクセス、BigQuery データセットアクセス) を持つ詳細使用量コストエクスポートを設定する
- 必要なアクセス許可 (バケットアクセス) を持つ Google Cloud Storage バケットを作成または選択する
セットアップ
API、Terraform、または以下の手順に従って Datadog で直接セットアップできます。
セットアップと構成に移動し、Google Cloud Platform アカウントを追加し、[Google Cloud Platform インテグレーション]を構成する手順に従います。
Datadog Google Cloud Platform インテグレーションでは、このサービスアカウントがアクセスできるすべてのプロジェクトの Cloud Cost を自動的にモニターできます。
これらのプロジェクトのインフラストラクチャーモニタリングホストを制限するには、ホストにタグを適用します。次に、インテグレーションページの Limit Metric Collection Filters セクションで、タグをモニタリングに含めるか除外するかを定義します。
詳細使用量コストエクスポートを有効にする
詳細使用量コストデータには、標準使用量コストデータに含まれるすべての情報に加えて、リソースレベルの詳細なコストデータを提供する追加フィールドが含まれます。
- Google Cloud コンソールの Billing の下にある請求エクスポートに移動します。
- 詳細使用量コストエクスポートを有効にします (プロジェクトと BigQuery データセットを選択または作成)。
- エクスポートが構成された請求アカウントの Billing Account ID を文書化し、エクスポート Project ID と Dataset Name も文書化します。
新しく作成された BigQuery 請求エクスポートデータセットには、最新の 2 か月分のデータのみが含まれます。このデータが BigQuery にバックフィルされるまでには 1 ~ 2 日かかる場合があります。
Google サービス API を有効にする
以下のアクセス許可により、Datadog はスケジュールされた BigQuery クエリを使用して請求エクスポートにアクセスし、ストレージバケットに転送することができます。
構成の詳細を定義する
構成のために以下の詳細を入力します。
GCP ストレージバケット: ストレージバケットを作成するには Yes を選択し、既存のバケットを使用するには No を選択します。
注: 既存のバケットを使用する場合、バケットが BigQuery エクスポートデータセットと同じ場所にあることを確認します。
バケット名: 新しいまたは既存の GCP ストレージバケットの名前。
リージョン: バケットの GCP リージョン。例: northamerica-northeast1。
請求アカウント ID: 使用量コストエクスポートがコストを報告する請求アカウントの ID。
エクスポートプロジェクト名および ID: エクスポートプロジェクトの名前と ID。
エクスポートデータセット名および ID: エクスポートデータセットの名前と ID。
コストエクスポートを作成し、Google サービス API を有効にする
上記の詳細使用量コストエクスポートを有効にするおよび Google Service API を有効にするステップを完了し、CCM に戻ります。
CCM Terraform セットアップ UI で、Apply Terraform Configuration ステップの指示に従ってください。CCM に戻ってアカウント作成を確認する前に、terraform plan または terraform apply を実行中に表示される問題を解決します。
エクスポートデータセットプロジェクトリソースにサービスアカウントをプリンシパルとして追加する:
- Google Cloud コンソールの IAM ページに移動し、エクスポートデータセットプロジェクトを選択します。
- サービスアカウントをプリンシパルとして選択します。
- ドロップダウンリストから次の権限を持つロールを選択します。
bigquery.jobs.createbigquery.transfers.getbigquery.transfers.update
注: これはカスタムロールである可能性があります。または、既存の Google Cloud ロール roles/bigquery.admin を使用できます。
エクスポート BigQuery データセットリソースにサービスアカウントをプリンシパルとして追加する:
- BigQuery ページのエクスプローラーペインで、プロジェクトを展開してエクスポート BigQuery データセットを選択します。
- Sharing > Permissions の順にクリックし、その後 add principal をクリックします。
- 新しいプリンシパルフィールドにサービスアカウントを入力します。
- ロールリストの選択を使用して、次の権限を持つロールを割り当てます。
bigquery.datasets.getbigquery.tables.createbigquery.tables.deletebigquery.tables.exportbigquery.tables.getbigquery.tables.getDatabigquery.tables.listbigquery.tables.updatebigquery.tables.updateData
注: これはカスタムロールである可能性があります。または、既存の Google Cloud ロール roles/bigquery.dataEditor を使用できます。
GCS バケットリソースにサービスアカウントをプリンシパルとして追加する:
- Google Cloud コンソールの Cloud Storage Buckets ページに移動し、バケットを選択します。
- 権限タブを選択し、grant access ボタンをクリックします。
- 新しいプリンシパルフィールドにサービスアカウントを入力します。
- 次の権限を持つロールを割り当てます。
storage.buckets.getstorage.objects.createstorage.objects.deletestorage.objects.getstorage.objects.list
注: これはカスタムロールである可能性があります。または、既存の Google Cloud ロール roles/storage.legacyObjectReader および roles/storage.legacyBucketWriter を使用できます。
Google Cloud Storage バケットを作成または選択する
Cloud Cost Management は、詳細な使用コストの BigQuery データセットから抽出されたデータを受け取るために GCP ストレージバケットを使用します (datadog_cloud_cost_detailed_usage_export のプレフィックス付き)。新しいバケットを作成するか、既存のものを使用できます。
注: バケットは BigQuery エクスポートデータセットと共に配置されている必要があります。
統合されたサービスアカウントが請求エクスポートデータセットとは異なる Google Cloud Platform プロジェクトに存在する場合、クロスプロジェクトサービスアカウント認証を付与する必要があります。
公式ドキュメントに従い、以下の値を使用してサービスエージェントの作成をトリガーします。
ENDPOINT: bigquerydatatransfer.googleapis.com
RESOURCE_TYPE: project
RESOURCE_ID: エクスポートデータセットプロジェクト
これにより、service-<billing project number>@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com のような新しいサービスエージェントが作成されます。
トリガーによって作成された BigQuery データ転送サービスアカウントロールをサービスアカウントのプリンシパルとして追加します
それに roles/iam.serviceAccountTokenCreator ロールを割り当てます。
セットアップと構成に示された手順に引き続き従います。
注: Datadog でデータが安定するまでに、セットアップ後 48~72 時間かかることがあります。
履歴データの取得
新しく作成された BigQuery 請求エクスポートデータセットには、最新の 2 か月分のデータのみが含まれます。このデータが BigQuery にバックフィルされるまでには 1 ~ 2 日かかる場合があります。Datadog は、BigQuery テーブルに表示されたら最大 15 か月分の利用可能な履歴コストデータを自動的に取り込みます。
Google Cloud は、BigQuery エクスポートが最初に作成される際に自動的に含まれる 2 か月を超える追加の履歴データをバックフィルするプロセスを提供していません。
コストタイプ
インジェストしたデータは、以下のコストタイプで可視化することができます。
| コストタイプ | 説明 |
|---|
gcp.cost.amortized | 期間中、使用時に割り当てられたリソースの総コスト。コストには、プロモーションクレジットやコミットされた使用量割引クレジットが含まれます。 |
gcp.cost.amortized.shared.resources.allocated | Google Cloud Platform の減価償却コストすべてと、コンテナワークロードのための追加の内訳とインサイト。コンテナコスト割り当てが必要です。 |
gcp.cost.ondemand | パブリックおよびプライベートの割引が適用される前の、リソースの総パブリックオンデマンドコスト。 |
Datadog は、複数のソースからのタグで Google Cloud コストデータを自動的に強化します。コストデータにタグがどのように適用されるかの包括的な概要については、タグを参照してください。
以下のすぐに使えるタグは、詳細使用量コストレポートから派生しており、コストデータの発見と理解を容易にします。
| タグ名 | タグの説明 |
|---|
google_product | 請求されている Google サービス。 |
google_cost_type | この項目でカバーされる課金の種類 (例: 通常、税金、調整、または丸め誤差)。 |
google_usage_type | 項目の使用量の詳細 (例: Standard Storage US)。 |
google_location | マルチリージョン、国、リージョン、またはゾーンのレベルで項目に関連する場所。 |
google_region | 項目に関連するリージョン。 |
google_zone | 項目に関連する Availability Zone。 |
google_pricing_usage_unit | 使用量コストを計算するために使用される料金単位 (例: ジビバイト、テビバイト、または年)。 |
google_is_unused_reservation | 使用が予約されていたものの使用されなかったかどうか。 |
service_description | Google Cloud サービス (例: Compute Engine または BigQuery)。 |
project_id | Cloud Billing データを生成した Google Cloud プロジェクトの ID。 |
project_name | Cloud Billing データを生成した Google Cloud プロジェクトの名前。 |
cost_type | この行項目が表すコストの種類: regular、tax、adjustment、または rounding error。 |
sku_description | リソースの使用量の詳細を説明する、使用されたリソースタイプの説明。 |
resource_name | お客様がリソースに追加する名前。これはすべてのリソースに該当するとは限りません。 |
global_resource_name | Google Cloud によって生成されたグローバルに一意なリソース識別子。 |
コストと監視可能性の相関
監視可能性データの文脈でコストを確認することは、インフラストラクチャーの変更がコストにどのように影響するかを理解し、コストが変動する理由を特定し、コストとパフォーマンスの両方のインフラストラクチャーを最適化するために重要です。Datadog は、監視可能性とコストメトリクスの相関を簡素化するため、主要な Google 製品のコストデータにおけるリソース識別タグを更新します。
例えば、各 Cloud SQL データベースのコストと使用状況を表示するには、gcp.cost.amortized、gcp.cloudsql.database.cpu.utilization、および gcp.cloudsql.database.memory.utilization (または他の Cloud SQL メトリック) を使ってテーブルを作成し、database_id でグループ化できます。または、Cloud Function の使用状況とコストを並べて表示するには、gcp.cloudfunctions.function.execution_count および gcp.cost.amortized を function_name でグループ化してグラフ化できます。
以下のすぐに使えるタグが利用可能です。
| Google 製品 | タグ |
|---|
| Compute Engine | instance_id, instance-type |
| Cloud Functions | function_name |
| Cloud Run | job_name, service_name |
| Cloud SQL | database_id |
| Cloud Spanner | instance_id |
| App Engine | module_id |
| BigQuery | project_id, dataset_id |
| Kubernetes Engine | cluster_name |
コンテナ割り当て
コンテナ割り当てメトリクスには、Google Cloud Platform メトリクスと同じコストがすべて含まれていますが、コンテナワークロードのための追加の内訳とインサイトも含まれています。詳細はコンテナコスト割り当てを参照してください。
参考資料