はじめに
NewRelicで監視作ったりチューニングとかしてると集計方法とかをいじったり確認したりすることがあり、めちゃむずいなと思ったのでまとめてみようと思った。(正直まだ完璧とは言いづらい)
アグリゲーションとは
システムのパフォーマンスデータを効率的に集約(集計)して、重要なインサイトを得るための機能。
複数のデータポイントをグループ化し、平均値や最大値、最小値、合計値などを求めることで、全体のパフォーマンスの傾向を把握しやすくできる。
Streaming methodsとは
データの性質に合わせて、これから紹介する3つの集計ウインドウを閉じる方法の集合体
※集計ウィンドウ:この期間内のタイムスタンプを持つデータが集計され、評価。
集計方法3種類
集計方法は下の3つを選択することができる。
- Event flow
- Event timer
- Cadence
Event flow:デフォルトで設定されていて頻繁に、ほぼ順番に受信されるデータに最適
Event timer:クラウド統合データやまれなエラー ログなど、バッチで頻繁に到着しないデータに最適
Cadence:NewRelicが提供している独自の集計方法でこの3つの中で一番古い
Event Flowの特徴
頻繁かつ一定間隔で発生するデータに対するアラート設定に最適な方法。
毎分01秒ちょうどにデータが到着し、Window Durationが5分、Delayが2分の場合を例とする。
12:00:00 から 12:04:59 まで5分間の集計ウインドウ内で、最新のデータのタイムスタンプは 12:04:01 になる。
そこから2分後、12:06:01 以降のタイムスタンプを持つデータが到着すると、12:00:00 から 12:04:59 までの集計ウインドウが閉じ、NRQLクエリによる
集計・しきい値との比較が行われる。
上記の特徴からリソース監視する時に使うといいかも?
Event Timerの特徴
到着順番や発生間隔に一貫性がないデータを評価するときに最適な方法。
集計ウインドウ内のデータが最後に到着してからの時間経過によって、集計ウインドウが閉じられる。
データが到着するとTimerで設定した時間のカウントダウンが始まってTimerが0になると集計ウインドウが閉じられてTimerが0になる前にデータが到着するとTimerがリセットされる。
上記の特徴から散発的かつ予期せずに発生するアラートに対する監視(異常検知とか)にいいかも?
Cadenceの特徴
データのタイムスタンプではなく、NewRelic内部のシステムクロックに基づいて一定間隔で集計を行う方法。
公式情報
NRQLアラート条件に追加された新しい集計方法とどれを選ぶべきかの指針
https://newrelic.com/jp/blog/nerdlog/new-aggregation-methods-for-nrql-alert-conditions
ストリーミング・アラート:重要な用語と概念
https://docs.newrelic.com/jp/docs/alerts/create-alert/fine-tune/streaming-alerts-key-terms-concepts/
集計方法の選択
https://docs.newrelic.com/jp/docs/alerts/create-alert/fine-tune/choose-your-aggregation-method/