ロールアップ
Dash が新機能を発表!インシデントマネジメント、Continuous Profiler など多数の機能が追加されました! Dash イベントで発表された新機能!

ロールアップ

.rollup()

上級ユーザーを対象とした説明です。

クエリの末尾に .rollup() 関数を付けると、カスタムな時間集計を実行することができます。この関数では以下を定義できます。

この関数は <METHOD><TIME> の 2 つのパラメーターを受け取り、.rollup(<METHOD>,<TIME>) のように記述します。

パラメーター説明
<METHOD>sum/min/max/count/avg から選択し、指定した時間間隔でのデータポイントの集計方法を定義します。
<TIME>グラフに表示するデータポイントの間の時間間隔を秒で指定します。

この 2 つは別々に使用することも、あるいは .rollup(sum,120) のように一度に使用することもできます。次の画像は、あるホストの 1 週間分の CPU 使用率を、.rollup() 関数を使わずに棒グラフで表示したものです。

次の棒グラフは、同じメトリクスを、.rollup(avg,86400) を使用して 1 日ごとにロールアップしたものです。

ロールアップの移動

関数説明
moving_rollupロールアップして最後の X 秒中のポイントを結合します。moving_rollup(<METRIC_NAME>, <TIME> , <METHOD>)

.moving_rollup() 関数をクエリの最後に付加することで、「最後の X 秒」など最も直近の特定の時間範囲にあるポイントを結合することができます。この関数には <TIME> および <METHOD>: .moving_rollup(<TIME>,<METHOD>) という 2 種類のパラメーターがあります。

パラメーター説明
<TIME>ポイントを結合する時間間隔を秒で指定します。
<METHOD>sum/min/max/count/avg から選択し、指定した時間間隔でのデータポイントの集計方法を定義します。

ロールアップ間隔の制限

Datadog では、グラフごとに表示できるデータポイントは最大 350 に制限されています。そのため、avg メソッドによってデータポイントが自動的にロールアップされ、メトリクスのすべてのデータポイントが時間間隔の平均値で表示されます。

.rollup() 関数を作成して使用すると、時間集計のタイプ(avgminmaxcountsum)とロールアップの時間間隔を指定できますが、その関数を適用することによって、Datadog の制限を超えて時間間隔が短くなる場合、時間集計のタイプは関数で指定したものが使われますが、時間間隔については Datadog による制限の方が優先されます。たとえば、1 か月分のメトリクスを .rollup(20) を使用してリクエストすると、ポイントの数が 350 を超えないように、20 秒よりも長い間隔でデータが戻されます。

: COUNTRATE のタイプのメトリクスは、自動的に .as_count() のモディファイアー付きで画面に表示されます。これにより、sum を設定したロールアップ関数が実行され、補間が無効になります。この .as_count() はクエリの末尾に明示的に表示されます。

.as_count().as_rate() の使用方法について詳しくは、こちらのブログ記事を参照してください。また、これらの関数の影響について詳しくは、アプリ内モディファイアーに関するドキュメントを参照してください。

モニターでのロールアップ

通常は、モニタークエリでロールアップを使用することは避けるべきです。ロールアップ間隔とモニターの評価期間の整合性が取れなくなる可能性があるためです。ロールアップ間隔は、モニタークエリの開始や終了の時間ではなく、UNIX 時間に合わせて開始および終了します。そのため、ロールアップ間隔が短くなり、少量のサンプルデータだけでモニターが評価を行う(そしてトリガーする)可能性があります。これを避けるために、(少なくとも)設定されたロールアップの間隔だけモニターの評価を遅らせる必要があります。

その他の関数