LoginSignup
41
24

More than 3 years have passed since last update.

DatadogでAWS利用料金の推移を可視化する

Last updated at Posted at 2019-05-03

背景

Excelにコピペするのは嫌でござる!LambdaもTerraformも書きとうない!Datadogならポチポチだけでできるはずだ!

準備が5つ必要です

ポチポチだけでイケた。AWSとDatadogすごい。神。

準備1: AWSでBudgetを作成する

AWS請求ダッシュボードにある「Budget」で、雑でも何でもいいので、「予算を作成」してください。もうあるなら、この準備は飛ばして大丈夫です。

作成が必要な理由は、Datadogは、Budget経由でBillingのデータを吸い出しているため、Budgetがとにかく存在してないと始まらないのです。

ちなみに予算を作ったところで、予算を超えると何も動かなくなるとか、予算の金額を毎月必ず請求されるとか、そんなことは一切ないです。AWSからの請求に対して、予算という枠組みで分析したり通知させるための仕組みです。

予算はこんな感じで作成しました。ちゃんと活用してる方からは石を投げられるんじゃなかろうか....

  • 予算タイプは「コスト予算」
    • 名前は「月別AWS予算」
    • 間隔は「月別」
    • 予算は、前月実績に+20%くらいの金額をテキトーに入れておきます
    • 定期予算
    • フィルタリングは無し。include all。
    • 非ブレンドコスト
    • 含められる関連コストは、すべてチェック
    • アラートもテキトーに組む

準備2: AWSでIAM権限を付与する

IAM権限 budgets:ViewBudget を、Datadogのロールに付与します。もう付与してあるなら、この準備は不要です。DatadogのAWSインテグレーションを、以下マニュアルの「All Permissions」で提示されるIAM権限で設定してれば含まれてますが、改めてご確認ください。

準備3: Billingの設定で「請求アラートを受け取る」にチェックして保存

これをチェックして保存すると、バージニア北部リージョンのCloudWatchに、Billingのメトリクスとして EstimatedChargesが作られて、Datadogで aws.billing.estimated_charges として、利用サービス毎の料金を取れるようになります。

スクリーンショット 2019-08-06 11.49.06.png

準備4: DatadogでAWS Billingインテグレーションを有効化する

Datadogがマニュアルを用意してくれてます。

有効化後、これを書いてる今も Broken ですが、AWSからデータを取れてるので気にしなくていいです。

スクリーンショット 2019-05-03 19.42.48.png

準備5: 一晩くらい待つ

請求関連のメトリクスは更新頻度が少なく、日に数回らしいです。ここまでの準備しても、Datadogでまとまった量のデータが最初に見えるようになるのは、一晩くらい経ってからです。焦らず待ちましょう。

Datadogで可視化する

これで可視化できます。AWSから吸い出してるメトリクスは4つですが、「by」で切り口にできる、何ていうんですかあれは、あれがあるので、めちゃめちゃ面倒くさい願望をぶつけなければ、大体なんとかなる気がします。

  • aws.billing.budget_limit
  • aws.billing.actual_spend
  • aws.billing.forecasted_spend
  • aws.billing.estimated_charges

利用料金の推移のグラフ

こんなグラフが作れます。積み上がってるのは費目で、EC2, RDS, DataTransfer,,,毎に出ます。メトリクスの性質として、月末締めで一旦ゼロになります。

IMG_0251.jpg

グラフのJSONはこのように。aws.billing.estimated_charges を servicename 毎にやるのがミソですね。ソートしてほしい。

{
  "viz": "timeseries",
  "requests": [
    {
      "q": "sum:aws.billing.budget_limit{*}",
      "type": "line",
      "style": {
        "palette": "dog_classic",
        "type": "dashed",
        "width": "normal"
      },
      "aggregator": "avg",
      "conditional_formats": []
    },
    {
      "q": "sum:aws.billing.actual_spend{*}",
      "type": "line",
      "style": {
        "palette": "dog_classic",
        "type": "dashed",
        "width": "normal"
      }
    },
    {
      "q": "sum:aws.billing.forecasted_spend{*}",
      "type": "line",
      "style": {
        "palette": "dog_classic",
        "type": "dashed",
        "width": "normal"
      }
    },
    {
      "q": "sum:aws.billing.estimated_charges{*} by {servicename}",
      "type": "area",
      "style": {
        "palette": "cool",
        "type": "solid",
        "width": "normal"
      }
    }
  ],
  "autoscale": true
}

利用料金 Top 10

aws.billing.estimated_charges を servicename 毎に、こちらは利用料金の多い順にソートされてます。注意として、ダッシュボードの表示期間が月をまたいでる場合、先月と今月の金額が混ざります。select rangeでイイ感じに調整して見てください。

IMG_0250.jpg

JSONはこのように。

{
  "viz": "toplist",
  "requests": [
    {
      "q": "top(sum:aws.billing.estimated_charges{*} by {servicename}, 10, 'mean', 'desc')",
      "type": null,
      "style": {
        "palette": "dog_classic",
        "type": "solid",
        "width": "normal"
      },
      "conditional_formats": []
    }
  ]
}

さらに凝った可視化をするには

AWS側の予算で分析軸を作れるのと、Datadog側のダッシュボードやグラフの仕組みで可視化できるので、物事に限度はありますが頑張れるのではないでしょうか。

Datadogで監視&通知する

ところでDatadogにメトリクスが来ているので、Datadogで監視&通知できます。AWS Budgetの仕組みでも監視と通知ができます。が、メトリクスの動きに対して、DatadogではAnomary Detectionなど凝った監視ができるので、活用するといい、はずだ!

41
24
2

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
41
24