앱의 측정항목 이름 나열
애플리케이션에 사용할 수 있는 메트릭 이름을 보려면 다음을 수행하십시오.
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에서 얻을 수 있는 것과 동일한 결과를 반환하지만, 일부 결과는 뉴렐릭 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