【CloudWatch】RDSのストレージ使用率を監視してみる

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

最近はダイエットにも熱が入り、順調に体重が減っているCI部の柿﨑です。

AWS監視について、CloudWatchを使って監視設定を行う機会がございましたので備忘録的に書きます。
今回とくに困ったのがRDSのストレージ使用率の監視となります。

CloudWatchの仕様

RDSのストレージ監視を行う場合は、以下のメトリクスを使用するのが一般的かと思われます。

このメトリクスは単位がバイトとなっている点に注意が必要です。
ストレージ容量に対して80%以上の使用率を検知させる場合は、以下のような設定になってしまいます。

  • RDSストレージ容量: 100 GB
  • アラームの閾値: FreeStorageSpace <= 20 GB

ストレージ容量に変動がなければ上記の設定で問題ありませんが、ストレージの自動拡張機能が有効だと話が変わります。
先ほどの監視設定を例にしますと、ストレージ容量が200GBに拡張された場合、設定すべきアラームの閾値も40GBへと変動するためです。
ここがメトリクスの単位がバイトであることの注意点となります。

代替策

主な代替策は以下です。

  • DataDogを使用する(当社ではほぼこれ)
  • RDSの拡張モニタリングおよびメトリフィクスフィルターを使用する
  • その他

今回は2番目の方法でやってみます。

やってみる

※今回はPostgreSQL且つシングルAZ構成のRDSを使いますので、ほかのDBMSやマルチAZ構成、Auroraは考慮いたしません。

RDSの拡張モニタリングを有効にする

RDSは適当に作ります。

f:id:swx-kakizaki:20210910075445j:plain

ロググループを確認する

「RDSOSMetrics」というロググループが自動作成され、そちらにログが出力されます。

f:id:swx-kakizaki:20210910075643j:plain

ログを確認する

それっぽいログを適当に開きます。
当該ロググループには各RDSのログが出力されますので、「instanceID」等を使用して目的のRDSをフィルターする必要があります。

f:id:swx-kakizaki:20210910084112j:plain

少し下へスクロールしますと「fileSys[0]」の中に「mountPoint」や「usedPercent」を確認できます。
「mountPoint」の「/rdsdbdata」はRDSのデータ領域になり、「usedPercent」はデータ領域の使用率を表しています。
要するにこれを使えばいいということですね。

f:id:swx-kakizaki:20210910083749j:plain

メトリクスフィルターを設定する

フィルターパターンは以下のように設定し、識別子でRDSを特定し且つデータ領域のログをフィルターするようにしてみました。
フィルターとパターンpsyntax構文

フィルターパターン: { ($.instanceID="database-1") && ($.fileSys[0].mountPoint="/rdsdbdata") }

メトリクス値ではデータ領域の使用率を指定してメトリクスへ渡します。

メトリクス値: $.fileSys[0].usedPercent

メトリフィクスフィルターの設定はざっくり以下のような感じにしました。

f:id:swx-kakizaki:20210910080748j:plain

CloudWatch Alarmを設定する

以下のような設定にしてみました。
自動拡張する前にアラームが発生しますが、今回はあくまでも使用率の監視がメインなので一旦、忘れます。

f:id:swx-kakizaki:20210910081040j:plain

動作チェック

RDSのストレージ容量を増やします。

f:id:swx-kakizaki:20210910083829j:plain

どんどん増やして「usedPercent」が「92.14」になりました。

f:id:swx-kakizaki:20210910083909j:plain

メトリクスを確認すると以下のような遷移をしていました。
赤線が使用率80%のラインで、それを超えてアラームも発生していました。

f:id:swx-kakizaki:20210910083943j:plain

おまけ

以下のようにメモリも使用率による監視ができません。

RDSから出力されるログを見てもパーセンテージによるメトリクスの取得はできなさそうです。

f:id:swx-kakizaki:20210910083202j:plain

ただし、メモリについてはインスタンスタイプの変更により変動する値のため、そこまで困らないのではないかと考えております。

以上となります。

柿﨑 拓人 (記事一覧)

クラウドインテグレーション部

AWS移行案件の要件定義~構築をメインに担当。
最近はボルダリングとバドミントンをやっています。