こんにちは!クラウドインフラの規模が拡大するにつれて、毎月届くAWSやGCP、Azureの請求書を見るたびに「一体どこでこんなにコストが膨らんでいるんだ…」と冷や汗をかいた経験はありませんか?
「とりあえずリザーブドインスタンスを買っておこう」「オートスケーリングを設定したから大丈夫」――そんな時代は終わりました。現代のオブザーバビリティにおいて、「コスト」は可用性やレイテンシと並ぶ「重要なメトリクス(時系列データ)」の一つです。
今回は、Datadog Cloud Cost Management(CCM)を駆使して、マルチクラウドのコストを丸裸にし、エンジニア主導で無駄なリソースを完全に撲滅するための実践手法を、優しく丁寧に解説していきます。これをマスターすれば、経営陣からの「コスト削減」のプレッシャーに怯える必要はもうなくなりますよ。
—
1. なぜ「財務部門の請求書」ではなく「DatadogのCCM」なのか?
従来のクラウドコスト管理は、月末に財務部門から送られてくるざっくりとしたPDFやCSVがすべてでした。「今月はS3の転送料金が高いね」と言われても、どのマイクロサービスの、どのエンドポイントが原因なのか、開発者にはブラックボックスのままです。
Datadog Cloud Cost Management(CCM)が画期的なのは、「インフラの稼働メトリクス(CPU使用率、メモリ、ネットワーク)やコンテナのライフサイクル」と「コスト」を完全に結合させる点にあります。
- 「どのKubernetes Podが、実際にどれだけのドルを消費しているか」
- 「どの開発チームの環境(Staging / Production)が予算を圧迫しているか」
- 「アイドル状態(CPU使用率ほぼゼロ)で放置されている孤児リソースはどれか」
これらをリアルタイムで可視化し、メトリクス監視と同じダッシュボード上で一元管理できるのがCCMの真価です。
—
2. 基礎セットアップ:マルチクラウドのコストデータを接続する
まずは、AWS、GCP、AzureのコストデータをDatadogに集約するためのファーストステップを踏みましょう。ここでは最も代表的なAWSを例に、正確なコスト配分を行うための基礎セットアップを解説します。
ステップ①:AWS Cost and Usage Report (CUR) の有効化
Datadog CCMは、AWSが提供する詳細なコストレポート(CUR: Cost and Usage Report)を読み込むことで動作します。
1. AWSコンソールで Cost and Usage Reports を開きます。
2. 新しいレポートを作成し、以下の設定を行います。
- 粒度: Hourly(時間単位)―― ※ここが重要です!日単位では遅すぎます。
- 追加機能: Resource IDs(リソースIDを含める)―― ※これがないと個別のリソース特定ができません。
- 配信先: 専用のS3バケットを指定。
ステップ②:Datadogインテグレーションの有効化と権限付与
AWS側でCURの出力設定ができたら、Datadog上のAWSインテグレーション設定を行います。Terraformを使うと再現性高く安全に構築できます。
DatadogにAWSのコストデータを安全に読み込ませるためのIAMポリシー例
resource “aws_iam_policy” “datadog_ccm_policy” {
name = “DatadogCloudCostManagementPolicy”
description = “Allows Datadog to read CUR and CloudWatch metrics for cost optimization”
policy = jsonencode({
Version = “2012-10-17”
Statement = [
{
Effect = “Allow”
Action = [
“cur:DescribeReportDefinitions”,
“s3:GetBucketLocation”,
“s3:GetObject”,
“s3:ListBucket”,
“ce:GetCostAndUsage”,
“ce:GetDimensionValues”
]
Resource = “”
}
]
})
}
この設定を完了させると、Datadogの画面(Infrastructure > Cloud Cost Management)に、AWS、GCP、Azureのコストが統合されて流れ込み始めます。
—
3. 「HelloWorld」:コンテナ単位・タグ単位のコスト配分(アロケーション)
インフラ全体のコストが見えるようになっただけでは、まだ半分です。ここからが本番。「誰が、どの機能のためにそのコストを発生させているか」を特定する、粒度の細かいアロケーション(配分)を設定します。
特にKubernetes(EKS / GKE / AKS)環境では、1つの巨大なノード(EC2等)上で数十個の異なるマイクロサービスのPodが動いています。デフォルトのAWS請求書では「EC2代として一括計上」されてしまいますが、CCMを使えば「どのPodがノードのコストを何%消費したか」を正確に割り当てられます。
Datadog Agentを通じたコンテナコスト配分の有効化
Kubernetes上のDatadog Agentに対して、Kubernetes Cost Allocationを有効にする設定を入れます。Helmチャートの `values.yaml` に以下の数行を追加するだけです。
values.yaml の抜粋
datadog:
# Kubernetesのコスト算出機能を有効化
cost:
enabled: true
clusterAgent:
# クラウドプロバイダのメタデータとK8sリソースを紐付ける
confd:
cost.yaml: |
init_config:
instances:
- {};
タグ継承(Tag Propagation)の魔法
開発現場でよくある悩みが「タグ付け忘れ」です。開発者が `Environment:production` や `Team:checkout` などのタグを付け忘れたリソースは、コスト配分から漏れて「Unallocated(未配分)」という巨大なモンスターになってしまいます。
Datadog CCMでは、「親リソース(例:EKSのノードやネームスペース)のタグを、子リソース(PodやPersistent Volume)に自動継承させるルール」を定義できます。
DatadogのUI上の「Cloud Cost Management > Settings > Tag Policies」から、以下のようなポリシーを設定しましょう。
1. Namespaceベースの継承: Kubernetesの `namespace: payment-service` に属するすべてのPodに対し、自動的に `Team:payment` というコストセンタータグを付与する。
2. クラウドタグの同期: AWS側で付与したコスト配分タグ(Cost Allocation Tags)を、Datadog側が自動でパースしてKubernetesメトリクスと結合する。
これで、精度の高い「HelloWorld(最初の正確なコスト算出結果)」が画面に表示されます。どのチームが何ドル使っているかが一目でわかる瞬間は、エンジニアにとって感動的ですらありますよ。
—
4. 現場で震えるほど役立つ!コスト爆発を防ぐアラート設計とダッシュボード
可視化ができたら、次は「無駄なリソースの撲滅」と「予兆検知」です。コスト管理を月末の振り返りではなく、日々のモニタリングサイクルに組み込みましょう。
① アイドルリソース・孤児リソース検知アラート
「使われていないのに立ち上がりっぱなしのEBSボリューム」や「テストが終わったのに放置されたGPUインスタンス」は、お金をドブに捨てているようなものです。Datadogのモニター機能を使って、以下の条件でアラートを飛ばします。
- 監視対象: クラウドホスト・コンテナ
- 条件: CPU使用率が平均5%未満、かつネットワークI/Oがほぼゼロの状態が「48時間継続」した場合
- アクション: Slackの `#infra-cost-guard` チャンネルに通知し、該当リソースのIDと推定無駄コスト(例:`月額 $140の損失`)を添えて担当エンジニアにメンションする。
② 予算異常検知(Anomaly Detection)モニター
「昨日まで1日あたり50ドルだったAPIのコストが、なぜか急に200ドルに跳ね上がった」――こうした予期せぬコスト爆発(無限ループバグやDDoS、非効率なクエリなど)を機械学習で検知します。
Datadogのモニター作成画面で、コストメトリクス(例: `aws.cost.amortized`)を選択し、Anomaly(異常検知)関数を適用します。
過去のトレンドから外れた急激なコスト増加を検知するクエリのイメージ
anomalies(avg:aws.cost.amortized{service:rds,environment:production} by {resource_id}, ‘basic’, 2) >= 1
これにより、人間が気づく前に異常なコストの波形をキャッチし、重大な障害(金銭的ダメージ)を未然に防ぐことができます。
—
5. エンジニア主導でコストを文化にするために
いかがでしたでしょうか? Datadog Cloud Cost Managementを導入することは、単に「クラウド代を削る」というケチくさい話ではありません。
「自分たちが書いたコード、構築したアーキテクチャが、ビジネスにおいてどれだけのコスト(価値)を生み、あるいは消費しているか」をエンジニア自身が直感的に理解する――これこそが、本当の意味でのフルスタック・オブザーバビリティです。
今日からあなたのチームでも、ダッシュボードの片隅に「今月のチーム別クラウドコスト」を表示させてみてください。きっと、コードの書き方やリソースのサイジングに対する意識が、驚くほど劇的に変わるはずです。
さあ、無駄なリソースを撲滅して、よりクリエイティブな開発にリソースを投資していきましょう!