• 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

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

SELECT *
FROM Transaction
LIMIT 1

重要

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

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

SELECT name, duration
FROM Transaction

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

2.データの集計

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

SELECT average(duration)
FROM Transaction

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

SELECT max(duration)
FROM Transaction

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

SELECT min(duration)
FROM Transaction

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

SELECT sum(databaseCallCount)
FROM Transaction

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

SELECT count(*)
FROM Transaction

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

3. 時間範囲を使用する

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

SELECT average(duration)
FROM Transaction
SINCE 1 day ago

dayweekhourminute 、またはそれらに相当する複数形などのキーワードを使用して、クエリを作成する時間範囲を指定することもできます。SINCE今日やSINCE今週などの論理式を使用することもできます。

SELECT average(duration)
FROM Transaction
SINCE this week

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

SELECT average(duration)
FROM Transaction
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

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

SELECT average(duration)
FROM Transaction
SINCE 1 day ago
TIMESERIES 1 hour

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

SELECT average(duration)
FROM Transaction
SINCE 1 day ago
TIMESERIES MAX

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

5. WHERE句を使用する

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

SELECT average(duration)
FROM Transaction
WHERE transactionType='Web'
TIMESERIES

また、 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

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

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

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

SELECT average(duration)
FROM Transaction
FACET name
SINCE 1 day ago

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

SELECT average(duration)
FROM Transaction
FACET name
SINCE 3 hours ago
LIMIT 5
TIMESERIES

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

SELECT average(duration)
FROM Transaction
FACET name
SINCE 3 hours ago
LIMIT 20

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

SELECT count(*)
FROM Transaction
WHERE transactionType='Web'
FACET appName
LIMIT 5
SINCE 6 hours ago
TIMESERIES

グループ化または「ファセット」により、データの次元を高めることができます。集計関数を適用する場合、 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.