NRQL とは 、 NRQL の仕組み、 NRQLと チャートやダッシュボードとの関係 など、他のトピックで NRQL の基本を学んだ後は、このチュートリアルの例を試す準備ができています!このチュートリアルでは、データを使用していくつかの基本的な NRQL クエリを作成するのに役立つ、言語内のいくつかの基本的な概念について説明します。次の方法が含まれます。
SELECT
を使用し、FROM
- 使用する
LIMIT
- 属性を指定する
average()
、max()
、min()
、sum()
、およびcount()
SINCE
を使用し、UNTIL
- 折れ線グラフをプロットする
TIMESERIES
- を使用してフィルタリングする
WHERE
- を使用して属性をグループ化する
FACET
前提条件
このチュートリアルを進めるために必要なのは、New Relic プラットフォームにいくつかのデータを取り込むことだけです。 New Relic を初めて使用し、NRQL をいかに簡単に使用できるかを知りたい場合は、無料でプラットフォームを使い始めて、チュートリアルに従うことができます。 あなたがしなければならないことは次のとおりです。
- まだお持ちでない場合は、無料のアカウントにサインアップしてください。
- 当社のエージェントと統合を使用して、一般的なフレームワークやツールからデータを自動的に収集します。
- New Relic のセットアップ方法に関する推奨パスについては、クイック リリース ガイドを参照してください。 クエリするデータの取り込みを開始すると、このチュートリアルまたはこのシリーズの他のチュートリアルを使用する準備が整います。
始める準備はできていますか?さあ行こう!
1. 最初のクエリを作成します
クエリビルダーで開始するのに最適な場所は、New Relic APM によって収集されたTransaction
と呼ばれる NRDB の単一のイベントタイプを調べることです。すべての NRQL クエリにはSELECT
句とFROM
句が必要です。データをSELECT
し、そのデータがFROM
である場所を指定する必要があります。Transaction
イベント タイプからすべてを選択する次の基本的なクエリから始めます。
SELECT *FROM Transaction
これで、結果のボリュームを制御する方法ができました。しかし、すべての属性が必要ない場合はどうすればよいでしょうか?特定のデータ ポイントのみを表示したい場合はどうすればよいでしょうか。SQL と同様に、 *
を必要な属性の名前に置き換えることで、数文字だけでこれを行うことができます。この場合、トランザクションの名前と所要時間を尋ねることができます。
SELECT name, durationFROM Transaction
これで、イベントのすべてまたは一部の特定の属性を返すことができるクエリと、特定の数のイベントをクエリするクエリを作成できました。次のステップ、つまりデータの集約に取り掛かります。
2.データの集計
ご覧のとおり、 max()
とmin()
は両方とも重要なデータ ポイントを返します。 しかし、データに対して演算を実行したい場合はどうすればよいでしょうか? sum()
を使用すると、数値属性に対して基本的な加算を行うことができます。 このクエリでは、 databaseCallCount
という新しい属性を使用します。 この属性は、各トランザクションが行うデータベース呼び出しの数をカウントします。 これらを追加すると、デフォルトの 60 分の時間枠内のデータベース呼び出しの総量を取得できます (アプリがデータベースと通信しない場合、これは 0 になります)。
最後に、記録されたすべてのトランザクション イベントをcount(*)
でカウントすることもできます。このクエリを使用すると、New Relic APM に報告するすべてのアプリケーションについて、記録されたすべてのイベントをカウントできます。
データについて多くのことを知ることができるようになりました。パフォーマンスの境界を測定したり、イベント データをグループ化したり、選択した属性に関する情報を計算したりすることもできます。 期間を選択し、 average
、 max
、およびmin
値を計算し、数値属性を追加して、一定期間にわたるすべてのイベントをカウントしました。 このようにデータを操作すると、データを視覚化して表示するときに役立ち、パフォーマンスの問題を特定しやすくなります。 次のステップは、時間範囲の使用です。
3. 時間範囲を使用する
相対時間範囲を示す別のクエリを次に示します。相対時間を指定する場合は、キーワードago
を含める必要があることに注意してください。
データをさらに細かく制御できるようになりました。クエリに時間枠を追加することで、表示するデータ ウィンドウを正確に定義できます。これらのコントロールを使用すると、データ レポートの開始場所と終了場所を定義することで、必要なデータに焦点を当てることができます。また、ウィンドウを選択し、 week
、 day
、 hour
、 minute
、およびそれらの複数形などの一般的な用語を使用しました。次のステップは、時系列のクエリです。
4. 時系列のクエリ
一般的な NRQL の使用例は、値が時間の経過とともにどのように変化するかを照会することです。このタイプのクエリは、折れ線グラフ、面グラフ、およびその他の視覚化用のデータを提供します。いくつかのクエリを実行して、集計関数average()
、 max()
、 min()
、 sum()
、およびcount()
を調査しました。ここで、この例を使用して、集計関数で作成された任意のクエリを取得し、 TIMESERIES
キーワードを追加して時間の経過に伴う値をプロットする方法を確認します。
SELECT average(duration) FROM Transaction SINCE 1 day ago TIMESERIES
プロットされる 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
また、 AND
とOR
を組み合わせてより複雑なクエリを作成し、括弧(
と)
を使用してこれらの連携方法を制御することもできます。このクエリは、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. クエリをファセット化する
最後に、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 関数に関するチュートリアルでシリーズを終了することをお勧めします。