Después de aprender los conceptos básicos de NRQL en nuestros otros temas, como qué es NRQL , cómo NRQL y cómo se relaciona NRQL con los gráficos y el panel, ¡está listo para probar los ejemplos de este tutorial! El tutorial cubre algunos conceptos fundamentales dentro del lenguaje para ayudarlo a crear una consulta NRQL básica utilizando sus datos, incluido cómo:
- Utilice
SELECT
yFROM
- Usar
LIMIT
- Especificar atributo
- Agregar usando
average()
,max()
,min()
,sum()
ycount()
- Utilice
SINCE
yUNTIL
- Trazar gráficos lineales con
TIMESERIES
- Filtrar usando
WHERE
- Agrupar atributo usando
FACET
Requisitos previos
Solo necesita que algunos datos ingresen a la plataforma New Relic para seguir este tutorial. Si eres nuevo en New Relic y quieres ver con qué facilidad puedes usar NRQL, puedes comenzar con la plataforma de forma gratuita y seguir el tutorial. Todo lo que tienes que hacer es:
- Regístrese para obtener una cuenta gratuita si aún no lo ha hecho.
- Utilice nuestro agente e integración para recopilar datos automáticamente desde cualquier marco y herramienta comunes.
- Visite la guía de lanzamiento rápida para obtener una ruta recomendada sobre cómo configurar New Relic. Puede comenzar a ingerir datos para consultar y luego estará listo para usar este o cualquiera de los otros tutoriales de esta serie.
¿Listo para comenzar? ¡Vamos!
1. Crea tu primera consulta
El mejor lugar para comenzar en el generador de consultas es observar un único tipo de evento en NRDB llamado Transaction
, recopilado por New Relic APM. Cada consulta NRQL debe tener cláusulas SELECT
y FROM
: debes SELECT
algunos datos y decirnos dónde están FROM
. Comience con esta consulta básica que selecciona todo del tipo de evento Transaction
:
SELECT *FROM Transaction
Esto devuelve muchos resultados, cada uno con una timestamp y una colección de atributos. Por ahora, solo desea un resultado único, por lo que puede limitar los resultados a un solo registro usando LIMIT 1
.
SELECT *FROM TransactionLIMIT 1
Importante
Cuando no se proporciona un LIMIT
, la consulta devuelve el valor predeterminado de 100 filas de tabla para SELECT *
consulta o 10 valores agregados para FACET
consulta y SELECT (attributes)
consulta. Puede especificar cualquier límite hasta el máximo usando LIMIT MAX
.
Ahora tienes una forma de controlar el volumen de los resultados. ¿Pero qué pasa si no quieres todos los atributos? ¿Qué sucede si desea ver solo puntos de datos específicos? Al igual que SQL, puede hacer esto con solo unos pocos caracteres reemplazando *
con el nombre de los atributos que desee. En este caso, puede solicitar el nombre de una transacción y el tiempo que tomó.
SELECT name, durationFROM Transaction
Con esto, ha escrito una consulta que puede devolver todos o algunos atributos específicos de un evento, además de consultar un número específico de eventos. Es hora de dar el siguiente paso: agregar datos.
2. Datos agregados
A veces, es posible que desee ver datos agregados resumidos de muchos eventos en lugar de ver puntos de datos individuales. Aquí es donde brilla NRDB. NRDB puede escanear miles de millones de eventos y proporcionar respuestas instantáneas y en tiempo real a preguntas sobre sus datos. Por ejemplo, cada evento Transaction
tiene un atributo de duración que representa cuántos segundos tardó en ejecutarse la llamada. Utilice la siguiente consulta para descubrir la duración promedio de todos los Transaction
eventos:
NRQL tiene muchas funciones integradas que puede utilizar para agregar datos de eventos. Las funciones más utilizadas incluyen max()
, min()
,average()
, median()
y percentile()
. Puede utilizar la siguiente consulta para preguntarle a NRDB la duración de la transacción más lenta de los últimos 60 minutos. Para hacer esto, solicite a NRDB el max(duration).
Como puede ver, max()
y min()
devuelven puntos de datos importantes. Pero, ¿qué pasa si quieres realizar aritmética con los datos? Con sum()
, puedes realizar una suma básica en un atributo numérico. En esta consulta, utilice un nuevo atributo llamado databaseCallCount
. Este atributo cuenta el número de llamadas a la base de datos que realiza cada transacción. Al agregarlos, puede obtener el volumen total de llamadas a la base de datos en la ventana de tiempo predeterminada de 60 minutos (esto será 0 si sus aplicaciones no se comunican con una base de datos).
Finalmente, también puedes contar todos los eventos de transacción registrados con count(*)
. Con esta consulta, puede contar todos los eventos registrados para todas las aplicaciones que informan al New Relic APM:
Ahora puede descubrir mucho sobre sus datos: puede medir los límites de su desempeño, agrupar datos de eventos e incluso calcular información sobre el atributo elegido. Elegiste una duración y calculaste los valores average
, max
y min
, agregaste un atributo numérico y contaste todos los eventos durante un período de tiempo. Manipular datos como este será útil cuando desee presentar datos en visualizaciones, lo que ayuda a detectar problemas de rendimiento. Es hora de dar el siguiente paso: utilizar rangos de tiempo.
3. Utilice rangos de tiempo
Cada dato en NRDB tiene un timestamp
y cada consulta opera en un subconjunto de datos dentro de un rango de tiempo. Si no proporciona un rango de tiempo en su consulta NRQL, devolverá los últimos 60 minutos de forma predeterminada, como vimos anteriormente. Pero ¿qué pasa si quieres ver datos de diferentes rangos de tiempo? ¿Cómo controlas la ventana de datos que ves? Puede hacerlo utilizando las palabras clave SINCE
y UNTIL
para proporcionar un comienzo y un final para el intervalo de tiempo de su consulta.
También puede especificar rangos de tiempo relativos al momento en que realiza la consulta empleando palabras clave como day
, week
, hour
, minute
o sus equivalentes en plural. También puedes emplear expresiones lógicas como SINCE today
o SINCE this week
.
Aquí hay otra consulta que demuestra rangos de tiempo relativos. Tenga en cuenta que al especificar un tiempo relativo, debe incluir la palabra clave ago
.
Ahora tienes aún más control sobre tus datos. Al agregar un período de tiempo a una consulta, define exactamente qué ventana de datos desea ver. Estos controles le permiten concentrarse en los datos que desea al definir dónde comienza y termina el informe de datos. También eligió la ventana y utilizó términos comunes como week
, day
, hour
, minute
y sus plurales. Es hora de dar el siguiente paso: consultar una serie temporal.
4. Consulta de series temporales
Un caso de uso común de NRQL es consultar cómo cambian los valores con el tiempo. Este tipo de consulta proporciona datos para gráficos de líneas, gráficos de áreas y otras visualizaciones. Ya ha realizado algunas consultas para explorar las funciones de agregación average()
, max()
, min()
, sum()
y count()
. Ahora, use este ejemplo para ver cómo tomar cualquier consulta realizada con funciones de agregación y agregar la palabra clave TIMESERIES
para trazar los valores a lo largo del tiempo.
SELECT average(duration) FROM Transaction SINCE 1 day ago TIMESERIES
Una consulta de serie temporal divide los datos en varias regiones denominadas depósitos durante el período de tiempo especificado. Puede hacer que NRDB elija un valor para el ancho de ese depósito o elija el suyo propio. Utilice esta consulta para pedirle a NRDB que muestre la duración promedio de la transacción de la aplicación con los datos devueltos organizados en períodos de 1 hora.
SELECT average(duration) FROM Transaction SINCE 1 day ago TIMESERIES 1 hour
Tenga en cuenta que esto puede arrojar un gráfico más plano, ya que solo tenemos 24 puntos de datos en el período de 1 día que se está trazando. Pero, ¿qué pasa si quieres ver la máxima granularidad posible? Cualquier consulta de serie temporal puede tener hasta 366 depósitos de datos, lo que significa que la granularidad máxima posible durante 24 horas es agrupar nuestros datos en ventanas de 4 minutos. consulta esto usando TIMESERIES 4 minutes
o TIMESERIES MAX
:
SELECT average(duration) FROM Transaction SINCE 1 day ago TIMESERIES MAX
Ahora alcanzó nuevos niveles de visualización de datos, pasando de números resumidos a gráficos lineales de tendencias de datos a lo largo del tiempo. Como puede ver, el uso de TIMESERIES
ofrece control total sobre las visualizaciones, el detalle y el promedio de datos en ventanas específicas. Es hora del siguiente paso: emplear la cláusula WHERE
.
5. Utilice la cláusula WHERE
A veces, es posible que desee que su consulta opere en un subconjunto específico de datos NRDB. Por ejemplo, al consultar el tiempo de respuesta promedio de su aplicación, puede usar un atributo llamado transactionType
, que especifica si la transacción fue una transacción Web
o Non-Web
(como un trabajo cron o una tarea en cola). Utilice este ejemplo para crear una consulta que solo devuelva datos para el tipo de transacción Web
:
SELECT average(duration) FROM Transaction WHERE transactionType='Web' TIMESERIES
También puede combinar AND
y OR
para realizar consultas más complejas, utilizando los paréntesis (
y )
para controlar cómo funcionan juntos. Esta consulta muestra el tiempo de respuesta promedio de "transacción web" que fueron más rápidas que 100 ms y tuvieron un código de respuesta de 200 o 302. Observe el uso de paréntesis para controlar el OR
.
SELECT average(duration) FROM Transaction WHERE transactionType='Web' AND duration < 0.1 AND (httpResponseCode=200 OR httpResponseCode=302) TIMESERIES
Hasta ahora, cada consulta que ha realizado ha realizado acciones en todos los datos disponibles en el período de tiempo determinado. Pero también es importante filtrar los datos no deseados. Los ejemplos anteriores son útiles para filtrar un tipo de transacción o cuando ocurre un código de respuesta específico. De manera similar, puede filtrar por una appName
, una transacción name
específica o incluso un atributo personalizado que haya etiquetado en sus datos. Es hora del paso final del tutorial: usar la consulta facetada.
6. Faceta tu consulta
A menudo, querrás determinar los valores "N principales" agrupados por un atributo específico. En NRQL, haces esto usando FACET
. Por ejemplo, puedes consultar las Transaction
llamadas más lentas observadas en promedio, agrupadas por nombre. Piense en esto como "facetado por nombre".
De forma predeterminada, una consulta por facetas devuelve los 10 resultados principales, pero puede personalizar cuántos resultados se devuelven colocando un LIMIT
. En este ejemplo, utilice TIMESERIES
para recuperar los 5 resultados principales que se muestran en un gráfico de líneas.
Pero tal vez no quieras un gráfico de líneas o quieras una lista más grande de transacciones. Al eliminar TIMESERIES
, puede representar un gráfico de barras o circular y puede aumentar el alcance de la lista aumentando LIMIT
.
Finalmente, aquí hay una consulta un poco más compleja que compara la cantidad de transacciones web, desglosadas por aplicación individual que reportan a New Relic:
SELECT count(*) FROM Transaction WHERE transactionType='Web' FACET appName LIMIT 5 SINCE 6 hours ago TIMESERIES
La agrupación o "facetado" le permite obtener dimensiones con sus datos. Al aplicar una función de agregación, puede emplear FACET
para agrupar por cualquier atributo, predeterminado o personalizado, que informe datos de eventos (al igual que la cláusula WHERE
). Recomendamos agregar un atributo personalizado a sus datos o informar un nuevo evento personalizado para permitirle investigar más directamente el conjunto de datos resultante.
Felicitaciones: ¡ha completado el primer tutorial de NRQL! Si ha llegado hasta aquí, ahora conoce los conceptos básicos de la consulta de datos de eventos utilizando NRQL.
¿Que sigue?
¡Tenemos aún más NRQL para que usted explore con tres tutoriales más que cubren conceptos y casos de uso más avanzados! Recomendamos continuar primero con el tutorial sobre cómo procesar sus datos , luego pasar al tutorial sobre cómo avanzar en su panel de control y, finalmente, terminar la serie con nuestro tutorial sobre las funciones NRQL más avanzadas.