NRQLを使用すると、 buckets
関数を使用して特定の範囲をカバーするバケットにクエリ結果を分割できます。
バケット化された結果を使用する理由
FACET buckets()
関数を使用すると、ヒストグラムや度数分布の作成など、指定した範囲に基づいてデータをバケットにグループ化および分類できます。 count()
や sum()
などの集計関数と組み合わせて使用すると、さまざまな範囲にわたるデータの分布を分析できます。
以下にいくつかの使用例を示します。
- 応答時間の分析:
FACET buckets()
を使用して応答時間を範囲 (0 ~ 100 ミリ秒、100 ~ 200 ミリ秒、200 ~ 300 ミリ秒など) にグループ化し、各範囲内のカウントまたは平均応答時間を計算できます。これにより、応答時間の分布を理解し、パフォーマンスの問題を特定できます。 - リクエスト サイズの調査: リクエスト サイズに
FACET buckets()
を使用すると、リクエストのサイズをさまざまなバケット (0 ~ 1 KB、1 ~ 5 KB、5 ~ 10 KB など) に分類し、各バケットに含まれるリクエストの頻度を分析できます。これは、パターンを特定し、リソース割り当てを最適化するのに役立ちます。 - エラー率のモニタリング: エラー コードまたはエラー率に
FACET buckets()
を使用して、それらを特定の範囲にグループ化できます。たとえば、さまざまな HTTP エラー コード (400、500 など) やエラー率の範囲 (0 ~ 1%、1 ~ 5% など) に応じたバケットを作成できます。これにより、エラーの分布を追跡し、注意が必要な領域を特定できます。 - ユーザー エンゲージメントの追跡: セッション継続時間やページビューなど、ユーザー エンゲージメントに関連する指標がある場合は、
FACET buckets()
を使用してそれらを時間間隔にグループ化できます。これにより、さまざまな時間範囲にわたってユーザーがアプリケーションまたは Web サイトにどのように関与しているかを分析できます。
バケット化されたNRQLクエリの作成
バケット化された結果を返すには、NRQL クエリで FACET buckets()
句を使用します。バケット化されたクエリは次の構造になります。
SELECT FUNCTION(ATTRIBUTE) FROM DATA_TYPE FACET buckets(ATTRIBUTE, CEILING_VALUE, NUMBER_OF_BUCKETS)
New Relic データベースに数値として保存されている任意の属性で、バケット化された NRQL クエリを使用できます。
バケットクエリの例
- 属性の
SELECT
ステートメントで NRQL ステートメントを作成します。たとえば、SELECT average(duration)
です。 buckets()
をファセットするFACET
句を追加します。たとえば、buckets(duration, 40, 10)
。SELECT
ステートメントとは異なる属性でバケット化することもできます。たとえば、データベース呼び出しの平均時間を表示するには:buckets(databaseCallCount, 40, 10)
.
このクエリは、10 個のバケットにわたる特定のページ パスの平均継続時間を計算します。上限は 40 です。上限の 40 を超えるすべての値は、最後のバケット>=36.0
にグループ化されます。
SELECT average(duration) FROM PageView WHERE pageUrl LIKE 'http://webportal.telco%' SINCE 1 week ago FACET buckets(duration, 40, 10)
このクエリは次の結果を返します。
セグメントが 10 個のバケットに分割された NRQL クエリの例を次に示します。一番下のバケットには外れ値が含まれるため、それに応じて調整することをお勧めします。