やりたい事
AWSのRDSで拡張モニタリングを有効にすると、見る事ができるメトリクスが増えます。
ですが、この拡張モニタリングのメトリクスはそのままではCloudWatch側に表示できません。
RDSのディスク使用率をCloudWatchのダッシュボードでまとめて見たかったので、
拡張モニタリングのメトリクスをCloudWatchで扱えるように設定してみました。
(ここでは拡張モニタリングの有効化については記載しません)
CloudWatchLogsからカスタムメトリクスを登録する
CloudWatch Logs を使用した拡張モニタリングの表示
DB インスタンスの拡張モニタリングを有効にした後、CloudWatch Logs を使用して DB インスタンスのメトリクスを表示できます。
拡張モニタリングのデータはCloudWatchLogsに保存されているようです。
CloudWatchLogsからカスタムメトリクスを登録します。
カスタムメトリクス登録手順
フィルターパターンについて
一番ポイントになりそうなフィルターパターンについて。
公式資料はこちら。
ログイベントの語句の一致
拡張モニタリングのデータはJSON形式なので、JSONのパターンについて説明します。
利用できるメトリクスはここに一覧があります。
使用可能な OS メトリクス
メトリクスの指定方法はjqコマンドと同じ感じ。
正規表現ではなく、ワイルドカードとして*
が使えます。(他にもあるかも)
例として、Auroraのディスク使用率を取得するフィルターパターンはこんな感じでした。
"{ ($.instanceID = "dbname") && ($.instanceResourceID != "*-secondary") && ($.fileSys[0].usedPercent = *) }"
そして、メトリクス値に$.fileSys[0].usedPercent
を指定すればディスク使用率を取得できました。
さいごに
記事書いてる最中に見つけたのですが、似たような公式の記事もありました。
拡張モニタリングの CloudWatch Logs をフィルタリングして、Amazon RDS のために自動化されたカスタムメトリクスを生成するにはどうすればよいですか?
若干手間ですが、目的は達成できました。
たくさん登録するならTerraformみたいなコード上でコピペが楽でした。