New RelicでAWSのコストをモニタリングする

awsnewrelic

Billingのメトリクスの可視化

Billing のメトリクスは CloudWatch にあるので、us-east-1 の全てのメトリクスを CloudWatch Metric Streams で送っていれば次のようなクエリで参照できる。

SELECT max(`aws.billing.EstimatedCharges`) - min(`aws.billing.EstimatedCharges`) as daily_usage
FROM Metric
WHERE aws.Namespace = 'AWS/Billing' AND `metricName` = 'aws.billing.EstimatedCharges' AND `aws.billing.ServiceName` IS NOT NULL
    FACET monthOf(`timestamp`), `aws.billing.ServiceName`
TIMESERIES 2 day SLIDE BY 1 day SINCE 4 week ago

入っている値が月の累積値なので Sliding window で一日前との差分を取ることで日のコストを出している。

AWS Billing monitoring integration

Billing はサービスごとの値なので、タグなどの粒度でより詳細に見るには Budget の値が欲しいところだが、CloudWatch にメトリクスがないので Metric Streams では送られない。 budgets:ViewBudget を付与し Billing にチェックを入れて Polling を行うと Budget のデータが取得され参照できるようになる。

AWS Cost Management でコストをモニタリングし最適化する - sambaiz-net

SELECT
  latest(100 * `provider.actualAmount` / `provider.limitAmount`) as 'UsageRate',
  latest(100 * `provider.forecastedAmount` / `provider.limitAmount`) as 'ForecastedRate' 
FROM FinanceSample 
WHERE provider='BillingBudget'
FACET `provider.budgetName`