AWS Cost Anomaly Detection で実際に検出された内容を紹介します

記事タイトルとURLをコピーする

カスタマーサクセス部 佐竹です。
本日は AWS Cost Anomaly Detection ブログ三連続の第二弾として、社内検証環境において Cost Anomaly Detection で実際に検出された内容をご紹介します。

はじめに

AWS Cost Anomaly Detection については以下のブログでご紹介しておりますため、AWS Cost Anomaly Detection について詳しく知りたい方は以下のブログをご覧ください。

blog.serverworks.co.jp

第一弾のブログ

参考までに、前回のブログは以下になります。

blog.serverworks.co.jp

検出された内容の紹介

本ブログの動機ですが、AWS Cost Anomaly Detection で実際に検出された内容を紹介しているブログが世の中になさそうということで今回記載してみました。

f:id:swx-satake:20220318105907p:plain

弊社の社内環境マネジメントアカウントでは「108」の検出がありましたので、こちらからご紹介します。

過去の履歴すべては閲覧できない

AWS Cost Anomaly Detection では過去90日分の履歴が閲覧可能です。残念ながら履歴を S3 に自動保存するような機能が提供されていないため、過去の履歴全てを追うことはできません。

Alert subscription の閾値を $0.01 など非常に小さい値に設定していれば、全てが通知&連携されるので Slack などに疑似的に保存できます。ただし、個人的には大きな利用料をすぐに検出して対処することが目的ですので、そのような運用ができれば機能としては十分だと感じています。

といっても履歴の保存は便利ですので、今後は過去の履歴全てが保存できる機能が出てくるかもしれないですね。

過去90日分の検出を利用料の高い順にご紹介

全てだと多いため、50 の検出をリストでご紹介します。なお、アカウントIDは削除しています。またデフォルトで表示される Service は一部の機能で不適切な値が出るため、デフォルトで表示されていない Usage type を表示して閲覧されるほうが良いでしょう。Severity は 50 のうち 49 が Low であったため一覧から除外しています(唯一の High は APN1-inferenceminutes でした)。

Detection date Duration Service Usage type Total cost impact
2022/2/10 2 days Amazon Elastic Compute Cloud - Compute APN1-BoxUsage:r5.4xlarge $478.22
2022/2/20 9 days Amazon OpenSearch Service APN1-ESInstance:r6g.large $478.00
2022/2/20 3 days Amazon Elastic Block Store APN1-NatGateway-Bytes $256.61
2022/1/21 3 days Amazon Relational Database Service APN1-InstanceUsage:db.r6g.large $242.84
2022/2/24 3 days AWS Network Firewall APN1-Endpoint-Hour $180.34
2021/12/23 2 days Amazon Elastic Block Store APN1-EBS:VolumeP-IOPS.io2 $158.57
2022/2/22 1 day Amazon Elastic Block Store APN1-NatGateway-Hours $97.53
2022/2/22 5 days AWS Config APN1-ConfigurationItemRecorded $90.55
2022/2/19 3 days AWS Lambda APN1-Lambda-Provisioned-Concurrency $83.14
2022/3/6 4 days Amazon FSx APN1-Storage.MAZ:SSD $74.41
2022/2/14 4 days AWS Lambda APN1-Lambda-Provisioned-Concurrency $63.60
2021/12/20 4 days Amazon Elastic Container Service APN1-Fargate-vCPU-Hours:perCPU $61.57
2021/12/20 1 day Amazon Elastic Compute Cloud - Compute APN3-BoxUsage:m5.4xlarge $61.34
2022/2/20 4 days Amazon DocumentDB (with MongoDB compatibility) APN1-InstanceUsage:db.r6g.large $61.13
2022/3/5 2 days AWS Storage Gateway APN3-Gateway-Hrs $44.18
2022/2/22 2 days Amazon Redshift APN1-Node:ra3.xlplus $41.10
2022/2/21 1 day AWS Lambda APN1-Lambda-Provisioned-Concurrency $37.61
2022/1/28 2 days Amazon Elastic Container Service APN1-Fargate-vCPU-Hours:perCPU $32.26
2022/1/3 2 days Amazon Textract USE1-SyncFormsPagesProcessed $31.54
2022/2/22 3 days Amazon Simple Storage Service APN1-DataTransfer-Out-Bytes $29.38
2021/12/20 1 day Amazon SageMaker USE1-Canvas:CreateModelRequest-Tier0 $29.28
2022/3/13 5 days Amazon GuardDuty APN1-PaidEventsAnalyzed $26.54
2022/3/13 5 days Amazon QuickSight QS-User-Enterprise-Month $22.32
2021/12/20 8 days Amazon Elastic Container Service for Kubernetes APN1-AmazonEKS-Hours:perCluster $21.88
2022/2/2 1 day Amazon Elastic Container Service DataTransfer-Regional-Bytes $19.92
2022/2/10 1 day Amazon Elastic Container Service APN1-Fargate-GB-Hours $18.99
2022/3/15 2 days Amazon Elastic Load Balancing APN1-LoadBalancerUsage $17.46
2022/1/31 1 day Amazon Elastic Container Service APN1-Fargate-vCPU-Hours:perCPU $16.78
2022/2/10 7 days AWS Security Hub APN1-PaidComplianceCheck $16.09
2022/2/15 1 day AWS Config APN1-ConfigurationItemRecorded $14.97
2022/2/22 1 day Amazon Rekognition APN1-inferenceminutes $14.45
2022/1/28 1 day AWS Config APN1-ConfigurationItemRecorded $13.87
2022/2/11 1 day AWS Glue APN1-ETL-DPU-Hour $13.38
2022/3/10 1 day Amazon AppStream APN1-Win-User $12.12
2022/2/5 1 day Amazon Textract USE1-SyncFormsPagesProcessed $12.01
2022/1/28 2 days Contact Center Telecommunications (service sold by AMCS, LLC) APN1-JP-outbound-mins $10.67
2022/2/25 1 day Contact Center Telecommunications (service sold by AMCS, LLC) APN1-JP-outbound-mins $10.28
2022/2/18 1 day AWS Glue APN1-ETL-DPU-Hour $9.79
2022/2/16 1 day CodeGuru APN1-RepositorySizeLowPriceTier $9.70
2022/1/24 1 day CodeGuru APN1-RepositorySizeLowPriceTier $9.70
2022/2/27 1 day Amazon AppStream APN1-Win-User $9.28
2022/2/17 2 days Amazon QuickSight QS-User-Enterprise-Month $7.85
2022/1/3 3 days Amazon Neptune APN1-InstanceUsage:db.t3.medium $7.48
2022/2/18 1 day Contact Center Telecommunications (service sold by AMCS, LLC) APN1-JP-outbound-mins $7.41
2022/1/15 3 days Amazon Neptune APN1-InstanceUsage:db.t3.medium $6.78
2022/2/10 1 day Amazon OpenSearch Service - $5.88
2022/1/20 2 days Amazon Chime USE1-amazonchime-meetings $5.82
2022/1/6 1 day Contact Center Telecommunications (service sold by AMCS, LLC) APN1-JP-outbound-mins $5.71
2022/2/1 1 day AWS Systems Manager USE1-IM-ResponsePlan-Months-Tier1 $5.65
2022/1/1 1 day AWS Systems Manager USE1-IM-ResponsePlan-Months-Tier1 $4.98

補足ですが、弊社の社内環境の閾値は「$70」のため、上記リストのうち実際に通知が来たものは10個になります。

通知された10個の検出の詳細を確認する

検出結果を Cost Explorer のグラフと共に確認していきます。

1. APN1-BoxUsage:r5.4xlarge $478.22

f:id:swx-satake:20220318112932p:plain

r5.4xlarge という巨大なインスタンスがまとめて20台構築されたために検出されました。

本構築は社内検証で必要な利用であり想定されていたものでしたが、突発的な利用と判断されて検出されています。これが意図していないものであれば大変な事態ではあったので、しっかりと検出されたことを嬉しく思います。

f:id:swx-satake:20220318113455p:plain

なお、本検出は異常ではあるのですが利用方法として問題ではないため、Not an issue としてマーク済となります。

Submit assessment

参考までに、Assessment へのフィードバックは学習モデルの成長のためにも積極的にされるほうが良いでしょう。フィードバック可能な選択肢は3つあります。

  • Accurate anomaly - Yes, this was an accurate anomaly.
    • 検出は正しく、現在のモデルに問題がないことをフィードバックします
  • False positive - No, this was not an anomaly.
    • 検出は誤りであり、現在のモデルに改良の余地があることをフィードバックします
  • Not an issue - Yes, this was an anomaly, but it was expected.
    • 検出は正しいものの、想定された利用であることをフィードバックします

2. APN1-ESInstance:r6g.large $478.00

f:id:swx-satake:20220318114549p:plain

9 days とあるように、9日間突出した利用料が発生したために検出されています。

この検出も1つ目と同様に検証に必要なもの(同一アカウントでの検出)であったため Not an issue としました。

3. APN1-NatGateway-Bytes $256.61

f:id:swx-satake:20220318115138p:plain

Nat Gateway の意図しない利用料の増加が起きました。これは意図していないもののため Accurate anomaly とマークしました。

これの原因は Fargate におけるヘルスチェック無限ループでした。どうしてそうなったのかは以下のブログに詳細がまとまっておりますので、気になる方は合わせてご覧ください。

blog.serverworks.co.jp

なお、NAT Gateway の利用料は、Cost Anomaly Detection では何故か「Amazon Elastic Block Store」の Service とされてしまいます。これは Cost Explorer の項目「EC2-Other」が代表して EBS と解釈されているためと想像しているのですが、ミスマッチなのでいつも混乱します。

4. APN1-InstanceUsage:db.r6g.large $242.84

f:id:swx-satake:20220318115721p:plain

RDS で db.r6g.large が構築されたために Anomaly として検出されています。Detection では「$242.84」&「3 Days」とあるのですが、Cost Explorer で確認できた実際の利用料は $5 以下であり、15時間程度の検証となっていました。

そのため、本検出は False positive としてマークしています。

なお、実際の利用料と検出結果に乖離があるのは Cost Anomaly Detection が実際の利用料に基づく「将来の利用料予測値」を利用するためです。このため、実際の利用料と乖離が生まれることになります。

5. APN1-Endpoint-Hour $180.34

f:id:swx-satake:20220318120156p:plain

この検出においてはサービスも合わせて確認する必要があります。AWS Network Firewall において、エンドポイントの利用料が急増したために検出されています。

Network Firewall Endpoint の利用料は $0.395/hr のため、1日あたり「$73.56」の利用料になるには7~8個のエンドポイントが作成されていることがわかります。

これは Accurate anomaly としてマークしました。

f:id:swx-satake:20220318120700p:plain

なお、2月1日から3月18日までの分析結果をみるに、現在は利用が終了していました。検証が終わったらしっかりとリソースを削除してもらえていることがわかります。

6. APN1-EBS:VolumeP-IOPS.io2 $158.57

f:id:swx-satake:20220318124840p:plain

高額な EBS のオプションである Provisioned IOPS が有効化された io2 のボリュームタイプが検出されています。2日間程度で利用料は $0 に戻っているため、検証用途であったとわかります。そのため Accurate anomaly としてマークしました。

以前にも記載した通りですが、Cost Explorer の利用料の反映には 48 時間程度の遅延がありますため、Cost Anomaly Detection も48時間程度遅延します。

そのため、今回ように2日間程度で $0 に戻るものが検出された場合に、その AWS アカウントの責任者に「突発的な利用料があると検出するコスト異常検出サービスで検出がありました」と通知しても「既に削除済です」と返されることが多い状況です。ただ、同時に「高額な利用料が発生していることに気付いていない利用者」もいますため、この活動を続けることで利用者のコスト意識を高められていると感じています。

7. APN1-NatGateway-Hours $97.53

f:id:swx-satake:20220318131201p:plain

2月22日に検出されており、赤枠の部分が突発的な利用料の増加と判定されています。これも Accurate anomaly としてマークしました。

このアカウントは様々なメンバーが利用しており、全体的に利用料が高くなってしまっているため現在コストの棚卸を行っているアカウントとなります。

8. APN1-ConfigurationItemRecorded $90.55

f:id:swx-satake:20220318132123p:plain

この検出は「3. APN1-NatGateway-Bytes $256.61」で紹介したものと同アカウントで、同様の理由(無限ループ)にて発生しました。Cost Explorer を確認すると、同じ日に突発的な利用料の増加が発生していることを確認できます。

AWS Config は、以下の通り Config に記録された1つのアイテムごとに利用料が発生しますが、本来はここまで利用料が増加することはありません。

AWS リージョンごとに、AWS アカウントに記録された設定項目あたり 0.003USD をお支払いいただきます。

https://aws.amazon.com/jp/config/pricing/

無限ループによって意図せず大量の Config アイテムが作成されたことがこれからもわかります。これも Accurate anomaly としてマークしました。

9. APN1-Lambda-Provisioned-Concurrency $83.14

f:id:swx-satake:20220318133835p:plain

AWS Lambda の Provisioned Concurrency は、通例コールドスタンバイである Lambda をホットスタンバイ(Hyper-ready)状態で待機させる機能です。

これを利用することで Lambda をより高速なレスポンスで利用が可能となります。ただし、Provisioned Concurrency はそれを有効化している間に1秒単位で費用が発生することと、それに加えて実際に Lambda Functions が実行されている function execution duration に対しても費用が発生します。

現在は利用料が $0 となっているため、検証用途であったことがわかります。これは Not an issue にするか迷いましたが、利用者に確認が取れなかったため Accurate anomaly としてマークしました。

10. APN1-Storage.MAZ:SSD $74.41

f:id:swx-satake:20220318135325p:plain

Amazon FSx にて Multi-AZ 構成で SSD ストレージを構築したことで、突発的な利用料の増加として検出がされています。

現在は利用料が $0 となっているため、検証用途であったことがわかります。これは利用者が想定した通りの検出のため Not an issue とマークしました。

以上で AWS Cost Anomaly Detection で実際に検出された内容の紹介を終わります。

まとめ

本日は AWS Cost Anomaly Detection ブログ三連続の第二弾として、社内検証環境において Cost Anomaly Detection で実際に検出された内容をご紹介しました。

AWS Cost Anomaly Detection を利用するとどのような検出が行われるのか、実際に検出された 108 の検出のうちコストがより高額である結果を表にして 50 個ご紹介しました。また、特に利用料が高額なベスト 10 については Cost Explorer のグラフと共に詳細を確認しました。

Cost Explorer のグラフを見て頂けるとわかりやすいのですが、弊社のアカウントの場合は傾向としてはおおよそ2つあり

  1. 一定期間利用料が $0 のサービスで、突発的に1日あたりの利用料が $10 以上に急増する
  2. 普段から一定の利用料はあるものの、そのサービスの1日あたりの利用料金が3倍以上に急増する

これらの場合にアノマリーとして検出されるようでした。念のため記載しますと「急増」は検出しますが、「急減」は検出されません。

これらの検出結果が何かの参考になれば幸いです。

2022年3月23日 追記

AWS Cost Anomaly Detection ブログ三連続の第三弾ブログは以下となります。こちらも合わせてご覧ください。

blog.serverworks.co.jp

では、またお会いしましょう。

佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ

営業部カスタマーサクセス課所属。AWS資格12冠。2010年1月からAWSを利用してきました。2021 Japan APN Ambassador /2020-2021 APN ALL AWS Certifications Engineer。AWSのコスト削減、最適化を得意としています。