マネージドサービス部 佐竹です。
久しぶりに AWS Cost Anomaly Detection (AWS コスト異常検出) の運用に関するブログを記載してみます。
はじめに
AWS Cost Anomaly Detection とは何か
AWS Cost Anomaly Detection (AWS コスト異常検出) とは AWS 利用料をモニタリングし、コストの急騰を検出するサービスです。コストアノマリーの発砲をトリガーとして、早期に「意図しない AWS 利用料の急増」へ対処を開始することが可能となることで、想定外の請求を抑制することが可能になります。
詳細については、過去私が記載した以下のエンジニアブログを参考頂ければ幸いです。
AWS Cost Anomaly Detection が GA (generally available) になりました
AWS Cost Anomaly Detection が AWS Chatbot に対応しました
AWS Cost Anomaly Detection で実際に検出された内容を紹介します
AWS Cost Anomaly Detection と AWS Budgets の違いを理解する
EBS が月初にコスト異常として検出される理由について
まず今回のブログは、先の第二弾ブログ「AWS Cost Anomaly Detection で実際に検出された内容を紹介します」で記載した内容に近いものです。今回も、「実際に検出されたアノマリー」を具体的に紹介するところからスタートします。
経緯
先日、弊社の環境でとあるコストアノマリーが検出されました。
Amazon Elastic Block Store (Amazon EBS) での検出です。以下の画面キャプチャは通知されたメール本文になります。
これを、AWS マネジメントコンソールの Cost Anomaly Detection からも確認してみます。
上画像の「Anomaly details」のページから、「View in Cost Explorer」もしくは「View root cause」を押下し、Cost Explorer の画面を表示します。
調査のために AWS Cost Explorer を確認する
表示された Cost Explorer の値を少し修正し、もう少し見やすくしたものが以下のグラフです。
これを見ると、該当のアカウントで Service = EC2-Other (≒EBS) の利用料が増えているように見えます*1。
ここで Group by Dimension を Usage type に変更します。この状態で、下部の「Cost and usage breakdown」を確認してみます。
8月31日と9月1日で比較すると、以下全ての項目で1日あたりの利用料が増加していることが確認できます。しかし、エンドユーザ様は「特に何も設定変更を行っていない」とのことでした。
- APN1-EBS:VolumeUsage.gp3
- APN1-EBS:VolumeP-IOPS.io2
- APN1-EBS:SnapshotUsage
- APN1-EBS:VolumeUsage.io2
- APN1-EBS:VolumeP-Throughput.gp3
- APN1-EBS:VolumeP-IOPS.gp3
つまり、「何もしていない」のにも関わらず「日次の EBS の利用料が増加」してしまったことで、コストアノマリーとして検出されていることがわかります。
何故 EBS の利用料が増加している(ように見える)のか
何故、今回のように EBS 関連の利用料が増加しているように見えてしまうのでしょうか?
結論としては EBS ボリュームや EBS スナップショットは「月額」でコストが算出されるサービスであるためです。
上記ドキュメントの通り、EBS ボリュームも EBS スナップショットも、それぞれ「1カ月あたり」の利用料で記載がされています。
これはつまり、月額 (Monthly) を日別 (Daily) の利用料に計算しなおすとき、「31日まである月」と「それ以外の月」では毎日の利用料が異なってしまうことを示しています。
2月は28日間もしくは29日間、そして 4月、6月、9月、11月は30日間になります。よって、月額利用料を日次の利用料に均すと「1日当たりの利用料が31日まである月と比べて増えてしまう」のです。
今回は「7月(31日間)」、「8月(31日間)」から「9月(30日間)」という Daily での利用料で EBS の利用料を見比べたため、月次ではコストが変わっていないのにも関わらず「日次ではコストが変わって見えてしまう」ことで、それを Cost Anomaly Detection がコスト異常として検出している状況です。
これは Cost Anomaly Detection が日次での利用料を比較している限り、これがアノマリーとして部分的に検出されてしまうのは仕方がないことと思われます。
12月から9月初旬までの EBS 利用料推移を見比べる
参考として「APN1-EBS:VolumeUsage.gp3」の利用料推移を Cost Explorer の Granularity = 日次(Daily)で確認したグラフを紹介します。
上画像の通りですが、2月、4月、6月、9月には EBS の利用料が増加したように見えています。また2月は最も日数が少ないため、最も Daily の利用料が高額に見えます。
これを月次(Monthly)で表示してみると、上画像の通り金額が一定なことがわかります。
Amazon S3 などの利用料でも同様の事象が発生する
Amazon S3 も月額利用料のサービスであることから、同様に2月、4月、6月、9月、11月の日次の利用料が増加しているように見えるサービスとなっています。
まとめ
今回のブログでは、AWS Cost Anomaly Detection (AWS コスト異常検出) の運用の観点から「EBS が月初にコスト異常として検出されてしまう理由とその背景」について記載しました。
このような「ある種の運用ノイズ」となってしまう検出結果については、本ブログのような運用知見による回避や、顧客への背景説明が重要です。
また同様の検出が必ず2月、4月、6月、9月、11月の月初に出るとは限らず、日々の業務の中でこれらのアノマリーが発生する場合には「本当のコストアノマリーの可能性が高い」としてエスカレーションされてしまうこともあるでしょう。
そのような場合に、本ブログに辿り着いた方が少しでも説明が楽なればと思い記載させて頂きました。
では、またお会いしましょう。
*1:EC2-Other には、EBS 以外にも NatGateway や DataTransfer が含まれる点に注意してください
佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ
マネージドサービス部所属。AWS資格全冠。2010年1月からAWSを利用してきています。2021-2022 AWS Ambassadors/2023-2024 Japan AWS Top Engineers/2020-2024 All Certifications Engineers。AWSのコスト削減、最適化を得意としています。