NRQL とは 、 NRQL の仕組み 、 NRQL と チャートやダッシュボードとの関係 など、 他のトピックで NRQL の基本を学んだ後は、このチュートリアルの例を試す準備ができています!このチュートリアルでは、データを使用していくつかの基本的な NRQL クエリを作成するのに役立つ、言語内のいくつかの基本的な概念について説明します。次の方法が含まれます。
SELECT
を使用し、 FROM
使用する LIMIT
属性を指定する average()
、 max()
、 min()
、 sum()
、および count()
SINCE
を使用し、 UNTIL
折れ線グラフをプロットする TIMESERIES
を使用してフィルタリングする WHERE
を使用して属性をグループ化する FACET
New Relic プラットフォーム内でこのチュートリアルを実行したいですか?opensource.newrelic.com に NRQL レッスン アプリケーションが含まれており、同じ手順と例を使用して、アプリケーションを離れることなく NRQL の価値と能力をすばやく確認できます。以下のビデオは、NRQL レッスンのインストール方法を示しています。
New Relic を初めて使用する方で、NRQL の使用がいかに簡単かを知りたい場合は、無料でプラットフォームを使い始めて、チュートリアルに従ってください。あなたがしなければならないことは次のとおりです。
まだお持ちでない場合は、無料のアカウントにサインアップして ください。 エージェントと統合 を使用して、一般的なフレームワークとツールからデータを自動的に収集します。New Relic のセットアップ方法に関する推奨パスについては、クイック起動ガイド を参照してください。クエリを実行するデータの取り込みを開始し、このチュートリアルまたはいずれかのチュートリアルを使用するための準備をすべて整えることができます。 以下の手順のスクリーンショットのいずれかをクリックして、サンプル クエリがクエリ ビルダーでどのように表示されるかを確認することもできます。始める準備はできましたか?行こう!
1.最初のクエリ クエリビルダー で開始するのに最適な場所は、New Relic APM によって収集されたTransaction
と呼ばれる NRDB の単一のイベントタイプを調べることです。すべての NRQL クエリにはSELECT
} 句とFROM
句が必要です。データをSELECT
し、そのデータがFROM
である場所を指定する必要があります。Transaction
イベント タイプからすべてを選択する次の基本的なクエリから始めます。
これにより、タイムスタンプと属性のコレクションを含む多くの結果が返されます。今のところ、必要な結果は 1 つだけなので、 LIMIT 1
を使用して結果を 1 つのレコードに制限できます。
重要 LIMIT
が指定されていない場合、クエリは、 SELECT *
クエリの場合は 100 のテーブル行のデフォルトを返し、 FACET
クエリとSELECT (attributes)
クエリの場合は 10 の集計値を返します。LIMIT MAX
を使用して、最大値まで任意の制限を指定できます。
これで、結果のボリュームを制御する方法ができました。しかし、すべての属性が必要ない場合はどうすればよいでしょうか?特定のデータ ポイントのみを表示したい場合はどうすればよいでしょうか。SQL と同様に、 *
を必要な属性の名前に置き換えることで、数文字だけでこれを行うことができます。この場合、トランザクションの名前と所要時間を尋ねることができます。
これで、イベントのすべてまたは一部の特定の属性を返すことができるクエリと、特定の数のイベントをクエリするクエリを作成できました。次のステップ、つまりデータの集約に取り掛かります。
2.データの集計 場合によっては、個々のデータ ポイントを表示するのではなく、多数のイベントにわたって要約された集計データを表示したい場合があります。これが NRDB の強みです。NRDB は、何十億ものイベントをスキャンし、データに関する質問に即座にリアルタイムで回答を提供できます。たとえば、各Transaction
イベントには、呼び出しの実行にかかった秒数を表す期間属性があります。次のクエリを使用して、すべてのTransaction
イベントの平均期間を調べます:
NRQL には、イベント データの集計に使用できる多くの組み込み関数があります。一般的に使用される関数には、 max()
、 min()
、 average()
、 median()
、およびpercentile()
が含まれます。次のクエリを使用して、過去 60 分間で最も遅いトランザクションの期間を NRDB に問い合わせることができます。これを行うには、NRDB に max(duration).
これで、過去 60 分間で最も遅いカスタマー エクスペリエンスにかかった時間がわかりました。次に、逆数を見つけて、NRDB にmin(duration)
を問い合わせて、最速のエクスペリエンスがどれくらいだったかを確認します。
ご覧のとおり、 max()
とmin()
の両方が重要なデータ ポイントを返します。ただし、データに対して算術演算を実行することもできます。sum()
を使用すると、数値属性で基本的な加算を行うことができます。このクエリでは、 databaseCallCount
という新しい属性を使用します。この属性は、各トランザクションが行うデータベース呼び出しの数をカウントします。それらを追加することで、デフォルトの 60 分の時間枠でデータベース呼び出しの合計量を取得できます (アプリがデータベースと通信しない場合、これは 0 になります)。
SELECT sum ( databaseCallCount )
最後に、記録されたすべてのトランザクション イベントをcount(*)
でカウントすることもできます。このクエリを使用すると、New Relic APM に報告するすべてのアプリケーションについて、記録されたすべてのイベントをカウントできます。
これで、データについて多くのことを知ることができます。パフォーマンスの境界を測定し、イベント データをグループ化し、選択した属性に関する情報を計算することもできます。期間を選択し、 average
、 max
、およびmin
の値を計算し、数値属性を追加し、期間中のすべてのイベントをカウントしました。このようなデータの操作は、データをビジュアライゼーションで表示する場合に役立ち、パフォーマンスの問題を特定するのに役立ちます。次のステップに進みましょう: 時間範囲を使用します。
3. 時間範囲を使用する NRDB のすべてのデータにはtimestamp
があり、すべてのクエリは時間範囲内のデータのサブセットで動作します。NRQL クエリで時間範囲を指定しない場合、前に見たようにデフォルトで過去 60 分間が返されます。しかし、異なる時間範囲のデータを表示したい場合はどうすればよいでしょうか?表示されるデータ ウィンドウをどのように制御しますか?これを行うには、 SINCE
およびUNTIL
キーワードを使用してクエリの時間範囲の開始と終了を指定します。
day
、 week
、 hour
、 minute
、またはそれらに相当する複数形などのキーワードを使用して、クエリを作成する時間範囲を指定することもできます。SINCE
今日やSINCE
今週などの論理式を使用することもできます。
相対時間範囲を示す別のクエリを次に示します。相対時間を指定する場合は、キーワードago
を含める必要があることに注意してください。
これで、データをさらに細かく制御できるようになりました。クエリに時間枠を追加することで、表示するデータのウィンドウを正確に定義できます。これらのコントロールを使用すると、データ レポートの開始位置と終了位置を定義することで、必要なデータに焦点を合わせることができます。また、ウィンドウを選択し、 week
、 day
、 hour
、 minute
、およびそれらの複数形などの一般的な用語を使用しました。次のステップ、時系列のクエリに進みます。
4. 時系列のクエリ 一般的な NRQL の使用例は、値が時間の経過とともにどのように変化するかを照会することです。このタイプのクエリは、折れ線グラフ、面グラフ、およびその他の視覚化用のデータを提供します。いくつかのクエリを実行して、集計関数average()
、 max()
、 min()
、 sum()
、およびcount()
を調査しました。ここで、この例を使用して、集計関数で作成された任意のクエリを取得し、 TIMESERIES
キーワードを追加して時間の経過に伴う値をプロットする方法を確認します。
時系列クエリは、指定された期間にわたってデータをバケットと呼ばれるいくつかの領域に分割します。NRDB にそのバケットの幅の値を選択させるか、独自の値を選択させることができます。このクエリを使用して、NRDB にアプリケーション トランザクションの平均期間を表示し、返されたデータを 1 時間のバケットにまとめて表示します。
プロットされている 1 日の期間全体で 24 のデータ ポイントしかないため、これはより平坦なグラフを返す可能性があることに注意してください。しかし、可能な限り最大の粒度を確認したい場合はどうすればよいでしょうか?時系列クエリは最大 366 個のデータ バケットを持つことができます。つまり、24 時間で可能な最大粒度は、データを 4 分のウィンドウにバケット化することです。TIMESERIES 4 minutes
またはTIMESERIES MAX
を使用してこれをクエリします。
これで、集計された数値から時間の経過に伴うデータの傾向の折れ線グラフにまで、新しいレベルのデータ視覚化に到達しました。ご覧のとおり、 TIMESERIES
を使用すると、指定したウィンドウでの視覚化、粒度、データの平均化を完全に制御できます。次のステップに進みましょう。'Where' 句を使用します。
5. WHERE句を使用する 場合によっては、NRDB データの特定のサブセットに対してクエリを実行したい場合があります。たとえば、アプリケーションの平均応答時間を照会する場合、 transactionType
という属性を使用できます。これは、トランザクションがWeb
またはNon-Web
(cron ジョブまたはキュー タスクなど) トランザクションであったかどうかを指定します。この例を使用して、 Web
トランザクション タイプのデータのみを返すクエリを作成します。
WHERE transactionType = 'Web'
また、 AND
とOR
を組み合わせてより複雑なクエリを作成し、括弧(
と)
を使用してこれらの連携方法を制御することもできます。このクエリは、100 ミリ秒よりも高速で、応答コードが 200 または 302 の「Web」トランザクションの平均応答時間を示します。OR
を制御するために括弧を使用していることに注意してください。
WHERE transactionType = 'Web'
AND ( httpResponseCode = 200
これまでに作成したすべてのクエリは、指定された時間枠内で利用可能なすべてのデータに対してアクションを実行しました。しかし、不要なデータを除外することも重要です。上記の例は、トランザクションの種類をフィルタリングする場合や、特定の応答コードが発生した場合に役立ちます。同様に、特定のappName
、トランザクションname
、またはデータにタグ付けしたカスタム属性にフィルターをかけることもできます。チュートリアルの最後のステップであるファセット クエリの使用に進みます。
6.ファセットクエリを使用する 多くの場合、特定の属性でグループ化された "上位 N" の値を特定したいことがあります。NRQL では、 FACET
を使用してこれを行います。たとえば、平均して観測された最も遅いTransaction
呼び出しを、名前別にグループ化してクエリできます。これを「名前によるファセット」と考えてください。
デフォルトでは、ファセット クエリは上位 10 件の結果を返しますが、 LIMIT
を配置することで返される結果の数をカスタマイズできます。この例では、 TIMESERIES
を使用して、折れ線グラフに表示される上位 5 つの結果を取得します。
しかし、折れ線グラフが必要ない場合や、トランザクションのより大きなリストが必要な場合があります。TIMESERIES
を削除すると、棒グラフまたは円グラフを表示でき、 LIMIT
を増やすことでリストの範囲を広げることができます。
最後に、Web トランザクションの量を比較するもう少し複雑なクエリを次に示します。これは、New Relic に報告する個々のアプリケーションごとに分類されています。
WHERE transactionType = 'Web'
グループ化または「ファセット化」により、データを次元化できます。集計関数を適用する場合、 FACET
を使用して、イベント データをレポートする任意の属性 (デフォルトまたはカスタム) でグループ化できます ( WHERE
句と同様)。データにカスタム属性を追加 するか、新しいカスタム イベントをレポート して、結果のデータ セットをより直接的に調査できるようにすることをお勧めします。
おめでとうございます: 最初の NRQL チュートリアルを完了しました!ここまでできれば、NRQL を使用したイベント データのクエリの基本を理解できたことになります。
チュートリアルを読みましたが、まだアカウントを持っていませんか?まだお持ちでない場合は、以下で無料の New Relic アカウントを作成して、今すぐデータの監視を開始してください。