👋

Azureコストは水道代に似ている

2024/01/11に公開

はじめに

イオンスマートテクノロジー(株)CTO室のSREチームの iwaryu です。
今回はAzureのコストについて発信したいと思います。

経費を削減(=Azureコスト削減)

家計を黒字にするには副業して収益を増やすより、無駄なコストを削減した方が効果があると昔どこかのサイトで読んだ気がします。
その時になるほどと思い、格安SIMに代えたり、金利の低いローンに変更したりしました。

Azureを使ってサービスを提供して収益を得ているなら、Azureの無駄なコストを削減した方がよいのですが、サービス影響だざずコスト削減するのは中々難しいものです。
一番手っ取り早いのは予約を購入する事です。これならサービス(性能など)はそのままでコストを半分くらい削減できるからです。
次はライトサイジングや停止運用なのですが、その前に実施しておくとよいのが予期しない無駄なコストに気づける事だと思います。

タイトルにあるように水道管からちょろちょろと水が漏れていたり家の外の蛇口を閉め忘れている事に気づかずにいると、水道代の請求書の金額を見て「高っ!」とびっくりすることがたまにあります。
これってAzureコストとなんか似ている気がします。請求書で気づくパターンです。
誰かがリソースを作成して削除し忘れてたり、誰かがスケールアップしたままにしたり、中々気づかないものです。

AzureポータルでAzureコストを確認できますが、月のコストが確定するのが、翌月の4日頃です。毎月のコストを経理に報告する為、毎月4日にコストを確認していると、「高!」と気づいた後から原因を探ったりしていました。開発を優先するとコスト管理は疎かになってしまいます。
かといって、毎週チェックするのも大変だし、何か良い手はないかと思い調べるとアラート通知機能がありました。

検知と発報

調べてみると「異常コスト」のアラートが便利そうです。
異常コストは以下のコスト変動を検知してくれるようです。

種類 内容
新しいコスト 仮想マシンなどの開始または追加されたリソース。新しいコストは、多くの場合、ゼロから始まるコストとして表示されます。
削除されたコスト 停止または削除されたリソース。削除されたコストは、多くの場合、ゼロで終わるコストとして表示されます。
コストの変更 (増加または減少) コストの増加または減少を引き起こす何らかの方法でリソースが変更されました。仮想マシンのサイズ変更などの一部の変更は、削除されたメーターを置き換える新しいメーターとして、両方とも同じリソースの下に表示される場合があります。

https://learn.microsoft.com/ja-jp/azure/cost-management-billing/understand/analyze-unexpected-charges#identify-cost-anomalies

これなら、ちょろちょろ水に気づけそうです。
しかし通知方法がメールしかない。メールは埋もれる可能性があるのでSlackに通知しよう。
Slackにコストアラートチャネルを作成し、メールアドレスを取得しました。
そのメールアドレス宛てに通知するようにしてSlackで気づけるようにしました。

全部のプロダクトのアラートを一つのコストアラートチャネルにしようとも考えましたが、担当外のアラートが頻発するとオオカミ少年のようにそのうちSlackに通知があっても無視してみなくなる恐れがあったので、設定は手間でしたが、プロダクト毎にコストアラートチャネルを作成しました。この時は10個のコストアラートチャネルを作成。

slackでメールを取得する方法です
https://slack.com/intl/ja-jp/help/articles/206819278-Slack-にメールを送信する

もう一つの防衛ライン

予算アラートを利用すると、選択したサブスクリプションの累計に対して閾値を設定し発報する事ができるみたいです。
これもSlackのコストアラートチャネルに通知するようにしました。
これの良いところは、数か月運用していると、毎月この日に通知が来るように固定化されてくるのですが、その日より早く通知がくれば、何か予期しないコストが発生しているかもと気づく事が出来ます。
https://learn.microsoft.com/ja-jp/azure/cost-management-billing/costs/cost-mgt-alerts-monitor-usage-spending

ついでにもう一つのアラート

コスト削減に有効な手段は予約の購入とお伝えしましたが、これは購入したリソースを100%利用し続ける事で効果があります。
リソースの使用率が割引のパーセンテージより低くなってしまうと、予約を購入しない方が安いなんて事があったりします。
そこで、予約の利用率に閾値を設定して発報する事が出来ます。これもSlackのコストアラートチャネルに通知する事で早期に気づけたりします。
https://learn.microsoft.com/ja-jp/azure/cost-management-billing/costs/reservation-utilization-alerts

おわりに

コストについて色々気づけるアラートを紹介しました。
実際の設定はMSのドキュメントを読んで試してみてください。

まだまだ、知らない設定があるかもしれません。
コスト削減探索の道はまだまだ続く・・・

絶賛採用中

イオンスマートテクノロジーに興味をもって頂いた方、絶賛採用中です。
https://engineer-recuruiting.aeon.info/

AEON TECH HUB

Discussion