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 la première partie et la deuxième partie, nous avons couvert 10 fonctions et clauses NRQL essentielles qui vous aideront à mieux comprendre NRQL et à obtenir des informations plus détaillées sur vos données. Nous avons abordé les pourcentages, les cartes de densité, les widgets conditionnels et quelques autres fonctions et clauses qui vous aideront à analyser facilement vos données télémétriques.
Dans la prochaine partie de cette série de blogs, nous explorons les fonctions existantes de NRQL ainsi que les nouveaux ajouts intéressants qui peuvent faciliter les transformations, le formatage et la visualisation des données.
Formatage
toDateTime
Utilisez cette fonction pour transformer un horodatage brut en une chaîne datetime formatée de votre choix.
Cette fonction est utile lorsque vous avez de grands datasets ou logs dans lesquels l'horodatage n'est pas facilement lisible ou présenté sous plusieurs formats différents. Avec cette fonction, vous pouvez convertir ces horodatages bruts en un format plus lisible pour vous, ce qui facilite l'analyse et la compréhension de vos données.
toDateTime()
prend trois arguments, dont deux sont facultatifs :
-
Timestamp : il doit s'agir d'un horodatage brut au format millisecondes d'epoch. Par exemple :
1709787389000
- (Facultatif) Pattern : un modèle de chaîne pour formater la date et l'heure dans le format spécifié. Cela peut être
YYYY-MM-dd HH:mm:ss
ouYYYY-MMM-dd hh:mm:ss
et bien d'autres. - (Facultatif) Timezone : un paramètre facultatif de troisième position pour spécifier le fuseau horaire. Reportez-vous à la section des références pour obtenir la liste de toutes les valeurs de chaîne de fuseau horaire prises en charge.
Voici un exemple d'horodatage au format YYYY-MMM-dd hh:mm:ss z
et le fuseau horaire Amérique/chicago
WITH 1709787389000 as timestampValue
SELECT toDatetime(timestampValue,'yyyy-MM-dd HH:mm:ss z', timezone: 'America/Chicago') as formattedTimeStamp
Vous pouvez également utiliser la clause WITH TIMEZONE
au lieu de timezone
comme troisième paramètre.
WITH 1709787389000 as timestampValue
SELECT toDatetime(timestampValue, 'yyyy-MM-dd hh:mm:ss') AS 'Formatted TimeStamp'
FROM Event WITH TIMEZONE 'America/Los_Angeles'
Si aucun paramètre de modèle et de fuseau horaire n'est fourni, la fonction est par défaut au format « 1970-01-01T00:20:34.567Z », qui est également au format UTC.
Références
- Convertisseur Epoch
- Tous les Modèles de formatage et d'analyse
- Liste de toutes les chaînes de fuseau horaire prises en charge
Transformations
jparse
Utilisez cette fonction pour analyser la chaîne JSON brute d'événements ou de logs sur une mappe de valeurs structurées qui peuvent être référencées directement dans NRQL en tant que type de première classe
jparse()
prend deux arguments :
- Attribut : une valeur de chaîne JSON
- (Facultatif) Path : un paramètre facultatif de chemin pour analyser des valeurs spécifiques de la chaîne JSON.
Voici un exemple simple avec une chaîne JSON brute et l'extraction de la valeur du champ name
:
WITH '{"name": "Avatar", "gender": "M", "age": 14 }' as jsonString
SELECT jparse(jsonString)[name] as Name
Si aucun sélecteur de clés n'est fourni, la fonction jparse() renvoie un JSON sérialisé.
jparse
peut également fonctionner avec tableau de chaîne. Si vous avez un tableau simple, il peut être interrogé de la même manière qu'un objet JSON et la valeur d'index peut être utilisée comme sélecteur :
WITH '["key1","key2"]' as jsonString
SELECT jparse(jsonString)[0]
Le paramètre de chemin (path) peut être utile s'il existe un objet JSON imbriqué et que plusieurs valeurs doivent être extraites. Ce qui suit est un exemple dans lequel le tableau contient une liste d'utilisateurs avec leurs noms et identifiants. Le paramètre path peut être fourni sous forme d'expression régulière pour récupérer tous les identifiants de chaque utilisateur.
WITH '{"users": [{"name": "A", "id": 5}, {"name": "B", "id": 10}]}' as jsonString, jparse(jsonString, 'users[*].id') as ids
SELECT ids as UserIDs
Références :
pour plus d'informations, consultez référence sur la syntaxe du chemin.
mapKeys
Utilisez cette fonction pour extraire la liste des clés de la mappe fournie ou d'une chaîne JSON. La chaîne JSON peut être convertie en mappe à l'aide de la fonction jparse()
.
mapKeys
prend un argument unique ; attribut : le dataset d'une mappe.
Voici un exemple simple d'extraction de toutes les clés d'une chaîne JSON fournie :
WITH '{"name": "Avatar", "gender": "M", "age": 14 }' as jsonString
SELECT mapKeys(jparse(jsonString)) as keys
La requête NRQL ci-dessus désérialise les valeurs JSON, et mappe et renvoie toutes les clés ; c'est-à-dire ['name','gender','age'].
Cette fonction peut également être utilisée avec les chaînes JSON imbriquées. Cependant, elle extrait uniquement les clés de premier niveau :
WITH '{"value1": "test", "value2": {"nestedValue1": [1, 2, 3], "nestedValue2": 100}}' as jsonString
SELECT mapKeys(jparse(jsonString)) AS keys
mapValues
Comme la fonction mapKeys
, mapValues
peut aider à extraire toutes les valeurs du dataset de mappage fourni.
mapValues
prend un seul argument ; attribut : un dataset de mappage.
Extrayons les valeurs de cette simple chaîne JSON :
WITH '{"name": "Avatar", "gender": "M", "age": 14 }' as jsonString
SELECT mapValues(jparse(jsonString)) as Values
Cette fonction est utilisée de la même manière que la chaîne JSON imbriquée, mais elle n'extrait et ne désérialise que les valeurs de premier niveau.
WITH '{"value1": "test", "value2": {"nestedValue1": [1, 2, 3], "nestedValue2": 100}}' as jsonString
SELECT mapValues(jparse(jsonString)) AS values
La valeur de l'objet imbriqué peut être affichée en changeant la visualisation en graphique JSON :
Visualisations
Dans les billets de blog précédents de cette série, nous avons abordé certaines visualisations prêtes à l'emploi telles que les mappes de densité, l'histogramme et le widget de mappe. Ici, je souhaite (ré)introduire une clause NRQL existante qui peut aider à lisser les graphiques ou à fournir plus de points de données pour la visualisation des lignes, des zones ou des diagrammes à barres empilées.
Slide By
La clause SLIDE BY
autorise ce qu'on appelle des fenêtres glissantes. Celles-ci regroupent les données en fenêtres temporelles ou compartiments de temps qui se chevauchent, ce qui est différent des fenêtres en cascade.
Ces fenêtres peuvent aider à lisser les graphiques linéaires, offrant ainsi une résolution plus élevée à vos graphiques. Cette fonctionnalité peut être particulièrement utile lorsque vous souhaitez évaluer un dataset plus volumineux au format TIMESERIES avec plus de données dans chaque compartiment de temps.
Syntaxe
La clause SLIDE BY
peut être utilisée avec la clause TIMESERIES
.
La syntaxe est la suivante : SELECT ... TIMESERIES units SLIDE BY units
Usage
Dans l'exemple suivant, nous recherchons la durée moyenne de la transaction SINCE 5 MINUTES AGO
en utilisant un compartiment TIMESERIES de 1 minute chacun. Le diagramme à barres empilées ci-dessous affiche les résultats de 5 tranches ou fenêtres temporelles.
SELECT average(duration) FROM Transaction
TIMESERIES 1 minute SINCE 5 minutes ago
Le même graphique peut être affiché sans les espaces dans chaque compartiment à l'aide de la clause SLIDE BY.
SELECT average(duration) FROM Transaction
TIMESERIES 1 minute SLIDE BY 30 seconds
SINCE 5 minutes ago
Voici un autre exemple avec les métriques PageView dans un graphique linéaire
La clauseTIMESERIES
fournit plus de compartiments et un plus grand dataset à analyser, mais si vous souhaitez analyser plus de points de données dans la plage de fenêtre glissante, ajoutez simplement la clause SLIDE BY
à la même requête, comme indiqué dans cet exemple :
FROM PageView SELECT count(*) TIMESERIES 1 minute SLIDE BY 10 seconds
Notez que la taille du compartiment reste la même, mais les points de données sont bien plus élevés qu'avant et vous offrent un aperçu de résolution plus élevée dans les métriques PageView
.
Références
: - En savoir plus sur les fenêtres glissantes
- Approfondissez vos connaissances de SLIDE BY en regardant cette vidéo Nerd Bytes.
Conclusion
En maîtrisant NRQL, vous pouvez capturer, transformer et interpréter vos données, ce qui vous permet de décomposer la situation dans son ensemble en éléments facilement compréhensibles. Cela vous aidera à identifier les problèmes au fur et à mesure qu'ils surviennent et à analyser vos données en temps réel, en tirant parti de vos données télémétriques. Que vous cherchiez à optimiser les performances, à identifier les tendances, à surveiller les indicateurs clés pour guider les décisions commerciales ou simplement à créer des dashboards avec des données personnalisées, NRQL est un outil indispensable qui peut vous aider à comprendre vos données de manière globale.
Étapes suivantes
Et ensuite ?
- Vous pouvez apprendre le langage NRQL de manière interactive en utilisant notre application NRQL Lesson.
- Explorez le générateur de requêtes de New Relic et créez vos graphiques et dashboards personnalisés
- Découvrez notre console NRQL et devenez un expert de NRQL.
- Vous venez de l'environnement Prometheus ? Pas d'inquiétude ! New Relic prend en charge les requêtes de type PromQL.
Les opinions exprimées sur ce blog sont celles de l'auteur et ne reflètent pas nécessairement celles de New Relic. Toutes les solutions proposées par l'auteur sont spécifiques à l'environnement et ne font pas partie des solutions commerciales ou du support proposés par New Relic. Veuillez nous rejoindre exclusivement sur l'Explorers Hub (discuss.newrelic.com) pour toute question et assistance concernant cet article de blog. Ce blog peut contenir des liens vers du contenu de sites tiers. En fournissant de tels liens, New Relic n'adopte, ne garantit, n'approuve ou n'approuve pas les informations, vues ou produits disponibles sur ces sites.