CloudWatchメトリクスでQuickSightのSPICE使用量をウォッチしてみた

2022.02.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

先日AWS CLIを使ってQuickSightでのSPICE使用量を計算してみました。

本日はこの方法を使って、CloudWatchメトリクスとして表示してみます。
これが出来ると、CloudWatchアラームで使用量に応じて無料枠内で通知するなど、色々と出来るようになりそうです。

2022 年 11 月 10 日追記

2022 年 11 月 のアップデートで標準メトリクスで取得出来るようになりました!これにより本記事の方法でカスタムメトリクスを実装する必要性は低くなりました。

テンプレート

EventBridge + Lambdaで定期的にQuickSightのSPICE使用量を計算し、CloudWatch APIでPutMetricしています。
ソリューション一式のCloudFormationテンプレートは以下となります。

CloudFormationでデプロイするだけなのですが、実行頻度をCron/Rate式で指定します。
この間隔には注意してください。

QuickSightのデータセットの数に比例してLambdaの実行時間が長くなりますが、高頻度で実行してしまうとLambda実行料金がなかなかになると思います。 また、Lambdaのタイムアウト時間も調整してください。
私の環境では50個くらいのデータセットで10~20秒くらいだったと思います。

デプロイ後

デプロイ後は以下のようにQuickSight名前空間からメトリクスが確認出来るので適宜アラームなどを作成することが出来ます。
私がPythonに精通しておらず、関数の実装周りはちょっと恥ずかしいのでここに載せるのは控えておきます。

今回の記事で360MBほどSPICEを使用していることがわかったので、いくつか不要なデータセットを削除して掃除したいと思います。

期待どおりCloudWatchのメトリクスも変化しました。
QuickSight管理画面の表示だとMBになってますが、計算した感じだとMiBな気がします。

一方で、CloudWatchダッシュボードではMBで計算されているので数字だけ見ると少し乖離があります。しきい値を設定する際はそのあたり考慮すると良いと思います。

さいごに

本日はCloudWatchダッシュボードでSPICE使用量をメトリクスで確認してみました。
地味に監視したい数値な気がするので、そのうち簡単に取得出来るようになるだろうと思ってはいますが、それまでのつなぎに使ってみようかなと思います。

参考