Après avoir appris les bases de NRQL dans nos autres sujets, tels que ce qu'est NRQL , comment fonctionne NRQL et comment NRQL se rapporte aux graphiques et aux tableaux de bord, vous êtes prêt à essayer les exemples de ce didacticiel ! Le didacticiel couvre certains concepts fondamentaux du langage pour vous aider à créer des requêtes NRQL de base à l'aide de vos données, notamment comment :
- Utilisez
SELECT
etFROM
- Utiliser
LIMIT
- Spécifier l'attribut
- Agrégation utilisant
average()
,max()
,min()
,sum()
etcount()
- Utilisez
SINCE
etUNTIL
- Tracer des graphiques linéaires avec
TIMESERIES
- Filtrer en utilisant
WHERE
- Attribut de groupe utilisant
FACET
Prérequis
Vous n'avez besoin que de quelques données entrant dans la plateforme New Relic pour suivre ce tutoriel. Si vous êtes nouveau sur New Relic et que vous souhaitez voir à quel point vous pouvez facilement utiliser NRQL, vous pouvez démarrer gratuitement avec la plateforme et suivre le didacticiel. Tout ce que vous avez à faire est :
- Créez un compte gratuit si vous ne l'avez pas déjà fait.
- Utilisez nos agents et notre intégration pour collecter automatiquement des données à partir de n'importe quel framework et outils courants.
- Consultez le guide de lancement rapide pour connaître le chemin recommandé sur la configuration de New Relic. Vous pouvez commencer à ingérer des données dans la requête, puis vous êtes prêt à utiliser ce didacticiel ou l'un des autres didacticiels de cette série.
Prêt à commencer ? Allons-y!
1. Créez votre première requête
Le meilleur endroit pour commencer dans le générateur de requêtes est de regarder un seul type d'événement dans NRDB appelé Transaction
, collecté par New Relic APM. Chaque requête NRQL doit avoir des clauses SELECT
et FROM
: vous devez SELECT
certaines données et nous dire où elles se trouvent FROM
. Commencez par cette requête de base qui sélectionne tout à partir du type d’événement Transaction
:
SELECT *FROM Transaction

Cela renvoie de nombreux résultats, chacun avec un horodatage et une collection d'attributs. Pour l'instant, vous ne souhaitez qu'un seul résultat, vous pouvez donc limiter les résultats à un seul enregistrement en utilisant LIMIT 1
.
SELECT *FROM TransactionLIMIT 1

Important
Lorsqu'un LIMIT
n'est pas fourni, la requête renvoie la valeur par défaut de 100 lignes de table pour la requête SELECT *
ou 10 valeurs agrégées pour la requête FACET
et la requête SELECT (attributes)
. Vous pouvez spécifier n'importe quelle limite jusqu'au maximum en utilisant LIMIT MAX
.
Vous disposez désormais d’un moyen de contrôler le volume des résultats. Mais que faire si vous ne voulez pas tous les attributs ? Que faire si vous souhaitez voir uniquement des points de données spécifiques ? Comme SQL, vous pouvez le faire avec seulement quelques caractères en remplaçant *
par le nom du ou des attributs souhaités. Dans ce cas, vous pouvez demander le nom d'une transaction et la durée qu'elle a pris.
SELECT name, durationFROM Transaction
Avec cela, vous avez écrit une requête qui peut renvoyer tout ou partie des attributs spécifiques d'un événement, ainsi qu'interroger un nombre spécifique d'événements. Il est temps de passer à l’étape suivante : l’agrégation des données.

2. Données agrégées
Parfois, vous souhaiterez peut-être afficher des données agrégées résumées sur plusieurs événements au lieu d'afficher des points de données individuels. C'est là que NRDB brille. NRDB peut analyser des milliards d'événements et fournir des réponses instantanées et en temps réel aux questions sur vos données. Par exemple, chaque événement Transaction
possède un attribut de durée qui représente le nombre de secondes nécessaires à l’exécution de l’appel. Utilisez la requête suivante pour découvrir la durée moyenne de tous Transaction
événements :
NRQL dispose de nombreuses fonctions intégrées que vous pouvez utiliser pour agréger les données d'événements. Les fonctions couramment utilisées incluent max()
, min()
,average()
, median()
et percentile()
. Vous pouvez utiliser la requête suivante pour demander à NRDB la durée de la transaction la plus lente des 60 dernières minutes. Pour ce faire, demandez à NRDB le max(duration).
Comme vous pouvez le voir, max()
et min()
renvoient tous deux des points de données importants. Mais que faire si vous souhaitez effectuer des opérations arithmétiques sur les données ? Avec sum()
, vous pouvez effectuer une addition de base sur un attribut numérique. Dans cette requête, utilisez un nouvel attribut appelé databaseCallCount
. Cet attribut compte le nombre d'appels de base de données effectués par chaque transaction. En les ajoutant, vous pouvez obtenir le volume total des appels de base de données dans la fenêtre de temps par défaut de 60 minutes (ce sera 0 si vos applications ne communiquent pas avec une base de données).
Enfin, vous pouvez également compter tous les événements de transaction enregistrés avec count(*)
. En utilisant cette requête, vous pouvez compter tous les événements enregistrés pour toutes les applications rapportant à New Relic APM:
Vous pouvez désormais en savoir beaucoup sur vos données : vous pouvez mesurer les limites de vos performances, regrouper les données d'événements et même calculer des informations sur l'attribut que vous avez choisi. Vous avez choisi une durée et calculé les valeurs average
, max
et min
, ajouté un attribut numérique et compté tous les événements sur une période donnée. La manipulation de données comme celle-ci vous aidera lorsque vous souhaiterez présenter des données dans des visualisations, ce qui vous aidera à repérer les problèmes de performances. Il est temps de passer à l’étape suivante : utiliser les plages horaires.
3. Utilisez des plages horaires
Chaque élément de données dans NRDB possède un timestamp
et chaque requête fonctionne sur un sous-ensemble de données dans une plage de temps. Si vous ne fournissez pas de plage horaire dans votre requête NRQL, elle renverra les 60 dernières minutes par défaut, comme nous l'avons vu précédemment. Mais que faire si vous souhaitez voir des données provenant de différentes plages de temps ? Comment contrôlez-vous la fenêtre de données que vous voyez ? Vous pouvez le faire en utilisant les mots-clés SINCE
et UNTIL
pour fournir un début et une fin à la plage horaire de votre requête.
Vous pouvez également spécifier des plages de temps relatives au moment où vous effectuez la requête en utilisant des mots-clés tels que day
, week
, hour
, minute
ou leurs équivalents pluriels. Vous pouvez également utiliser des expressions logiques comme SINCE today
ou SINCE this week
.
Voici une autre requête qui démontre des plages de temps relatives. Notez que lorsque vous spécifiez une heure relative, vous devez inclure le mot-clé ago
.
Vous avez désormais encore plus de contrôle sur vos données. En ajoutant une période à une requête, vous définissez exactement la fenêtre de données que vous souhaitez voir. Ces contrôles vous permettent de vous concentrer sur les données souhaitées en définissant où le rapport des données commence et se termine. Vous avez également choisi la fenêtre et utilisé des termes courants tels que week
, day
, hour
, minute
et leurs pluriels. Il est temps de passer à l’étape suivante : interroger une série chronologique.
4. requête de séries chronologiques
Un cas d’utilisation courant de NRQL consiste à interroger la manière dont les valeurs évoluent au fil du temps. Ce type de requête fournit des données pour les graphiques linéaires, les graphiques en aires et d'autres visualisations. Vous avez déjà exécuté certaines requêtes pour explorer les fonctions d'agrégation average()
, max()
, min()
, sum()
et count()
. Maintenant, utilisez cet exemple pour voir comment prendre n’importe quelle requête effectuée avec des fonctions d’agrégation et ajouter le mot-clé TIMESERIES
pour tracer les valeurs au fil du temps.
SELECT average(duration) FROM Transaction SINCE 1 day ago TIMESERIES

Une requête de série chronologique divise les données en un certain nombre de régions appelées compartiments sur la période spécifiée. Vous pouvez demander à NRDB de choisir une valeur pour la largeur de ce bucket ou de choisir la vôtre. Utilisez cette requête pour demander à NRDB d'afficher la durée moyenne des transactions d'application avec les données renvoyées organisées en tranches d'une heure.
SELECT average(duration) FROM Transaction SINCE 1 day ago TIMESERIES 1 hour

Notez que cela peut renvoyer un graphique plus plat, puisque nous n'avons que 24 points de données sur la période d'un jour tracée. Mais que faire si vous souhaitez voir la granularité maximale possible ? Toute requête de série chronologique peut contenir jusqu'à 366 groupes de données, ce qui signifie que la granularité maximale possible pour 24 heures consiste à regrouper nos données dans des fenêtres de 4 minutes. interrogez ceci en utilisant TIMESERIES 4 minutes
ou TIMESERIES MAX
:
SELECT average(duration) FROM Transaction SINCE 1 day ago TIMESERIES MAX

Vous avez désormais atteint de nouveaux niveaux de visualisation des données, passant des chiffres résumés aux graphiques linéaires des tendances des données au fil du temps. Comme vous pouvez le voir, l’utilisation de TIMESERIES
offre un contrôle total sur les visualisations, la granularité et la moyenne des données sur des fenêtres spécifiées. Il est temps de passer à l’étape suivante : utiliser la clause WHERE
.
5. Utilisez la clause WHERE
Parfois, vous souhaiterez peut-être que votre requête fonctionne sur un sous-ensemble spécifique de données NRDB. Par exemple, lorsque vous interrogez le temps de réponse moyen de votre application, vous pouvez utiliser un attribut appelé transactionType
, qui spécifie si la transaction était une transaction Web
ou Non-Web
(comme une tâche cron ou une tâche en file d'attente). Utilisez cet exemple pour créer une requête qui renvoie uniquement des données pour le type de transaction Web
:
SELECT average(duration) FROM Transaction WHERE transactionType='Web' TIMESERIES

Vous pouvez également combiner AND
et OR
pour créer une requête plus complexe, en utilisant les parenthèses (
et )
pour contrôler la manière dont elles fonctionnent ensemble. Cette requête affiche les temps de réponse moyens des « transactions Web » qui étaient à la fois plus rapides que 100 ms et avaient un code de réponse de 200 ou 302. Notez l’utilisation de parenthèses pour contrôler le OR
.
SELECT average(duration) FROM Transaction WHERE transactionType='Web' AND duration < 0.1 AND (httpResponseCode=200 OR httpResponseCode=302) TIMESERIES

Jusqu'à présent, chaque requête que vous avez effectuée a effectué des actions sur toutes les données disponibles dans la fenêtre de temps donnée. Mais il est également important de filtrer les données indésirables. Les exemples ci-dessus sont utiles pour filtrer un type de transaction ou lorsqu'un code de réponse spécifique se produit. De même, vous pouvez filtrer sur un appName
spécifique, une transaction name
ou même un attribut personnalisé que vous avez marqué sur vos données. Il est temps de passer à l’étape finale du tutoriel : utiliser la requête à facettes.
6. Facettez votre requête
Souvent, vous souhaiterez déterminer les « N meilleures valeurs » regroupées par un attribut spécifique. Dans NRQL, vous faites cela en utilisant FACET
. Par exemple, vous pouvez interroger les appels Transaction
les plus lents observés en moyenne, regroupés par nom. Considérez cela comme « à facettes par nom ».
Par défaut, une requête à facettes renvoie les 10 premiers résultats, mais vous pouvez personnaliser le nombre de résultats renvoyés en plaçant un LIMIT
. Dans cet exemple, utilisez TIMESERIES
pour récupérer les 5 premiers résultats affichés sur un graphique linéaire.
Mais peut-être que vous ne voulez pas de graphique linéaire ou que vous souhaitez une liste de transactions plus longue. En supprimant TIMESERIES
, vous pouvez afficher un graphique à barres ou à secteurs et vous pouvez augmenter la portée de la liste en augmentant LIMIT
.
Enfin, voici une requête légèrement plus complexe qui compare la quantité de transactions Web, réparties par applications individuelles qui rendent compte à New Relic :
SELECT count(*) FROM Transaction WHERE transactionType='Web' FACET appName LIMIT 5 SINCE 6 hours ago TIMESERIES

Le regroupement ou le « facettage » vous permet d'obtenir une dimension avec vos données. Lors de l'application d'une fonction d'agrégation, vous pouvez utiliser FACET
pour regrouper par n'importe quel attribut, par défaut ou personnalisé, qui signale des données d'événement (tout comme la clause WHERE
). Nous vous recommandons d'ajouter un attribut personnalisé à vos données ou de signaler un nouvel événement personnalisé pour vous permettre d'étudier plus directement l'ensemble de données résultant.
Félicitations : vous avez terminé le premier tutoriel NRQL ! Si vous êtes arrivé jusqu'ici, vous connaissez maintenant les bases de l'interrogation des données d'événements à l'aide de NRQL.
Quelle est la prochaine étape ?
Nous avons encore plus de NRQL à vous proposer d'explorer avec trois autres tutoriels qui couvrent des concepts et des cas d'utilisation plus avancés ! Nous vous recommandons de suivre d'abord le tutoriel sur le traitement de vos données , puis de passer au tutoriel sur l'avancement de votre dashboard, et enfin de terminer la série avec notre tutoriel sur les fonctions NRQL les plus avancées.