クラウド コスト マネジメント

概要

クラウドコストマネジメントは、エンジニアリングチームとファイナンスチームに、インフラストラクチャーの変更がコストにどのような影響を与えるかを示すインサイトを提供します。これにより、傾向を把握し、組織全体に費用を配分し、非効率性を特定することができます。 Datadog は、クラウドのコストデータをインジェストし、クエリ可能なメトリクスに変換します。コストが上昇した場合、その変化と使用状況の指標を関連付け、根本原因を特定することができます。

セットアップ

AWS Cloud Cost Management を利用するには、Cost and Usage Report (CUR) にアクセスできる AWS アカウントを持ち、Datadog に AWS インテグレーションがインストールされている必要があります。Datadog で Cloud Cost Management をセットアップするには、Cost and Usage レポートを生成する必要があります。

前提条件: Cost and Usage Report を作成する

AWS の Cost and Usage Report の作成の説明に従い、Datadog Cloud Cost Management で使用するために以下のコンテンツオプションを選択します。

  • Include resource IDs (リソース ID を含む)
  • “Automatically refresh your Cost & Usage Report when charges are detected for previous months with closed bills.” (請求が締め切られた前月の料金が検出されると、コストと使用量レポートが自動的に更新されます。) のチェックボックスをオンにします。

以下の Delivery オプションを選択します。

  • 時間粒度: Hourly
  • レポートのバージョン管理: Create new report version (新しいレポートのバージョンを作成する)
  • 圧縮タイプ: GZIP または Parquet
  • フォーマット: text/csv または Parquet

AWS インテグレーションの構成

Setup & Configuration に移動し、ドロップダウンメニューから AWS 管理アカウントを選択し、Datadog がこのアカウントに関連するタグを表示できるようにします。同じような名前の管理アカウントが複数ある場合、選択したアカウントに関連するタグを表示し、必要な特定のアカウントを選択したことを確認します。

: Datadog では、関連するメンバーアカウントのコストを視覚化するために、AWS 管理アカウントからコストと使用量のレポートを送信することを推奨しています。AWS メンバーアカウントからコストと使用量レポートを送信する場合、管理アカウント設定で次のオプションが選択されていることを確認してください。

  • リンクされたアカウントへのアクセス
  • リンクされたアカウントの払い戻しおよびクレジット
  • リンクされたアカウントの割引

これにより、AWS Cost Explorer に対して定期的にコスト計算を行うことができ、完全なコスト精度を確保することができます。

Cost and Usage Report を探す

セットアップの前提条件のセクションで作成したレポートから移動してしまった場合は、AWS のドキュメントに従って Cost and Usage Report の詳細を見つけて表示します。

Datadog が Cost and Usage Report を検索できるようにするには、対応する詳細情報をフィールドに入力します。

  • Region: バケットがあるリージョンです。例: us-east-1
  • Bucket Name: CUR の保存先となる s3 バケット名です。
  • Report Path Prefix: フォルダ名です。AWS の詳細ページから Report path prefix を表示する場合、パスの最初のセクションになります。例えば、Report path prefixcur-report-dir/cost-report と表示されている場合、cur-report-dir と入力することになります。
  • Report Name: 前提条件のセクションでレポートを生成したときに入力した名前です。AWS の詳細ページから Report path prefix を表示する場合、パスの後半部分となります。例えば、Report path prefixcur-report-dir/cost-report と表示されている場合、cost-report と入力することになります。

Cost and Usage Report へのアクセス構成

以下の JSON を使用してポリシーを作成することで、Datadog が CUR とそれが格納されている s3 バケットにアクセスする権限を持つように AWS を構成します。

{
  "Version": "2012-10-17",
  "Statement": [
      {
          "Sid": "DDCloudCostReadBucket",
          "Effect": "Allow",
          "Action": [
              "s3:ListBucket"
          ],
          "Resource": "arn:aws:s3:::BUCKETNAME"
      },
      {
          "Sid": "DDCloudCostGetBill",
          "Effect": "Allow",
          "Action": [
              "s3:GetObject"
          ],
          "Resource": "arn:aws:s3:::BUCKETNAME/REPORT_PREFIX/REPORT_NAME/*"
      },
      {
          "Sid": "DDCloudCostCheckAccuracy",
          "Effect": "Allow",
          "Action": [
              "ce:Get*"
          ],
          "Resource": "*"
      },
      {
          "Sid": "DDCloudCostListCURs",
          "Action": [
              "cur:DescribeReportDefinitions"
          ],
          "Effect": "Allow",
          "Resource": "*"
      },
      {
          "Sid": "DDCloudCostListOrganizations",
          "Action": [
              "organizations:Describe*",
              "organizations:List*"
          ],
          "Effect": "Allow",
          "Resource": "*"
      }
  ]
}

ヒント: このポリシーのために作成した名前は、次のステップのためにメモしておいてください。

Datadog のインテグレーションロールにポリシーをアタッチする

Datadog のインテグレーションロールに新しい S3 ポリシーをアタッチします。

  1. AWS IAM コンソールで Roles に移動します。
  2. Datadog インテグレーションで使用されるロールを見つけます。デフォルトでは、 DatadogIntegrationRole という名前になっていますが、組織で名前を変更した場合は、名前が異なる場合があります。ロール名をクリックすると、ロールのサマリーページが表示されます。
  3. Attach policies をクリックします。
  4. 上記で作成した S3 バケットポリシーの名称を入力します。
  5. Attach policy をクリックします。

注: Datadog でデータが安定するまでに、セットアップ後最大 48~72 時間かかることがあります。

コストタイプ

インジェストしたデータは、以下のコストタイプで可視化することができます。

コストタイプ説明
aws.cost.amortized適用される割引率に基づくコストと、割引期間中の使用量に応じたプリペイドの配分 (発生主義)。
aws.cost.unblended使用時に請求される金額で表示されるコスト (現金主義)。
aws.cost.blended組織のメンバーアカウントで、ある利用形態に対して支払われた平均的な料金に基づくコスト。
aws.cost.ondemandAWS から提供されるリストレートに基づくコスト。

タグエンリッチメント

Datadog は取り込まれたコストデータにすぐに使えるタグを追加し、コストをさらに分解して割り当てることができるようにします。これらのタグは、Cost and Usage Report (CUR) に由来しています。

また、データのフィルタリングやグループ化には、以下のすぐに使えるタグが利用できます。

タグ説明
aws_product課金対象となる AWS サービス。
aws_product_family課金対象となる AWS サービスのカテゴリー (例: Compute、Storage など)。
aws_management_account_name項目に関連付けられた AWS 管理アカウント名。
aws_management_account_id項目に関連付けられた AWS 管理アカウント ID。
aws_member_account_name項目に関連付けられた AWS メンバーアカウント名。
aws_member_account_id項目に関連付けられた AWS メンバーアカウント ID。
aws_cost_typeこの項目で対象となる料金の種類 (例: 使用料、消費税など)。
aws_pricing_term予約、スポット、オンデマンドのいずれの利用形態か。
aws_reservation_arn項目が恩恵を受けたリザーブドインスタンスの ARN。
aws_savings_plan_arn項目が恩恵を受けたセービングプランの ARN。
aws_usage_type項目の使用量 (例: BoxUsage:i3.8xlarge)。
aws_operation項目に関連する演算子 (例: RunInstances)。
aws_region項目に関連するリージョン。
aws_availability_zone項目に関連するアベイラビリティゾーン。
aws_resource_id項目に関連するリソース ID。
aws_instance_type項目に関連するインスタンスタイプ。
aws_instance_family項目に関連するインスタンスファミリー (例: Storage optimized)。
is_aws_ec2_compute使用が EC2 コンピュートに関するものかどうか。
is_aws_ec2_compute_on_demand使用がオンデマンドであるかどうか。
is_aws_ec2_compute_reservation使用がリザーブドインスタンスと関連しているかどうか。
is_aws_ec2_capacity_reservation使用が容量予約と関連しているかどうか。
is_aws_ec2_spot_instance使用がスポットインスタンスと関連しているかどうか。
is_aws_ec2_savings_plan使用がセービングプランと関連しているかどうか。

Billing conductor

Billing conductor は、請求レートのカスタマイズ、クレジットや手数料の分配、諸経費の分担など、お客様のご判断で請求書を簡素化することができます。また、CUR に含めるアカウントを選択することもできます。

Billing conductor CUR を作成するには、AWS Cost and Usage Reports ユーザーガイドに従ってください。CUR が Datadog の要件を満たしていることを確認します。 Billing conductor CUR を作成したら、上記のクラウドコストマネジメントの説明に従って、Datadog で設定します。

Datadog で Azure Cloud Cost Management を使用するには、Datadog Azure インテグレーションを設定し、amortizedactual のエクスポートをセットアップする必要があります。さらに、Datadog はコンテナからエクスポートを読み取る権限が必要です。

:

  • Datadog の US3 サイトを使用している場合、Azure ポータルから推奨される Datadog リソース方法を使用して Datadog Azure Native インテグレーションをセットアップしているかと思います。クラウドコストマネジメントに対応するためには、App Registration の作成が必要です。
  • Microsoft Customer Agreement のエクスポートは、サブスクリプションレベルで構成する必要があります。Enterprise プランの場合は、すべてのサブスクリプションにオンボードするように請求アカウントを構成できます。
  • 従量課金制のアカウントには対応していません。

コストエクスポートの生成

  1. Azure ポータルの Cost Management + Billing の下にある Exports に移動します。
  2. エクスポートのスコープを選択します。注: スコープは billing accountsubscription または resource group でなければなりません。
  3. スコープを選択したら、Add をクリックします。
Azure ポータルで、ナビゲーションのエクスポートオプションとエクスポートスコープをハイライト表示
  1. 次のエクスポートの詳細を選択します。
    • Metric: Actual Cost (usage and purchases)
    • Export type: Daily export of month-to-date costs
    • File Partitioning: On
Metric: Actual、Export type: Daily、File Partitioning: On のエクスポートの詳細
  1. エクスポートのためのストレージアカウント、コンテナ、およびディレクトリを選択します。注: 請求エクスポートは、任意のサブスクリプションに保存できます。複数のサブスクリプションのエクスポートを作成する場合、Datadog は同じストレージアカウントに保存することを推奨しています。エクスポート名は一意でなければなりません。
  2. Create を選択します。

メトリクス Amortized Cost (usage and purchases) について、ステップ 1~6 を繰り返します。Datadog は、両方のエクスポートに同じストレージコンテナを使用することを推奨します。より速く処理するために、Run Now をクリックして最初のエクスポートを手動で生成します。

エクスポートサイドパネルの Run Now ボタンをクリックし、エクスポートを生成します

Datadog がエクスポートにアクセスできるようにする

  1. Exports タブで、エクスポートの Storage Account をクリックし、移動します。
  2. Containers タブをクリックします。
  3. 請求書の入っているストレージコンテナを選びます。
  4. Access Control (IAM) タブを選択し、Add をクリックします。
  5. Add role assignment を選択します。
  6. Storage Blob Data Reader を選択し、Next をクリックします。
  7. これらの権限を、Datadog と接続した App Registration のいずれかに割り当てます。
    • Select members をクリックし、App Registration の名前を選んで、Select をクリックします。
    • review + assign を選択します。

エクスポートが別のコンテナに入っている場合は、他のコンテナについて手順 1〜7 を繰り返します。

コストマネジメントリーダーへのアクセス構成

注: スコープが Billing Account の場合、このアクセスは構成する必要はありません。

  1. サブスクリプションに移動し、サブスクリプションの名前をクリックします。
  2. Access Control (IAM) タブを選択します。
  3. Add をクリックし、次に Add role assignment をクリックします。
  4. Cost Management Reader を選択し、Next をクリックします。
  5. これらの権限をアプリ登録に割り当てます。

これにより、Microsoft Cost Management に対して定期的にコスト計算を行うことができ、完全なコスト精度を確保することができます。

コストタイプ

インジェストしたデータは、以下のコストタイプで視覚化することができます。

コストタイプ説明
azure.cost.amortized適用される割引率に基づくコストと、割引期間中の使用量に応じたプリペイドの配分 (発生主義)。
azure.cost.actualコストは、使用時に請求される金額で表示されます (現金主義)。実際のコストには、プライベート割引、リザーブドインスタンスやセービングプランの割引が別の料金タイプとして含まれています。

タグパイプライン

タグパイプラインはベータ版の機能です。

タグパイプラインを使用してタグルールを作成し、クラウド請求書に記載されていないタグや不正確なタグを修正したり、ビジネスロジックに沿った新しい推論タグを作成したりすることができます。

ルールタイプ

ルールは最大 100 個まで作成可能です。

2 種類のルールがサポートされています。Create new tag (*新しいタグを作成する) と Alias existing tag keys (既存のタグキーを別名にする) です。ルールセットを活用することで、ルールを整理することができます。ルールセットは、ルールのフォルダーとして機能します。ルールは、実行順序を決定的にするために、(上から下へ) 順番に実行されます。ルールとルールセットを整理することで、実行順序をビジネスロジックと一致させることができます。

Create new tag - これにより、既存のタグの存在に基づいて、新しいタグ (キー+値) を作成することができます。例えば、チーム A、B、C に所属し、指定されたアプリケーションを実行するすべてのリソースに、新しい cost-center:webstore タグを付けるルールを作成することができます。

Alias existing tag keys - これにより、既存のタグの値を使用して、より標準化されたタグキーにマッピングすることができます。例えば、組織全体で application というタグキーを使用するように標準化したいが、いくつかのチームが appweb-appapps のようなタグのバリエーションを持っている場合、appsapplication に別名で使用することができます。各エイリアスタグルールでは、最大で 25 個のタグキーを新しいタグにエイリアスすることができます。

ルールは各リソースに対して、最初に一致するものが見つかると実行を停止します。例えば、リソースが既に web-app タグを持っている場合、このルールは appsservice タグを識別しようとしません。

ダッシュボードに表示されるクラウドコスト

インフラストラクチャーの支出を、関連する使用量メトリクスと一緒に視覚化することで、潜在的な非効率性と節約の機会を発見することができます。Datadog ダッシュボードのウィジェットにクラウドコストを追加するには、Cloud Cost データソースを選択します。

ダッシュボードウィジェット作成時にデータソースとして利用できるクラウドコスト

その他の参考資料