やりたいこと
CloudWatch メトリクスで表示する期間を1時間とか1日とか選択するところがあるじゃん。
で、これで表示されたグラフの最初と最後の値とその差を知りたいことあるじゃん、あるよね?
例えば、ALB の RequestCount っていうメトリクスで、先週と今日のピークの同時間(時分まで同一)の1分あたりの合計リクエスト数の増減を知りたいとかさ。
あとは溜まりまくった SQS の Queue があるとして、処理させて1日でどれくらい減ったとかさ。
どうやるか
そういう時はこうすれば良い。
- 対象のメトリクスを選択 (m1)
- スクショでは ALB の RequestCount を選択
- 対象のメトリクス m1 を使って数式を2つ追加
- 期間の最初の値:
IF(m1==0, FIRST(m1), FIRST(m1))
(e1) - 期間の最後の値:
IF(m1==0, LAST(m1), LAST(m1))
(e2)
- 期間の最初の値:
- e1 と e2 を使って差分を計算する数式を追加
e2-e1
正直なところ
この式でどうして最初と最後の値を取ってこれるのかはよくわかっていない。
ドキュメントを見ると、まぁなんとなく FIRST と LAST を使えば取れるっぽいな、でもこのまま FIRST(m1)
とかって入れると The return value of the expression must be TimeSeries or Array[TimeSeries]
って言って怒られるんだよな、戻り値が悪いのか?んー、でも FIRST の戻り値は TS って書いてあるから大丈夫に見えるんだけどなぁ…などと試行錯誤を繰り返しているうちに、この IF 文を使う式にたどり着いた。
多分、IF 文の条件はエラーにならなければ何でも良い。
(true でも false でも FIRST(m1)
を返しているのだから)
とまぁ、よくわかっていないがとりあえず取れたので、これを使って差を見るグラフをダッシュボードに追加したりしている。