#要点
・[重要]Datadogのグラフは表示する時間の範囲に350データポイントまで表示する
・クエリの結果に対してrollup(method,time)を設定すると、複数のデータポイントをまとめて表示することが可能
##今回の設定するデータ
AWSのcloudwatchから取得されたメトリックス(RDS CPU使用率)
#困っていた点
短時間(1h,4h)で表示すると1分間隔のデータが表示されるのですが、長時間(1week,1month)で表示されると
時間平均されてしまい、データのピークが隠れてしまうことがあります。
図1:時間の範囲1monthでRDSのCPU使用率を表示した例
いちいち、時間設定を短時間にして調べるのは面倒なので、長時間のグラフ表示のときでもピークがわかるようにしたい。というのが、今回の要件です。
#公式ドキュメントで調べてみた
Datadog公式ドキュメント「グラフ表示入門」
http://docs.datadoghq.com/ja/graphing/
上級者向けの関数の一つが.rollup()です。この関数をクエリに追記することで、複数のポイントを単一ポイントにまとめることができます。この関数は、”メ>ソッド”と”時間”の2つのパラメータを引数に指定することができます。(例: .rollup(method,time))
“メソッド”の部分には、sum/min/max/count/avgを指定することができます。”時間”は、秒単位で指定します。 “メソッド”と”時間”は、個別に指定(例: >.rollup(20))したり、両方を組み合わせて(例: .rollup(sum,120))も指定できます。 この.rollup()には、チェック機構があります。 >しかしDatadogのグラフでは表示する時間の範囲に基づき350のデータポイントまでしか保有していないので、期間指定を一ヶ月にした場合は、20秒間隔以上?>の精度でデータポイントが保有されているため、20秒でのロールアップ.rollup(20)は、機能しません。
公式ドキュメントによると、**「Datadogのグラフでは表示する時間の範囲に基づき350のデータポイントまでしか保有していない」**とのことです。データポイントを350までしか表示しないから、時間の範囲によってグラフの表示が時間平均されてしまうみたいです。
そこで設定するのが、上記に書いてあるとおりrollup(method,time)です。
((僕もこれが設定できるということは上級者の仲間入りなのか........))
CPU上昇などのグラフで知りたいのは平均ではなく、最大ですのでmethodはmaxを選択します。
cloudwatchから取得されている値が60秒間隔なので、timeは60でよさそう。rollup(max)でも設定できるので、timeを設定するかは任意です。
#設定方法
1.対象グラフの鉛筆マークのEdit this graphを選択
図3:Edit this graph
2.変更したいクエリーの[+]のAdd functions and modifiersを選択
図4:Add functions and modifiers
3.rollupを選択、avgからmaxに変更します
図5:maxに変更
4.JSON設定からrollup(max,60)をrollup(max)に変更(任意)
図6:JSONファイルを修正
5.設定後のグラフの確認
図7:[rollup設定後]時間の範囲1monthでRDSのCPU使用率を表示した場合
これで長時間スケールでいつ何が発生したかが見やすくなりました。
Datadogのグラフ表示はまだまだ設定のやりがいがありますので、工夫と知恵が必要ですね。
何か不明点・間違いがありましたら、コメント頂けますと大変ありがたいです。