メトリクスがメトリクス API (その API を使用する統合からのものを含む) を介して New Relic に報告されると、データはMetric
データ型 として報告され、クエリに使用できます。
このドキュメントでは、次のことを説明しています。
APMメトリクスのタイムスライスデータの照会 APMでは、メトリックタイムスライスデータと呼ばれる特定のタイプのデータを報告しています。このデータを照会する方法については、 Query metric timeslice data を参照してください。
重要 タイムスライスメトリックをディメンションメトリックまたはイベントデータと組み合わせてクエリすることはできません。 newrelic.timeslice.value
またはapm.*
メトリックを含むクエリは、APMメトリックのみを返すことができます。
他のタイプのメトリクスについては、 Metric data types を参照してください。
メトリクスの表示と照会 NRQL を使用して、クエリビルダー またはNerdGraphAPI を使用してメトリックデータをクエリできます。
メトリックをクエリするには、次のクエリ形式を使用できます。
FROM Metric SELECT function(metric_name) WHERE attribute=value FACET attribute TIMESERIES
どのメトリック データ型に対してどの関数がサポートされているかについては、「メトリック データ構造 」を参照してください。
グラフ化するメトリックの名前を、適切な値関数を使用してSELECT
句に追加します。 WHERE
}句とFACET
句は、属性値とともに使用できます。データをグラフ化する場合は、キーワードTIMESERIES
を含めることを忘れないでください。
この例は、クラスターfoo
のCPU使用率を秒単位でグラフ化する方法を示しています。このクエリは、属性containerName
およびclusterName
を持つcontainer_cpu_usage_seconds_total
という名前のcount
メトリックが与えられた場合に、コンテナごとにCPU使用率を分類します。
FROM Metric select sum(container_cpu_usage_seconds_total)
WHERE clusterName = 'foo'
1分ごとのCPU使用率(変化率)を知りたい場合は、上記のクエリにrate関数を追加します。
FROM Metric select rate(sum(container_cpu_usage_seconds_total), 1 minute)
WHERE clusterName = 'foo'
メトリクスクエリの例を見る 前述の例では、メトリック・クエリの基本的な形式を示しましたが、NRQLはメトリック・データのチャート化、探索、分析にも使用できます。
複数の指標を表示 SELECT
句にコンマで区切られたメトリックのリストを指定して、単一のクエリを使用して複数のメトリックをグラフ化します。たとえば、コンテナのメモリ使用量とメモリ制限メトリックをグラフ化するには、次のクエリを使用します。
SELECT latest(container_memory_usage_bytes), latest(container_spec_memory_limit_bytes)
WHERE containerName = 'inventory'
以下に説明するように、 ワイルドカード を使って行うこともできます。
メートル法のデータを使った数学的演算 1つまたは複数のメトリクスに対して数学的な演算を行い、新しい派生メトリクスを計算します。利用可能なメモリを監視するには、前述の例で使用した2つのメトリクスから利用可能なメモリの割合を計算します。
SELECT (latest(container_spec_memory_limit_bytes) - latest(container_memory_usage_bytes))
/ latest(container_spec_memory_limit_bytes)
WHERE containerName = 'inventory'
以下に説明するように、 ワイルドカード を使って行うこともできます。
フィルターを使って特定の時系列を選択 SELECT
のすべてに適用されるWHERE
句を使用することに加えて、NRQLは、グラフ化または操作する特定の時系列を選択するために使用できるfilter
と呼ばれる別の集計関数を提供します。
次の例は、ポッド内の2つの特定のコンテナのメモリ使用量を合計することによって計算される"Total (k8s)"
というラベルの付いたメモリ使用量メトリックを示しています。
container_memory_usage_bytes),
WHERE containerName = 'discovery')
container_memory_usage_bytes),
WHERE containerName = 'my-proxy')
WHERE clusterName = 'my-cluster' AND podName LIKE 'my-pilot-%'
メトリックの生データポイントを表示 FROM Metric
を使用してメトリックデータをクエリする場合、New Relicは、クエリウィンドウの長さとTIMESERIES
キーワードの引数として指定されたバケットサイズに応じて、クエリで使用する特定の集計を自動的に選択します。これにより、効率的なクエリとチャートの解決が保証されます。この動作をオーバーライドして生のメトリックデータポイントを表示または操作する場合は、クエリでオプションのRAW
キーワードを使用します。
これらの生のメトリックデータポイントにクエリを実行する場合、クエリのタイムウィンドウは48時間に制限されています。48時間を超える生のメトリックデータにアクセスしようとするクエリは、クエリエラーになります。
この例では、特定のメトリックについて受信した直近の20個のデータポイントをリストアップする方法を示します。
FROM Metric SELECT * WHERE metricName = 'container_fs_usage_bytes' LIMIT 20 RAW
ワイルドカードを使って複数のメトリクスを検索 ワイルドカードは、NRQLでは%
文字で表されます。標準の命名規則を使用する複数のメトリックをクエリする場合は、ワイルドカード機能を使用して、各メトリック名を個別に指定しなくても、すべてのメトリックの結果を返すことができます。
ワイルドカードがあなたをサポートします。
指標を集約し、結果をグラフ化する FACET
グラフのメトリック名による結果指定された命名規則に合致するすべてのメトリクスを検索し、チャート化する。 ワイルドカードは、既存の命名規則に一致する新しいメトリックを後で追加する場合に特に役立ちます。クエリで各メトリック名を書き出す代わりに%
を使用することで、新しいメトリックを追加するときにクエリを書き直す必要がなくなります。
同様のタスクを実行する複数のアルゴリズムがあるとします。次のようなメトリクスを定義して、異なるアルゴリズムの持続時間を表示することができます。
myNeatProcess.algorithm1.duration
myNeatProcess.algorithm2.duration
myNeatProcess.algorithm3.duration
クエリで使用する場合、 myNeatProcess.%.duration
は上記の3つのアルゴリズムすべての結果を返します。後でalgorithm4
、 algorithm5
、およびalgorithm6
という名前の新しいアルゴリズムを作成すると、同じクエリで6つのアルゴリズムすべての結果が返されます。
ワイルドカードで複数の指標を表示 SELECT
句でワイルドカード( %
)を使用すると、1つのクエリを使用して複数の指標をグラフ化できます。たとえば、上記の例のすべてのアルゴリズムをクエリし、各アルゴリズムの平均期間についてグラフに線をプロットするには、次のクエリを使用します。
SELECT average(myNeatProcess.%.duration)
FACET metricName TIMESERIES
ワイルドカードを使用したメートル法データの算術演算 また、ワイルドカードを使って、複数のメトリクスに対して演算を行い、新しいメトリクスを計算することもできます。上の例で挙げたすべてのアルゴリズムの平均継続時間を計算することができます。
SELECT average(myNeatProcess.%.duration) TIMESERIES
一つのアルゴリズムが全体のランタイムに占める割合を計算することができます。
SELECT myNeatProcess.algorithm1.duration / sum(myNeatProcess.%.duration) TIMESERIES
を使用して個々のフィールドの結果を返します。 getField()
Metric
データには複数のタイプ ( gauge
やcount
など) があり、各タイプには複数の関連するfields があります。 使用可能なフィールドの種類の詳細については、 getField()
を参照してください。
これらのフィールドを抽出するには、 getField()
を使用できます。 たとえば、 WHERE
句で比較を行うために Metrics 内の単一の値を使用する場合は、 getField(metricName, field)
または短縮構文metricName[field]
を使用できます。
特定のホストに対するすべてのメトリック名をリストアップ メトリックの平均値はcount
に対してtotal
として計算されるため、次のクエリはaverage()
値関数の結果が2より大きいメトリックデータを返します。
SELECT average(apm.service.transaction.duration)
AND getField(apm.service.transaction.duration, total) / getField(apm.service.transaction.duration, count) > 2
または、次の省略形を使用することもできます。
SELECT average(apm.service.transaction.duration)
AND apm.service.transaction.duration[total] / apm.service.transaction.duration[count] > 2
ゲージメトリクスの一覧 この例のクエリは、ゲージメトリクスのリストを返します。
SELECT uniques(metricName)
WHERE getField(%, type) = 'gauge'
または、次の省略形を使用することもできます。
SELECT uniques(metricName)
一致するmetricName
をターゲットにするには、 %
ワイルドカードを使用することに注意してください。
メトリクスデータを見る NRQL keyset
およびuniques
関数をmetricName
属性(すべてのメトリックで使用可能)と一緒に使用して、アカウントで使用可能なすべてのメトリックを一覧表示したり、特定のメトリックで使用可能な属性を検出したりすることができます。
アカウント内のすべてのメトリック名を一覧表示 FROM Metric SELECT uniques(metricName)
特定のホストに対するすべてのメトリック名をリストアップ FROM Metric SELECT uniques(metricName) WHERE hostname = 'host1.mycompany.com'
特定のメトリックの属性キーを表示する FROM Metric SELECT keyset() WHERE metricName = METRIC_NAME