RDSのコスト最適化で役立つサービスやツールをまとめてみる
現在いちプロジェクトでRDSのコスト最適化に取り組もうとしています。
調べていたら思った以上に役立つサービスやツールがありました。 プロジェクト内の共有も兼ねて、まとめてみます。
はじめにまとめ
以下、今回紹介するサービスやツールです。ざっくりとカテゴリ分けしました。
カテゴリ | サービスやツール | ひとことメモ |
---|---|---|
パフォーマンス最適化 | Performance Insights | より高度な分析。漏れなく有効化したい |
パフォーマンス最適化 | DevOps Guru for RDS | MLを活用した高度な推奨事項 |
パフォーマンス最適化 | RDSレコメンデーション | 基本的な推奨事項 |
インスタンス/ストレージ最適化 | Compute Optimizer | 適切なインスタンスタイプ/ストレージの提案 |
ログ最適化 | CloudWatch Logs/Metrics | コストになっているログの特定 |
稼働時間の削減 | Trusted Advisor | 非アクティブなRDSインスタンスの特定 |
稼働時間の削減 | 起動停止スケジュールの仕組み | 稼働時間を減らしてコスト削減 |
請求周り | 料金明細 | 基本的なコスト把握 |
請求周り | Cost Explorer | 基本的なコスト把握 |
請求周り | Cost and Usage Reports(CUR) | より詳細・長期的なコスト分析 |
リザーブドインスタンス(RI) | RIの推奨事項や各種レポート | RI購入の参考情報 |
そのほか | Cost Optimization Hub/Budgets/Cost Anomaly Detection | ー |
複数のAWSアカウント/利用部門と関わるCCoEとしては、 請求周りは最低限押さえておきたいです。 各AWSアカウント上で「RDSコストが全体のどれだけ占めているのか」や、 「RDSコストの内訳(稼働時間/ストレージ/バックアップなど)」は 料金明細 や Cost Explorer を活用しながら把握したいです。 利用部門にその情報をレポーティングできる仕組みもあると良さそうです。
リザーブドインスタンス(RI)購入はクイックウィンとして優先的に進めたいです。 そのためにも「RI購入に役立つ情報」は揃えておきたいです。 RI推奨事項や各種レポート が役に立ちますが、 長期的な利用状況の把握には Cost and Usage Reports(CUR) が役に立ちます。
利用部門ではパフォーマンス最適化やインスタンス/ストレージ最適化、ログ最適化、稼働時間の削減 などの活動を推進できるようにしたいです。 CCoEとしては利用部門の推進活性化のために、 コミュニケーションやガイドライン整備、ベースライン整備を実施したいです。 例えば以下のような項目です。
- Performance Insights は全てのRDSインスタンスで有効化するようにガイドライン化し、活用を推進させる
- DevOps Guru for RDS をすぐに利用できるようにベースラインを整備し、活用を推進させる
- Compute Optimizer をデフォルトで有効化されるようにベースラインを整備し、推奨項目をレポーティングする
- Trusted Advisor のRDSに関する推奨項目をレポーティングする
パフォーマンス最適化
Performance Insights
Performance Insights はRDSモニタリングの拡張機能です。 ダウンタイムや再起動無しで有効化できます。
引用: Performance Insights ダッシュボードの概要 - Amazon Relational Database Service
データベースのパフォーマンス分析に 役立つダッシュボードを提供します。 負荷がかかっているクエリの発見などに役立ちます。
Performance Insights は以下の範囲で無料利用できます。
- 7日間分のパフォーマンスデータ履歴
- 1か月あたり 100 万件のリクエスト
より長期的な傾向分析を実施するには、 有料プランへのアップグレーが必要です。
詳しくは以下公式ドキュメントや詳解ブログを参照ください。
DevOps Guru for RDS
DevOps Guru は 機械学習を用いた「アプリケーション運用で役立つサービス」です。 アプリケーションの運用上の問題を自動で特定して、 パフォーマンスや可用性を改善するための推奨事項を提案してくれます。
その1機能である DevOps Guru for RDS により データベース周りの問題点も検出できるようになっています。
DevOps Guru for RDS を始めるには Performance Insight を有効化しておく必要がある点に注意してください。 また、サポートされるデータベースエンジンは 2024/11 時点では以下のとおりです。
- Amazon Aurora with MySQL compatibility
- Amazon Aurora with PostgreSQL compatibility
- Amazon RDS for PostgreSQL compatibility
それ以外のデータベースエンジンについては、 (DevOps Guru for RDS ではなく) DevOps Guru 標準の基本的な分析が利用できます。
AWS resource monitored by DevOps Guru Scenario that DevOps Guru identifies CloudWatch metrics monitored Amazon RDS (all instance types) CPU or memory reaching limits DBLoad, DBLoadCPU RDS for PostgreSQL High replication slot lag OldestReplicationSlotLag – 引用: Monitoring database operations in Amazon RDS - Amazon DevOps Guru
DevOps Guru は 分析対象のリソース単位、およびAPI呼び出し単位の課金体系です。 分析対象のリソースはタグで絞ることもできます。 RDSのDBインスタンスについては、1リソースあたり 0.0042 USD/1 時間
(2024/11時点) です。
RDSレコメンデーション
RDSコンソールの [レコメンデーション] から RDSに関する推奨事項を確認できます。
引用: Amazon RDS の推奨事項の表示 - Amazon Relational Database Service
コストのほかにも可用性やパフォーマンス、セキュリティに関する推奨事項を確認できます。 推奨事項のリファレンスは以下を参照ください。
インスタンス/ストレージ最適化
Compute Optimizer
Compute Optimizer はコンピューティングリソースについて 「適切なインスタンスタイプやストレージ」を提案してくれるサービスです。 サービスの詳細については以下ブログを参照ください。
2024/06のアップデート で Amazon RDS MySQL と PostgreSQL について、 推奨事項の提案をサポートしました。
「インスタンスタイプの推奨事項」および「ストレージの推奨事項」を提供してくれます。 Performance Insights を有効化していると、より良い洞察を得られます。
Compute Optimizer 自体には追加料金はかかりません。 拡張インフラストラクチャメトリクス という 「メトリクス分析の期間を 14日から 93日に延長する追加機能」のみ 有料です。
ログ最適化
CloudWatch Logs/Metrics
RDSの各種ログは CloudWatch Logs ロググループ /aws/rds/instance/instance_name/log_type
へ発行できます。 そしてロググループへ送られた料金( DataProcessing-Bytes
) が結構なコストになることが多いです。
コストになっているロググループの把握には、 CloudWatchメトリクスの IncomingBytes
が役立ちます。 以下ブログに確認する方法が詳解されているので参照ください。
「CloudWatch Logs へ流しているものの活用していない」ようなものがあった場合には 出力をOFFにすることを検討ください。 例えば、general_log(一般ログ) が大量に吐かれていたため、 OFFにしてコスト削減したケースがあります。
稼働時間の削減
Trusted Advisor
AWS Trusted Advisor を使うことで コスト最適化やパフォーマンスに関するレコメンデーションを受けられます。 確認できるチェック項目は チェックリファレンス を参照ください。
特に コスト最適化カテゴリの「Amazon RDS Idle DB インスタンス」は 不要なインスタンスの洗い出しで役に立ちます。
Amazon RDS Idle DB インスタンス
アイドル状態のように見えるデータベース (DB) インスタンスの Amazon Relational Database Service (Amazon RDS) の設定を確認します。
DB インスタンスの接続が長時間にわたって確立されていない場合は、インスタンスを削除してコストを削減できます。過去 7 日間にインスタンスが接続していない DB インスタンスはアイドル状態と見なされます。インスタンス上のデータの永続的ストレージが必要な場合は、低コストのオプション (DB スナップショットの作成や保持など) を使用できます。手動で作成された DB スナップショットは、ユーザーが削除するまで保持されます。
Trusted Advisor 自体は無料で使えますが、 AWS Support のプラン次第で制限があります。
※ クラスメソッドメンバーズ のお客様は、すべてのTrusted Advisor 機能をお使いいただけます。
起動停止スケジュールの仕組み
検証環境、もしくは常時稼働が必須でないRDSインスタンスを停止させて、 コスト削減をするのは良くあるケースかと思います。
ただRDSは停止したあと、7日度に自動で起動されてしまいます。
そのため停止によるコスト削減を目指すのであれば、 「RDSインスタンスの起動停止をスケジュールする仕組み」を実装する必要があります。
この仕組みの実現方法はいくつかあります。
実現方法 | 参考リンク |
---|---|
EventBridge Scheduler | 【5分で簡単!】Amazon EventBridge SchedulerでRDSの自動定期停止を実装してみた | DevelopersIO |
Instance Scheduler on AWS (ソリューション) | GitHub - aws-solutions/instance-scheduler-on-aws |
opswitch (クラスメソッドのサービス) | AWS運用かんたん自動化ツール「opswitch」 | AWS総合支援 | クラスメソッド株式会社 |
[ピックアップ] opswitch は無料で利用でき、 「日本語での利用」や「複雑な設定やポリシー管理」も必要ありません。 より利用イメージを掴みたい方は以下紹介ブログを参照ください。
請求周り
料金明細
料金明細のページにて 毎日 or 毎月のコストを確認します。 「どのAWSアカウントでどれだけRDSコストが掛かっているのか」、 や「RDSコストのうち、どの使用タイプが多く占めているのか」を把握します。
RDSの主要な使用タイプは主に以下項目です。
- DBの時間利用 ( 例:
APN1-Multi-AZUsage:db.t4g.medium
) - バックアップやストレージ ( 例:
APN1-Aurora:StorageUsage
,APN1-RDS:ChargedBackupUsage
) - 延長サポート ( 例:
APN1-ExtendedSupport:Yr1-Yr2:MySQL5.7
) など
例えば クラスメソッドメンバーズの 「プロジェクト(もしくはAWSアカウント)のご利用料金」ページにて、 RDSのコスト内訳を確認できます。
Cost Explorer
AWS Cost Explorer はAWSのコストと使用量の遷移を グラフ化するためのサービスです。
引用: AWS Cost Explorer【AWS Black Belt】 - YouTube
基本情報や一般的な使い方は 以下 Black Belt が参考になります。
料金明細でみる内容はもちろん、他にも以下のような分析で活用できます。
- リザーブドインスタンス(RI)を按分してコスト遷移を把握する
- データベースエンジンやインスタンスタイプごとに掛かっているRDSコストを把握する
- リソースレベル※のRDSコストを把握する (※オプトインが必要)
- など
Cost Explorer は APIでリクエストするごとに 0.01 USD かかります。 また、一部の詳細情報が有料オプトインとしてあります。 詳しくは以下を参照ください。
Cost and Usage Reports(CUR)
CURはAWSコストの最も細かい情報を提供します。 有効化することで、 指定したS3バケットへ自動的にコスト情報が保存されていきます。
Cost Explorer よりも詳細かつ長期の分析を実施する際に役立ちます。
クラスメソッドメンバーズご契約のAWSアカウントでは 専用のCURをご利用いただけます。詳しくは以下を参照ください。
CURの利用自体は無料です。S3へ保存されるデータ量に応じた料金はかかります。
リザーブドインスタンス(RI)
RI購入周りで参考になる情報をまとめます。 全て「請求とコスト管理」コンソールからアクセスできる項目です。
RI 推奨事項
リザーブドインスタンス(RI)の推奨事項を確認できます。 これは Cost Explorer が有効になっていると、自動的に取得されます。 推奨事項は最大で過去60日分のコスト情報から算出されます。
RI購入の際の参考情報として役立ちます。 以下のようなパラメータで柔軟に推奨事項を確認できます。
パラメータ | 値 |
---|---|
期間 | 1年/3年 |
基準とする直近の期間 | 7日/30日/60日 |
支払いオプション | 全額前払い/一部前払い/前払いなし |
推奨事項レベル※ | 支払者/連結アカウント |
※ AWS Organizationsを使っている環境の場合は「組織全体(Payer)でのRI推奨事項」と「各メンバーアカウント単位でのRI推奨事項」を切り替えられます
RI 使用状況レポート
「RIをどれだけ利用できているか」や「RIでどれだけ節約できたか」 といった情報を期間範囲で調べられます。
「せっかくRIを購入したのに使われていない」といった事象を見つける際に役立ちます。
RI カバレッジレポート
RDSインスタンス稼働時間のうち RIでカバーされている時間の割合を調べられます。
追加でRIを購入する余地がないか、精査するときに役立ちます。
そのほか
Cost Optimization Hub
Cost Optimization Hub はコスト最適化に関する推奨事項を 一元管理するためのサービスです。 詳しい解説は以下ブログを参照ください。
RDSまわりでは以下リソースに関する推奨事項を確認できます。
- RDSリザーブドインスタンス
- RDS DBインスタンス
- RDS DBインスタンスストレージ
これらの情報は Billing and Cost Management や Compute Optimizer の情報をソースとしています。 Cost Optimization Hub 独自の評価(実施難易度など)が付与されている点が嬉しいポイントです。
Cost Optimization Hub の利用は無料です。
Budgets
AWS Budgets は予算管理のためのサービスです。 コストと使用状況を継続的にモニタリングします。 定義した予算のしきい値を超えた際に 通知やアクションを実施できます。
アクションとしては以下があります。
- IAMポリシーの付与
- Service Control Policy (SCP) の付与
- 特定 EC2/RDSの停止
引用: AWS Budgets【AWS Black Belt】 - YouTube
例えば 「SCPの付与」により これ以上 新規インスタンスを建てられなくする
ような制御を適用できます。 また「特定RDSの停止」により、 インスタンス稼働料金を抑えることもできます。
AWS Budgets は 「アクションが有効な予算」と「予算レポート」にて費用が発生します。 詳細は以下を参照ください。
Cost Anomaly Detection
機械学習モデルを利用したコスト異常検知サービスです。 RDSに限りませんが、 異常なコスト増に気付ける仕組みを構築できます。
詳細は以下 Black Belt を参照ください。
Cost Anomaly Detection は無料で利用できます。
おわりに
以上、RDSのコスト最適化で役立つサービスやツールをまとめました。
改めて冒頭の「はじめにまとめ」を再掲します。 参考になれば幸いです。
調べた情報まとめ
カテゴリ | サービスやツール | ひとことメモ |
---|---|---|
パフォーマンス最適化 | Performance Insights | より高度な分析。漏れなく有効化したい |
パフォーマンス最適化 | DevOps Guru for RDS | MLを活用した高度な推奨事項 |
パフォーマンス最適化 | RDSレコメンデーション | 基本的な推奨事項 |
インスタンス/ストレージ最適化 | Compute Optimizer | 適切なインスタンスタイプ/ストレージの提案 |
ログ最適化 | CloudWatch Logs/Metrics | コストになっているログの特定 |
稼働時間の削減 | Trusted Advisor | 非アクティブなRDSインスタンスの特定 |
稼働時間の削減 | 起動停止スケジュールの仕組み | 稼働時間を減らしてコスト削減 |
請求周り | 料金明細 | 基本的なコスト把握 |
請求周り | Cost Explorer | 基本的なコスト把握 |
請求周り | Cost and Usage Reports(CUR) | より詳細・長期的なコスト分析 |
リザーブドインスタンス(RI) | RIの推奨事項や各種レポート | RI購入の参考情報 |
そのほか | Cost Optimization Hub/Budgets/Cost Anomaly Detection | ー |
CCoEいちメンバーとしての所感
複数のAWSアカウント/利用部門と関わるCCoEとしては、 請求周りは最低限押さえておきたいです。 各AWSアカウント上で「RDSコストが全体のどれだけ占めているのか」や、 「RDSコストの内訳(稼働時間/ストレージ/バックアップなど)」は 料金明細 や Cost Explorer を活用しながら把握したいです。 利用部門にその情報をレポーティングできる仕組みもあると良さそうです。
リザーブドインスタンス(RI)購入はクイックウィンとして優先的に進めたいです。 そのためにも「RI購入に役立つ情報」は揃えておきたいです。 RI推奨事項や各種レポート が役に立ちますが、 長期的な利用状況の把握には Cost and Usage Reports(CUR) が役に立ちます。
利用部門ではパフォーマンス最適化やインスタンス/ストレージ最適化、ログ最適化、稼働時間の削減 などの活動を推進できるようにしたいです。 CCoEとしては利用部門の推進活性化のために、 コミュニケーションやガイドライン整備、ベースライン整備を実施したいです。 例えば以下のような項目です。
- Performance Insights は全てのRDSインスタンスで有効化するようにガイドライン化し、活用を推進させる
- DevOps Guru for RDS をすぐに利用できるようにベースラインを整備し、活用を推進させる
- Compute Optimizer をデフォルトで有効化されるようにベースラインを整備し、推奨項目をレポーティングする
- Trusted Advisor のRDSに関する推奨項目をレポーティングする
参考情報
コスト全般
- 「払いすぎていませんか?AWSコスト最適化へのはじめの一歩」という内容で登壇しました #cm_odyssey | DevelopersIO
- AWS コストの最適化を検討する時、最初にチェックしたい定番の項目をまとめてみた(2023年夏版) | DevelopersIO
パフォーマンス最適化
- Performance Insights
- DevOps Guru for RDS
- RDSレコメンデーション
インスタンス/ストレージ最適化
- Compute Optimizer
ログ最適化
- CloudWatch Logs/Metrics
稼働時間の削減
- Trusted Advisor
- 起動停止スケジュールの仕組み
- solution: GitHub - aws-solutions/instance-scheduler-on-aws: A cross-account and cross-region solution that allows customers to automatically start and stop EC2 and RDS Instances
- EventBridge Scheduler: 【5分で簡単!】Amazon EventBridge SchedulerでRDSの自動定期停止を実装してみた | DevelopersIO
- opswitch: AWSのコストを削減したい方必見!無料で使える運用ツールのご紹介 | DevelopersIO
- opswitch: https://opswitch.zendesk.com/hc/ja/articles/13815442076825-opswitchを開始する
請求周り
- Cost Explorer
- Cost and Usage Reports(CUR)