New Relic Now Start training on Intelligent Observability February 25th.
Save your seat.

Voulez-vous mieux comprendre vos données New Relic ? Le langage de requête New Relic (NRQL) peut vous aider. NRQL vous permet d'analyser vos données en temps réel. Même si cela peut paraître insurmontable à première vue, ne vous inquiétez pas. Dans ce blog en deux parties, nous couvrons 10 fonctions et clauses NRQL essentielles qui vous aideront à mieux comprendre NRQL et à mieux comprendre vos données. Ces fonctions et clauses peuvent vous aider à calculer des pourcentages, à créer des cartes thermiques, à créer des widgets conditionnels et bien plus encore. En utilisant NRQL, vous pouvez tirer le meilleur parti de votre analyse de données. Apprenons à utiliser NRQL pour obtenir des informations précieuses à partir de vos données.

Dans la première partie de ce blog, nous avons couvert les fonctions NRQL de base nécessaires à l'interrogation des données. Dans la deuxième partie, nous plongeons les fonctionnalités les plus avancées de NRQL. Nous abordons des sujets tels que les histogrammes, les cartes thermiques et les opérateurs de comparaison avancés. Nous explorons comment utiliser NRQL pour analyser des datasets complexes et identifier des modèles et des tendances dans vos données. Et nous examinons quelques bonnes pratiques pour écrire des requêtes efficaces et optimiser les performances de vos requêtes NRQL.

6 : Latest

La fonction latest() permet aux utilisateurs de récupérer la valeur la plus récente d'un attribut sur une plage de temps spécifiée. Elle peut prendre un seul attribut comme intrant et renvoyer la valeur enregistrée la plus récemment.

Voici un exemple simple pour récupérer la valeur la plus récente de l'attribut city provenant de l'événement PageView dans le widget de carte :

FROM PageView
SELECT LATEST(city) AS 'Name:City'
FACET STRING (asnLatitude, precision: 5) AS 'Lat',

      STRING(asnLongitude, precision: 5) As 'Lang'
SINCE AN HOUR AGO
LIMIT MAX

Map widget example with latest() clause


Références


7 : If

Que faire lorsque vous devez effectuer un simple flux de contrôle if-then-else avec votre requête pour obtenir une sortie conditionnelle ? NRQL fournit une fonction if(), qui s'avère pratique lorsqu'elle est combinée avec la clause SELECT.

Voici un exemple simple dans lequel nous vérifions l'état de la charge de travail et affichons la sortie avec On ou Off en fonction de la propriété statusValue :

FROM WorkloadStatus
SELECT LATEST(IF(statusValue = 'OPERATIONAL', '🟢 On', '🔴 Off')) AS 'Workload Status'
SINCE 30 SECONDS AGO

7.if().png

Références

  • En savoir plus sur if().

8 : Aparse

aparse est une excellente fonction pour extraire des valeurs spécifiques d'une chaîne. Elle vous permet d'analyser des chaînes contenant des données structurées et d'en extraire des valeurs spécifiques. Cela peut être particulièrement utile lorsque vous devez analyser des données de log ou d'autres types de données non structurées.

aparse() accepte deux arguments :

  • Un attribut avec une valeur de chaîne.
  • Un ensemble de caractères qui comprend des chaînes d'ancrage et des caractères à extraire. Par exemple, 'www.*.com' peut être utilisé pour extraire uniquement la partie concernant le domaine d'une URL.

L'image suivante est un exemple dans lequel l'emplacement de l'hôte contient une valeur pré‑fixée : NRQL without aparse

Dans l'exemple suivant, la requête extrait uniquement la partie souhaitée de la chaîne du résultat tout en conservant le nom de l'emplacement après avoir supprimé le préfixe en fonction du modèle anchor/regex donné.

SELECT APARSE(hostname,'host-tower-*') AS hostLocation
FROM SystemSample 
 WHERE hostname LIKE '%tower%'

NRQL with aparse to capture location


Références


9 : Sous-requêtes

NRQL prend également en charge les sous-requêtes, c'est‑à‑dire des requêtes au sein d'autres requêtes. Les sous-requêtes sont un excellent moyen de grouper plusieurs requêtes ensemble dans NRQL et de générer des résultats à partir de plusieurs datasets différents.

Voici un exemple simple dans lequel nous filtrons et recherchons toutes les transactions pour les hôtes avec des erreurs de log, sans spécifier explicitement aucun nom d'hôte :

 FROM Transaction
SELECT appId, appName, containersId, request.method
WHERE hostname = (
FROM Log
SELECT last(host)
WHERE level = 'ERROR'
)

9.subqueries.png

Sous-requête avec clause IN

Autre bonne raison d'utiliser d'une sous-requête subquery : vous souhaitez créer une requête plus dynamique au lieu d'écrire plusieurs valeurs pour les conditions. Vous pouvez utiliser la clause IN() avec une sous-requête lorsque les critères de filtrage peuvent changer ou augmenter avec le temps.

Voici un exemple de cas d'utilisation : vous voulez trouver la durée moyenne de toutes les transactions TransactionError dans toutes les entités. Pour cela, vous pouvez utiliser une requête d'échantillonnage. Cette requête recherche tous les entity.guids en utilisant une sous-requête, puis applique le résultat à la clause WHERE pour l'agrégation average(duration).

SELECT AVERAGE(duration) FROM Transaction
WHERE entity.guid IN (SELECT UNIQUES(entity.guid) FROM TransactionError)
FACET appName TIMESERIES LIMIT 3

9.a_IN_clause.png


Références


10 : Histogrammes et cartes thermiques

Histogramme

Les histogrammes permettent aux utilisateurs d'identifier rapidement les modèles, les distributions et les tendances dans leurs données.

histogram() accepte trois arguments :

  • Nom de l'attribut
  • Valeur maximale de la plage d'échantillonnage
  • Nombre total de tranches de temps ou « buckets » (entre 1 et 500) pour lesquels les limites de la plage sont inclusives

Vous pouvez générer un histogramme des temps de réponse à partir de PageView, allant jusqu'à 10 secondes sur 20 buckets. La requête produit essentiellement une sortie de 20 buckets différents sur l'axe X pour le nombre total de requêtes sur l'axe Y pour l'attribut "duration" de PageView.

SELECT HISTOGRAM(duration, 10, 20) FROM PageView SINCE 1 week ago

Histogram() to showcase PageView duration across timebuckets

Heatmaps

Les cartes thermiques Heatmaps() sont utiles pour visualiser des modèles de données dans un dataset. L'intensité de la couleur sur la carte thermique passe du plus clair au plus foncé à mesure que les valeurs augmentent ou diminuent.

Pour créer une carte thermique, utilisez la fonction Histogram() avec un seul attribut numérique et ajoutez une clause FACET. Voici un exemple de carte thermique montrant les différents systèmes d'exploitation à partir desquels notre site Web a été consulté au cours des trois dernières heures.

SELECT HISTOGRAM(duration) FROM PageView FACET userAgentOS SINCE 3 HOURS AGO

Heatmap showing PageViews by userAgentOS


Références


En maîtrisant NRQL, vous pouvez capturer et interpréter vos données, ce qui vous permet de décomposer la situation dans son ensemble en éléments facilement compréhensibles. Vous pourrez ainsi plus facilement identifier les problèmes dès qu'ils surviennent et analyser vos données en temps réel pour en tirer des informations précieuses. Que vous cherchiez à optimiser les performances, à identifier les tendances ou à monitorer les métriques clés pour prendre de meilleures décisions commerciales, NRQL est un outil indispensable qui peut vous aider à pleinement comprendre vos données.