AWS
Datadog
billing
budget

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


背景

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


準備が4つ必要です

ポチポチだけでイケた。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: DatadogでAWS Billingインテグレーションを有効化する

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

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

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


準備4: 一晩くらい待つ

請求関連のメトリクスは更新頻度が少なく、日に数回らしいです。ここまでの準備しても、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など凝った監視ができるので、活用するといい、はずだ!