New Relicデータをさらに理解したいですか?New Relicクエリ言語(NRQL)が役に立ちます。NRQLを使用すると、データをリアルタイムで分析できます。始めは大変そうに見えますが、心配する必要はありません。このブログシリーズでは、NRQLをより深く理解し、データについてさらに深い洞察を得る上で役立つ、10個の重要なNRQL関数と句について説明します。これらの関数と句は、パーセンテージの計算、ヒートマップの作成、条件付きウィジェットの作成などに役立ちます。NRQLを使用すると、データ分析からさらに多くのことを得ることができます。NRQLを使用してデータから貴重な洞察を得る方法を学びましょう。

パート1では、データのクエリに必要な基本的なNRQL関数について説明しました。パート2では、NRQLのより高度な機能について詳しく説明します。ヒストグラム、ヒートマップ、高度な比較演算子などのトピックを取り上げます。NRQLを使用して複雑なデータセットを分析し、データのパターンと傾向を特定する方法を探ります。また、効率的なクエリを作成し、NRQLクエリのパフォーマンスを最適化するためのベストプラクティスをいくつか見ていきます。

No6:Latest

latest()関数を使用すると、ユーザーは指定された期間における属性の最新の値を取得できます。単一の属性を入力として受け取り、最後に記録された値を返すことができます。

PageViewイベントからマップウィジェットの属性 city の最新の値を取得する簡単な例を次に示します:

FROM PageView
SELECT LATEST(city) AS 'Name:City'
FACET STRING(asnLatitude, precision: 5) AS 'Lat',
      STRING(asnLongitude, precision: 5) As 'Lang'
SINCE 1 HOUR AGO
LIMIT MAX

Map widget example with latest() clause


References

  • 詳細については、latest をご覧ください。
  • 詳細については、map widget をご覧ください。

No7:If

条件付き出力を取得するためにクエリで単純なif-then-else制御フローを実行する必要がある場合、どうしますか?NRQLにはif()関数が用意されており、SELECT句と組み合わせると便利です。

次に、ワークロードステータスをチェックし、statusValueプロパティに基づいて出力をOnまたはOffとして表示する簡単な例を示します:

FROM WorkloadStatus
SELECT LATEST(IF(statusValue = 'OPERATIONAL', '🟢 On', '🔴 Off')) AS 'Workload Status' 
SINCE 30 SECONDS AGO

7.if().png

参考資料

  • 詳細については、 if() をご覧ください。

No8:Aparse

aparseは、文字列から特定の値を抽出する優れた関数です。これにより、構造化データを含む文字列を解析し、そこから特定の値を抽出できます。これは、ログデータやその他の種類の非構造化データを分析する必要がある場合に特に役立ちます。

aparse()は2つの引数を取ります: 文字列値を持つ属性。

  • アンカー文字列と抽出する文字を含む文字パターン。たとえば、'www.*.com' を使用すると、URLからドメイン部分のみを抽出できます。

次の画像は、ホストの場所にプレフィックス値が含まれている例です: NRQL without aparse

次のサンプルでは、クエリは、指定されたアンカー/正規表現パターンに基づいてプレフィックス部分を削除した後、場所の名前を保持しながら、結果から文字列の必要な部分のみを抽出します。

SELECT APARSE(hostname,'host-tower-*') AS hostLocation
FROM SystemSample
WHERE hostname LIKE '%tower%'

NRQL with aparse to capture location


参考資料

  • 詳細については、 aparse をご覧ください。

No9:Subqueries

NRQLは、他のクエリ内のクエリであるサブクエリもサポートします。サブクエリは、NRQLで複数のクエリを併用し、複数のさまざまなデータセットから結果を生成する強力な方法です。

以下は、ホスト名を明示的に指定せずに、ログエラーのあるホストのすべてのトランザクションをフィルタリングして検索する基本的な例です:

FROM Transaction
SELECT appId, appName, containerId, request.method
WHERE hostname = (
	FROM Log
	SELECT latest(host)
	WHERE level = 'ERROR'
)

9.subqueries.png

IN句を使用したサブクエリ

サブクエリのもう 1 つの優れた使用例は、条件に複数の値を記述する代わりに、より動的なクエリを作成したい場合です。サブクエリでIN()句を使用できます。これは、フィルタリング基準が時間経過とともに変更または増加する可能性がある場合に便利です。

使用例の例を次に示します: サンプルクエリを使用すると、すべてのエンティティにわたるTransactionErrorのすべてのトランザクションの平均継続時間を見つけることができます。このクエリはすべてのentity.guidを検索します。サブクエリを使用して、その結果をaverage(duration)の集計用にWHERE句に適用します。

SELECT AVERAGE(duration) FROM Transaction
WHERE entity.guid IN (SELECT UNIQUES(entity.guid)FROM TransactionError)
FACET appName TIMESERIES LIMIT 3

9.a_IN_clause.png


参考資料

  • 詳細については、subquery をご覧ください。

No10:Histograms and heatmaps

ヒストグラム

ヒストグラムを使用すると、ユーザーはデータのパターン、分布、傾向をすばやく特定できます。

histogram()は3つの引数を受け入れます: 属性名 サンプル範囲の最大値 範囲境界を含むバケットの総数(1~500)

**PageViewからの応答時間のヒストグラムを、20個のバケットにわたって最大10秒の範囲で生成できます。このクエリは基本的に、**PageViewからの属性「期間」に対するY軸のリクエストの総数に対して、X軸に20の異なる時間チャンク(またはバケット)の出力を生成します。

SELECT HISTOGRAM(duration, 10, 20) FROM PageView SINCE 1 week ago

Histogram() to showcase PageView duration across timebuckets

ヒートマップ

Heatmap()は、データセット内のパターンを視覚化するのに役立ちます。値が増加または減少すると、ヒートマップ内の色の強度が明るい状態から暗い状態に変化します。

ヒートマップを作成するには、[Histogram()](https://docs.newrelic.com/jp/docs/insights/nrql-new-relic-query-language/nrql-reference/nrql-syntax-components-functions/#func-histogram)関数を使用します。数値の属性を1つだけ指定し、[FACET](https://docs.newrelic.com/jp/docs/insights/nrql-new-relic-query-language/nrql-reference/nrql-syntax-components-functions/#sel-facet) 句を追加します。 以下は、過去3時間に当社のウェブサイトにアクセスした、さまざまなオペレーティングシステムを示すヒートマップの例です。

SELECT HISTOGRAM(duration) FROM PageView FACET userAgentOS SINCE 3 HOURS AGO

Heatmap showing PageViews by userAgentOS


参考資料

  • 詳細については、histograms をご覧ください。

NRQLをマスターすると、データを取得して解釈できるようになり、全体像を理解しやすい部分に分解できるようになります。これにより、問題の発生時に問題を特定し、データをリアルタイムで分析して、貴重な洞察を得ることができます。パフォーマンスの最適化、トレンドの把握、またはビジネス上の意思決定を推進する主要なメトリクスの監視を検討している場合でも、NRQLはデータを包括的に理解する上で役立つ、不可欠なツールです。