はじめに
皆さんこんにちは、asmgです。今回は、RDS拡張モニタニングの詳細度(以下、詳細度と呼びます。)をAWS CLIを使って変更してみたので詳細度を変更するに至った背景と詳細度を変更する方法をまとめていきたいと思います。
背景
自分のチームでは、AWS RDS 監視を詳細度60秒(default)で拡張モニタニングのデータを取得し、それをDatadogに送りdashboardを使って監視を行っています。
しかし、詳細度60秒だと1分に1回しかデータを送らないのでデータが荒く状況がわかりにくいという課題を抱えていました。
そこで、詳細度を60秒からより短い秒数に変更することでデータが荒いという課題を解決しようということになりました。
コスト計算
詳細度をより短い時間に変更するとコストがその分増えるので、コストをざっくり計算して問題がないかを確認しました。以下にざっくりとしたコスト計算の方法を示します。
ex) 詳細度60秒→10秒に変更した場合
Cloud Watchのマネコン→ロググループ→拡張モニタニングのロググループを開くと以下のようなページに飛ぶと思います。ページに飛んだら保存されているバイト数を元に計算をしていきます。
計算のsample
<現状のコスト>
3.45GB(保存されているバイト数) * 0.76(CloudWatchの収集の単価) = $2.622 (データ収集コスト)
3.45GB(保存されているバイト数) * 0.033(CloudWatchの保存の単価) =$0.114 (保存のコスト)
合計 $2.736(月)
<詳細度を60秒→10秒に変更した場合のコスト>
現状のコストの6倍になるので
3.45GB * 6倍 = 20.7GB (保存されているバイト数)
20.7GB * 0.76 = $15.732 (データ収集コスト)
20.7GB * 0.033 = $0.68 (保存のコスト)
合計 $16.415(月)
今回は$13.679の差額しかなかったので詳細度をより短い時間に変更する選択を行いました。
詳細度を変更する方法
今回は以下のDBクラスターを使って詳細度の変更方法を紹介したいと思います。
(1) 現状のRDSの詳細度を確認する
❯ aws rds describe-db-instances --db-instance-identifier database-1-instance-1 --query 'DBInstances[].MonitoringInterval'
----出力結果----
[
60
]
※--db-instance-identifier
にはDBインスタンス名
を入れます。
出力結果を確認すると該当のDBインスタンスは詳細度60になっていることがわかります。
(2) 詳細度を変更するために必要なMonitoringRoleArnを取得する
❯ aws rds describe-db-instances --db-instance-identifier database-1-instance-1 --query 'DBInstances[].MonitoringRoleArn'
----出力結果----
[
"arn:aws:iam::hogehoge:role/rds-monitoring-role"
]
RDS IAMロールのARNを取得できたので詳細度をあげていきたいと思います。
(3) 詳細度を変更する
❯ aws rds modify-db-instance \
--db-instance-identifier database-1-instance-1 \
--monitoring-interval 10 \
--monitoring-role-arn arn:aws:iam::hogehoge:role/rds-monitoring-role
上記のコマンドを実行することで詳細度を変更ことができます。
最後に詳細度が上がっているかを確認します。
以下のコマンドを実行して詳細度が上がっていれば成功しています。
❯ aws rds describe-db-instances --db-instance-identifier database-1-instance-1 --query 'DBInstances[].MonitoringInterval'
----出力結果----
[
10
]
まとめ
本記事では、RDS拡張モニタニングの詳細度をAWS CLIを使って変更する方法を背景を含めてまとめました。RDSを監視する際にはログの頻度が重要であり、ログを取得する上でのコストを比較することが不可欠です。もし、RDS拡張モニタニングの詳細度を変更させる際には、本記事のコスト計算や変更方法が参考になると幸いです。