アプリのメトリクス名をリストする
アプリケーションで利用可能なメトリクス名を表示するには:
SELECT uniques(metricTimesliceName) FROM Metric WHERE appId = '$APP_ID' AND newrelic.timeslice.value IS NOT NULL SINCE 30 MINUTES AGO LIMIT MAX
アプリケーション名を使用してフィルタリングすることも可能:
SELECT uniques(metricTimesliceName) FROM Metric WHERE appName = '$APP_NAME' AND newrelic.timeslice.value IS NOT NULL SINCE 30 MINUTES AGO LIMIT MAX
または特定のエージェント (ホスト) を使用:
SELECT uniques(metricTimesliceName) FROM Metric WHERE realAgentId = '$AGENT_ID' AND newrelic.timeslice.value IS NOT NULL SINCE 30 MINUTES AGO LIMIT MAX
アプリのメトリックタイムスライスデータ値を取得する
REST API v2は、メトリクス名のリストと値のリストを受け取り、メトリックタイムスライスデータを取得します。
メトリクス名は同じなので、 NRQLクエリの metricTimesliceName
フィールドを使用してフィルタリングできます。
各API値はNRQL関数にマッピングできます。以下の表を参照してください。
たとえば、次のAPIリクエストの場合:
$curl -X GET "https://api.newrelic.com/v2/applications/$APP_ID/metrics/data.json" \> -H "X-Api-Key:$API_KEY" -i \> -d 'names[]=HttpDispatcher&values[]=average_call_time&values[]=call_count'
次のクエリを使用します。
SELECT count(newrelic.timeslice.value) AS call_count, average(newrelic.timeslice.value) * 1000 AS average_call_timeFROM MetricWHERE appId = $APP_ID AND metricTimesliceName = 'HttpDispatcher'
値(RPM) | NRQL関数 |
---|---|
average_response_time | average(newrelic.timeslice.value) * 1000 |
calls_per_minute | rate(count(newrelic.timeslice.value), 1 minute) |
call_count | count(newrelic.timeslice.value) |
min_response_time | min(newrelic.timeslice.value) * 1000 |
max_response_time | max(newrelic.timeslice.value) * 1000 |
average_exclusive_time | average(newrelic.timeslice.value['totalExclusive'] / newrelic.timeslice.value['count']) * 1000 |
average_value | average(newrelic.timeslice.value) |
total_call_time_per_minute | rate(sum(newrelic.timeslice.value), 1 minute) |
requests_per_minute | rate(count(newrelic.timeslice.value), 1 minute) |
standard_deviation | stddev(newrelic.timeslice.value) * 1000 |
average_time | average(newrelic.timeslice.value) * 1000 |
count | count(newrelic.timeslice.value) |
used_bytes_by_host | average(newrelic.timeslice.value) * 1024 * 1024 |
used_mb_by_host | average(newrelic.timeslice.value) |
total_used_mb | sum(newrelic.timeslice.value) |
average_call_time | average(newrelic.timeslice.value) * 1000 |
total_value | sum(newrelic.timeslice.value) |
min_value | min(newrelic.timeslice.value) |
max_value | max(newrelic.timeslice.value) |
rate | rate(sum(newrelic.timeslice.value), 1 second) |
throughput | rate(count(newrelic.timeslice.value), 1 second) |
as_percentage | average(newrelic.timeslice.value) * 100 |
errors_per_minute | rate(count(newrelic.timeslice.value), 1 minute) |
error_count | count(newrelic.timeslice.value) |
total_time | sum(newrelic.timeslice.value) * 1000 |
sessions_active | average(newrelic.timeslice.value) |
total_visits | sum(newrelic.timeslice.value) |
percent | average(newrelic.timeslice.value) * 100 |
percent(CPU/User Time) | 100 * sum(newrelic.timeslice.value) / $TIME_WINDOW_IN_SECONDS |
time_percentage | 100 * sum(newrelic.timeslice.value) / $TIME_WINDOW_IN_SECONDS |
utilization | 100 * sum(newrelic.timeslice.value) / $TIME_WINDOW_IN_SECONDS |
visits_percentage | 100 * sum(newrelic.timeslice.value) / $TIME_WINDOW_IN_SECONDS |
関数に$TIME_WINDOW_IN_SECONDS
が含まれている場合は、クエリを実行する時間枠に置き換える必要があります。
たとえば、30分の時間枠をクエリする場合は、 $TIME_WINDOW_IN_SECONDS
1800
に置き換えます。
Apdex メトリクス
値(RPM) | NRQL関数 |
---|---|
score | apdex(newrelic.timeslice.value) |
s | apdex(newrelic.timeslice.value) または count(newrelic.timeslice.value) |
t | apdex(newrelic.timeslice.value) または sum(newrelic.timeslice.value) |
f | apdex(newrelic.timeslice.value) または sum(newrelic.timeslice.value['totalExclusive']) |
count | apdex(newrelic.timeslice.value) |
value | apdex(newrelic.timeslice.value) |
threshold | max(newrelic.timeslice.value) |
threshold_min | min(newrelic.timeslice.value) |
エンドユーザーとモバイルのメトリクス
これらのメトリックは、REST API v2と同じ結果を返しますが、一部の結果はNew Relic UIに表示されるものと異なる場合があります。これは、 UIが時間区切りデータの代わりにイベントを使用しているためです。UIと同じ結果を取得したい場合は、イベントを直接クエリする必要があります。
値(RPM) | NRQL関数 |
---|---|
average_response_time | sum(newrelic.timeslice.value) / count(newrelic.timeslice.value) * 1000 |
error_percentage | (filter(count(newrelic.timeslice.value), WHERE metricTimesliceName = 'EndUser/errors') / filter(count(newrelic.timeslice.value), WHERE metricTimesliceName = 'Browser')) |
average_fe_response_time | sum(newrelic.timeslice.value['totalExclusive']) / count(newrelic.timeslice.value) * 1000 |
average_be_response_time | 1000 * (sum(newrelic.timeslice.value) - sum(newrelic.timeslice.value['totalExclusive'])) / count(newrelic.timeslice.value) |
average_network_time | (sum(newrelic.timeslice.value) - sum(newrelic.timeslice.value['totalExclusive']) - sum(newrelic.timeslice.value['sumOfSquares'])) / count(newrelic.timeslice.value) |
total_network_time | (sum(newrelic.timeslice.value) - sum(newrelic.timeslice.value['totalExclusive']) - sum(newrelic.timeslice.value['sumOfSquares'])) |
network_time_percentage | (sum(newrelic.timeslice.value) - sum(newrelic.timeslice.value['totalExclusive']) - sum(newrelic.timeslice.value['sumOfSquares'])) / $TIME_WINDOW_IN_SECONDS |
total_fe_time | sum(newrelic.timeslice.value['totalExclusive']) |
fe_time_percentage | 100 * sum(newrelic.timeslice.value['totalExclusive']) / $TIME_WINDOW_IN_SECONDS |
average_dom_content_load_time | average(newrelic.timeslice.value) * 1000 |
average_queue_time | average(newrelic.timeslice.value['totalExclusive']) * 1000 |
total_queue_time | sum(newrelic.timeslice.value['totalExclusive']) * 1000 |
total_dom_content_time | sum(newrelic.timeslice.value) * 1000 |
total_app_time | sum(newrelic.timeslice.value['sumOfSquares']) |
average_app_time | sum(newrelic.timeslice.value['sumOfSquares']) / count(newrelic.timeslice.value) |
average_sent_bytes | sum(newrelic.timeslice.value['totalExclusive']) * 1000 |
average_received_bytes | 1000 * sum(newrelic.timeslice.value) / count(newrelic.timeslice.value) |
launch_count | count(newrelic.timeslice.value) |
時系列とサマリー
デフォルトでは、REST APIは一連のメトリクスデータ値を返します。これらの値の平均を取得するには、 APIコールに&summarize=true
を含めます。
NRQLの場合は、その逆となります。デフォルトではサマリーが取得され、クエリにTIMESERIES
を追加することで時系列を取得できます。
もう一つの違いは、REST APIのデフォルトの時間枠が30分であるのに対し、NRQLでは1時間であることです。
複数のメトリクスをクエリする
NRQLを使用すると、複数のメトリクスを一度にクエリすることができます。以下はその例です。
SELECT filter(1000 * average(newrelic.timeslice.value), WHERE metricTimesliceName = 'HttpDispatcher') AS average_response_time, filter(count(newrelic.timeslice.value), WHERE metricTimesliceName = 'Errors/all') AS error_count, filter(average(newrelic.timeslice.value), WHERE metricTimesliceName = 'Memory/Heap/Max') AS used_mb_by_hostFROM MetricWHERE appName = '$APP_NAME'SINCE 1 day ago