Lista de nombres métricos para tu aplicación
Para ver los nombres métricos disponibles para su aplicación:
SELECT uniques(metricTimesliceName) FROM Metric WHERE appId = '$APP_ID' AND newrelic.timeslice.value IS NOT NULL SINCE 30 MINUTES AGO LIMIT MAX
También puedes filtrar empleando el nombre de la aplicación:
SELECT uniques(metricTimesliceName) FROM Metric WHERE appName = '$APP_NAME' AND newrelic.timeslice.value IS NOT NULL SINCE 30 MINUTES AGO LIMIT MAX
O empleando un agente específico (host):
SELECT uniques(metricTimesliceName) FROM Metric WHERE realAgentId = '$AGENT_ID' AND newrelic.timeslice.value IS NOT NULL SINCE 30 MINUTES AGO LIMIT MAX
Obtenga los valores de datos de intervalo de tiempo de métrica de su aplicación
La REST API v2 acepta una lista de nombres métricos y una lista de valores para recuperar datos de intervalo de tiempo de métrico.
Los nombres de las métricas son los mismos, puedes filtrarlos con el campo metricTimesliceName
en tu consulta NRQL .
Cada valor de API se puede asignar a una función NRQL, puede consultar la siguiente tabla.
Ejemplo, para la siguiente solicitud 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'
Emplearías la siguiente consulta:
SELECT COUNT(newrelic.timeslice.value) AS call_count, average(newrelic.timeslice.value) * 1000 AS average_call_timeFROM MetricWHERE appId = $APP_ID AND metricTimesliceName = 'HttpDispatcher'
| Value (RPM) | NRQL Function | | -------------------------- | ------------------------------------------------------------------------------------------------- | | 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
|
Si la función incluye $TIME_WINDOW_IN_SECONDS
, significa que debes reemplazarla con la ventana de tiempo que deseas consultar.
Por ejemplo, si consulta un intervalo de tiempo de 30 minutos, reemplazará $TIME_WINDOW_IN_SECONDS
por 1800
.
Apdex métricas
| Value (RPM) | NRQL Function | | ------------- | ---------------------------------------------------------------------------------- | | score | apdex(newrelic.timeslice.value) | | s | apdex(newrelic.timeslice.value) or count(newrelic.timeslice.value) | | t | apdex(newrelic.timeslice.value) or sum(newrelic.timeslice.value) | | f | apdex(newrelic.timeslice.value) or 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) |
Métricas para EndUser & Mobile
Estas métricas devolverán el mismo resultado que obtendría de la REST API v2, pero algunos resultados pueden diferir de lo que ve en la New Relic UI. Esto se debe a que la UI emplea evento en lugar de datos de intervalo de tiempo. Si desea obtener los mismos resultados que la UI, debe consultar el evento directamente.
| Value (RPM) | NRQL Function | | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | 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) |
Seriales temporales y resúmenes
De forma predeterminada, la API REST devuelve un serial de valores de datos métricos basados. Para obtener el promedio de estos valores, deberá incluir &summarize=true
en su llamada API.
En NRQL, ocurre lo opuesto. Obtendrás un resumen de forma predeterminada y puedes obtener el serial temporal agregando TIMESERIES
a tu consulta.
Otra diferencia es que la ventana de tiempo predeterminada de la API REST es de 30 minutos, mientras que en NRQL es de 1 hora.
Consulta multiple metricas
Aún puedes consultar múltiples métricas a la vez con NRQL, aquí hay un ejemplo:
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