背景
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 として、利用サービス毎の料金を取れるようになります。
準備4: DatadogでAWS Billingインテグレーションを有効化する
Datadogがマニュアルを用意してくれてます。
有効化後、これを書いてる今も Broken ですが、AWSからデータを取れてるので気にしなくていいです。
準備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,,,毎に出ます。メトリクスの性質として、月末締めで一旦ゼロになります。
グラフの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でイイ感じに調整して見てください。
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など凝った監視ができるので、活用するといい、はずだ!