• /
  • EnglishEspañol日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は、参考として提供されています。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、このページを参照してください。

問題を作成する

NRQL 入門チュートリアル: 最初のクエリ

NRQL とは 、 NRQL の仕組みNRQLチャートやダッシュボードとの関係 など、他のトピックで NRQL の基本を学んだ後は、このチュートリアルの例を試す準備ができています!このチュートリアルでは、データを使用していくつかの基本的な NRQL クエリを作成するのに役立つ、言語内のいくつかの基本的な概念について説明します。次の方法が含まれます。

  • SELECTを使用し、 FROM
  • 使用する LIMIT
  • 属性を指定する
  • average()max()min()sum() 、および count()
  • SINCEを使用し、 UNTIL
  • 折れ線グラフをプロットする TIMESERIES
  • を使用してフィルタリングする WHERE
  • を使用して属性をグループ化する FACET

前提条件

このチュートリアルを進めるために必要なのは、New Relic プラットフォームにいくつかのデータを取り込むことだけです。 New Relic を初めて使用し、NRQL をいかに簡単に使用できるかを知りたい場合は、無料でプラットフォームを使い始めて、チュートリアルに従うことができます。 あなたがしなければならないことは次のとおりです。

  1. まだお持ちでない場合は、無料のアカウントにサインアップしてください。
  2. 当社のエージェントと統合を使用して、一般的なフレームワークやツールからデータを自動的に収集します。
  3. New Relic のセットアップ方法に関する推奨パスについては、クイック リリース ガイドを参照してください。 クエリするデータの取り込みを開始すると、このチュートリアルまたはこのシリーズの他のチュートリアルを使用する準備が整います。

始める準備はできていますか?さあ行こう!

1. 最初のクエリを作成します

クエリビルダーで開始するのに最適な場所は、New Relic APM によって収集されたTransactionと呼ばれる NRDB の単一のイベントタイプを調べることです。すべての NRQL クエリにはSELECT 句とFROM句が必要です。データをSELECTし、そのデータがFROMである場所を指定する必要があります。Transactionイベント タイプからすべてを選択する次の基本的なクエリから始めます。

SELECT *
FROM Transaction
A screenshot of a query with Select and From

これにより、タイムスタンプと属性のコレクションを含む多くの結果が返されます。今のところ、必要な結果は 1 つだけなので、 LIMIT 1を使用して結果を 1 つのレコードに制限できます。

SELECT *
FROM Transaction
LIMIT 1
A screenshot of a query with Select, From, and Limit

重要

LIMITが指定されていない場合、クエリは、 SELECT *クエリの場合は 100 のテーブル行のデフォルトを返し、 FACETクエリとSELECT (attributes)クエリの場合は 10 の集計値を返します。LIMIT MAXを使用して、最大値まで任意の制限を指定できます。

これで、結果のボリュームを制御する方法ができました。しかし、すべての属性が必要ない場合はどうすればよいでしょうか?特定のデータ ポイントのみを表示したい場合はどうすればよいでしょうか。SQL と同様に、 *を必要な属性の名前に置き換えることで、数文字だけでこれを行うことができます。この場合、トランザクションの名前と所要時間を尋ねることができます。

SELECT name, duration
FROM Transaction

これで、イベントのすべてまたは一部の特定の属性を返すことができるクエリと、特定の数のイベントをクエリするクエリを作成できました。次のステップ、つまりデータの集約に取り掛かります。

A screenshot of a query with Select and From using Duration

2.データの集計

場合によっては、個々のデータ ポイントを表示するのではなく、多数のイベントにわたって要約された集計データを表示したい場合があります。 ここがNRDBの強みです。 NRDB は、数十億のイベントをスキャンし、データに関する質問に対して即座にリアルタイムの回答を提供できます。 たとえば、各Transactionイベントには、呼び出しの実行にかかった秒数を表す期間属性があります。 次のクエリを使用して、すべてのTransactionイベントの平均継続時間を確認します。

SELECT average(duration)
FROM Transaction
A screenshot of a query selecting the average duration from transaction

NRQL には、イベント データの集計に使用できる多くの組み込み関数があります。一般的に使用される関数には、 max()min()average()median() 、およびpercentile()が含まれます。次のクエリを使用して、過去 60 分間で最も遅いトランザクションの期間を NRDB に問い合わせることができます。これを行うには、NRDB に max(duration).

SELECT max(duration)
FROM Transaction
A screenshot of a query selecting the maximum duration from transaction

これで、過去 60 分間で最も遅いカスタマー エクスペリエンスにかかった時間がわかりました。次に、逆数を見つけて、NRDB にmin(duration)を問い合わせて、最速のエクスペリエンスがどれくらいだったかを確認します。

SELECT min(duration)
FROM Transaction
A screenshot of a query selecting the minimum duration from transaction

ご覧のとおり、 max()min()は両方とも重要なデータ ポイントを返します。 しかし、データに対して演算を実行したい場合はどうすればよいでしょうか? sum()を使用すると、数値属性に対して基本的な加算を行うことができます。 このクエリでは、 databaseCallCountという新しい属性を使用します。 この属性は、各トランザクションが行うデータベース呼び出しの数をカウントします。 これらを追加すると、デフォルトの 60 分の時間枠内のデータベース呼び出しの総量を取得できます (アプリがデータベースと通信しない場合、これは 0 になります)。

SELECT sum(databaseCallCount)
FROM Transaction
A screenshot of a query selecting the sum of the databaseCallCount from transaction

最後に、記録されたすべてのトランザクション イベントをcount(*)でカウントすることもできます。このクエリを使用すると、New Relic APM に報告するすべてのアプリケーションについて、記録されたすべてのイベントをカウントできます。

SELECT count(*)
FROM Transaction
A screenshot of a query selecting all recorded transactions

データについて多くのことを知ることができるようになりました。パフォーマンスの境界を測定したり、イベント データをグループ化したり、選択した属性に関する情報を計算したりすることもできます。 期間を選択し、 averagemax 、およびmin値を計算し、数値属性を追加して、一定期間にわたるすべてのイベントをカウントしました。 このようにデータを操作すると、データを視覚化して表示するときに役立ち、パフォーマンスの問題を特定しやすくなります。 次のステップは、時間範囲の使用です。

3. 時間範囲を使用する

NRDB のすべてのデータにはtimestampがあり、すべてのクエリは時間範囲内のデータのサブセットで動作します。NRQL クエリで時間範囲を指定しない場合、前に見たようにデフォルトで過去 60 分間が返されます。しかし、異なる時間範囲のデータを表示したい場合はどうすればよいでしょうか?表示されるデータ ウィンドウをどのように制御しますか?これを行うには、 SINCEおよびUNTILキーワードを使用してクエリの時間範囲の開始と終了を指定します。

SELECT average(duration)
FROM Transaction
SINCE 1 day ago
A screenshot of a query selecting the average duration since 1 day ago

dayweekhourminute 、またはそれらの複数形などのキーワードを使用して、クエリを実行するタイミングを基準とした時間範囲を指定することもできます。 SINCE todaySINCE this weekのような論理式を使用することもできます。

SELECT average(duration)
FROM Transaction
SINCE this week
A screenshot of a query selecting the average duration since 1 week ago

相対時間範囲を示す別のクエリを次に示します。相対時間を指定する場合は、キーワードagoを含める必要があることに注意してください。

SELECT average(duration)
FROM Transaction
SINCE 1 week ago
UNTIL 2 days ago
A screenshot of a query selecting the average duration since 1 week ago until 2 days ago

データをさらに細かく制御できるようになりました。クエリに時間枠を追加することで、表示するデータ ウィンドウを正確に定義できます。これらのコントロールを使用すると、データ レポートの開始場所と終了場所を定義することで、必要なデータに焦点を当てることができます。また、ウィンドウを選択し、 weekdayhourminute 、およびそれらの複数形などの一般的な用語を使用しました。次のステップは、時系列のクエリです。

4. 時系列のクエリ

一般的な NRQL の使用例は、値が時間の経過とともにどのように変化するかを照会することです。このタイプのクエリは、折れ線グラフ、面グラフ、およびその他の視覚化用のデータを提供します。いくつかのクエリを実行して、集計関数average()max()min()sum() 、およびcount()を調査しました。ここで、この例を使用して、集計関数で作成された任意のクエリを取得し、 TIMESERIESキーワードを追加して時間の経過に伴う値をプロットする方法を確認します。

SELECT average(duration)
FROM Transaction
SINCE 1 day ago
TIMESERIES
A screenshot of a query that selects the average duration since 1 day ago with a time series

時系列クエリは、指定された期間にわたってデータをバケットと呼ばれる複数の領域に分割します。 NRDB にバケットの幅の値を選択させることも、独自の値を選択することもできます。 このクエリを使用して、返されたデータを 1 時間のバケットに整理して、アプリケーション トランザクションの平均期間を NRDB に表示するように要求します。

SELECT average(duration)
FROM Transaction
SINCE 1 day ago
TIMESERIES 1 hour
A screenshot of a query selecting the average duration since 1 day ago using 1 hour buckets

プロットされる 1 日間の期間にわたって 24 個のデータ ポイントしかないため、より平坦なグラフが返される可能性があることに注意してください。 しかし、可能な限り最大の粒度で確認したい場合はどうすればよいでしょうか? どの時系列クエリでも最大 366 個のデータ バケットを使用できます。つまり、24 時間で可能な最大の粒度は、データを 4 分間のウィンドウにバケット化することです。 TIMESERIES 4 minutesまたはTIMESERIES MAXを使用してこれをクエリします。

SELECT average(duration)
FROM Transaction
SINCE 1 day ago
TIMESERIES MAX
A screenshot of a query selecting the average duration since 1 ago using the maximum number of buckets

これで、要約された数字から、時間の経過に伴うデータの傾向を示す折れ線グラフまで、データの視覚化が新たなレベルに到達しました。 ご覧のとおり、 TIMESERIES使用すると、指定したウィンドウの視覚化、粒度、データの平均化を完全に制御できます。 次のステップでは、 WHERE句を使用します。

5. WHERE句を使用する

場合によっては、NRDB データの特定のサブセットに対してクエリを実行したい場合があります。たとえば、アプリケーションの平均応答時間を照会する場合、 transactionTypeという属性を使用できます。これは、トランザクションがWebまたはNon-Web (cron ジョブまたはキュー タスクなど) トランザクションであったかどうかを指定します。この例を使用して、 Webトランザクション タイプのデータのみを返すクエリを作成します。

SELECT average(duration)
FROM Transaction
WHERE transactionType='Web'
TIMESERIES
A screenshot of a query selecting the average duration for Web transaction types with a time series

また、 ANDORを組み合わせてより複雑なクエリを作成し、括弧()を使用してこれらの連携方法を制御することもできます。このクエリは、100 ミリ秒よりも高速で、応答コードが 200 または 302 の「Web」トランザクションの平均応答時間を示します。ORを制御するために括弧を使用していることに注意してください。

SELECT average(duration)
FROM Transaction
WHERE transactionType='Web'
AND duration < 0.1
AND (httpResponseCode=200
OR httpResponseCode=302)
TIMESERIES
A screenshot of a query selecting the average duration for Web transaction types with a duration of less than 0.1 seconds with the response codes 200 or 302 with a time series

これまでに作成したすべてのクエリは、指定された時間枠内で利用可能なすべてのデータに対してアクションを実行しました。しかし、不要なデータを除外することも重要です。上記の例は、トランザクションの種類をフィルタリングする場合や、特定の応答コードが発生した場合に役立ちます。同様に、特定のappName 、トランザクションname 、またはデータにタグ付けしたカスタム属性にフィルターをかけることもできます。チュートリアルの最後のステップであるファセット クエリの使用に進みます。

6. クエリをファセット化する

多くの場合、特定の属性でグループ化された "上位 N" の値を特定したいことがあります。NRQL では、 FACETを使用してこれを行います。たとえば、平均して観測された最も遅いTransaction呼び出しを、名前別にグループ化してクエリできます。これを「名前によるファセット」と考えてください。

SELECT average(duration)
FROM Transaction
FACET name
SINCE 1 day ago
A screenshot of a query that selects the average duration since 1 day ago faceted by name

デフォルトでは、ファセット クエリは上位 10 件の結果を返しますが、 LIMITを配置することで返される結果の数をカスタマイズできます。この例では、 TIMESERIESを使用して、折れ線グラフに表示される上位 5 つの結果を取得します。

SELECT average(duration)
FROM Transaction
FACET name
SINCE 3 hours ago
LIMIT 5
TIMESERIES
A screenshot of a query selecting the average duration from the top 4 results since 3 hours ago grouped by name with a time series

しかし、折れ線グラフが必要ない場合や、トランザクションのより大きなリストが必要な場合があります。TIMESERIESを削除すると、棒グラフまたは円グラフを表示でき、 LIMITを増やすことでリストの範囲を広げることができます。

SELECT average(duration)
FROM Transaction
FACET name
SINCE 3 hours ago
LIMIT 20
A screenshot of a query selecting the average duration from the top 20 results since 3 hours ago grouped by name without a time series

最後に、Web トランザクションの量を比較するもう少し複雑なクエリを次に示します。これは、New Relic に報告する個々のアプリケーションごとに分類されています。

SELECT count(*)
FROM Transaction
WHERE transactionType='Web'
FACET appName
LIMIT 5
SINCE 6 hours ago
TIMESERIES
A screenshot of a query selecting all web transactions from the top 5 results since 6 hours ago grouped by appName with a time series

グループ化または「ファセット化」により、データを次元化できます。集計関数を適用する場合、 FACETを使用して、イベント データをレポートする任意の属性 (デフォルトまたはカスタム) でグループ化できます ( WHERE句と同様)。データにカスタム属性を追加するか、新しいカスタム イベントをレポートして、結果のデータ セットをより直接的に調査できるようにすることをお勧めします。

おめでとうございます: 最初の NRQL チュートリアルを完了しました!ここまでできれば、NRQL を使用したイベント データのクエリの基本を理解できたことになります。

次は何ですか?

より高度な概念とユースケースをカバーするさらに 3 つのチュートリアルでさらに多くの NRQL を探索できます。最初にデータの処理に関するチュートリアルに進み、次にダッシュボードの高度化に関するチュートリアルに進み、最後に最も高度な NRQL 関数に関するチュートリアルでシリーズを終了することをお勧めします。

Copyright © 2024 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.