Möchten Sie Ihre New Relic Daten besser verstehen? New Relic Query Language (NRQL) kann helfen. Mit NRQL können Sie Ihre Daten in Echtzeit analysieren. Auch wenn es auf den ersten Blick überwältigend erscheinen mag – keine Sorge!
In Teil 1 und Teil 2 haben wir 10 wesentliche NRQL-Funktionen und -Klauseln behandelt, die Ihnen helfen, NRQL besser zu verstehen und tiefere Einblicke in Ihre Daten zu gewinnen. Wir haben Prozentsätze, Heatmaps, bedingte Widgets und einige weitere Funktionen und Klauseln behandelt, die Ihnen dabei helfen, Ihre Telemetriedaten mühelos zu analysieren.
Im nächsten Teil dieser Blogserie untersuchen wir vorhandene Funktionen und spannende neue Ergänzungen zu NRQL, die bei der Transformation, Formatierung und Visualisierung von Daten helfen können.
Formatierung
toDateTime
Verwenden Sie diese Funktion, um einen unbearbeiteten Zeitstempel in den von Ihnen gewünschten formatierten Datums-/Uhrzeit-String umzuwandeln.
Dies ist hilfreich beim Umgang mit großen Datasets oder Logs, deren Zeitstempel nicht leicht lesbar sind oder in mehreren verschiedenen Formaten vorliegen. Mit dieser Funktion können Sie diese Zeitstempel in ein für Menschen besser lesbares Format konvertieren, was die Analyse und das Verständnis Ihrer Daten erleichtert.
toDateTime()
nimmt drei Argumente an, von denen zwei optional sind:
-
Timestamp: Dies sollte ein unbearbeiteter Zeitstempel im Epochenformat Millisekunden sein. Beispiel:
1709787389000
- (optional) Pattern: Ein String-Muster zum Formatieren von Datum und Uhrzeit im angegebenen Format. Dies kann variieren, z. B.
YYYY-MM-dd HH:mm:ss
oderYYYY-MMM-dd hh:mm:ss
usw. - (optional) Timezone: Ein optionaler Parameter an dritter Stelle zur Angabe der Zeitzone. Im Abschnitt „Referenzen“ finden Sie eine Liste aller unterstützten String-Werte für Zeitzonen.
Hier ist ein Beispiel für einen Zeitstempel, der als yyyy-MM-dd HH:mm:ss z
formatiert ist, mit der Zeitzone America/chicago
WITH 1709787389000 as timestampValue
SELECT toDatetime(timestampValue,'yyyy-MM-dd HH:mm:ss z', timezone: 'America/Chicago') as formattedTimeStamp
Sie können anstelle der Zeitzone auch die Klausel WITH TIMEZONE
als dritten Parameter verwenden.
WITH 1709787389000 as timestampValue
SELECT toDatetime(timestampValue, 'yyyy-MM-dd hh:mm:ss') AS 'Formatted TimeStamp'
FROM Event WITH TIMEZONE 'America/Los_Angeles'
Wenn keine Muster- und Zeitzonenparameter angegeben werden, verwendet die Funktion standardmäßig das Format 1970-01-01T00:20:34.567Z
, das ebenfalls in UTC ist.
Referenzen
- Epochen-Millisekunden
- Alle Muster zum Formatieren und Parsen
- Liste aller unterstützten Zeitzonen-Strings
Transformation
jparse
Verwenden Sie diese Funktion, um unbearbeitete JSON-Strings aus Events oder Logs in eine Zuordnungstabelle mit strukturierten Werten zu parsen, auf die direkt im NRQL wie auf einen First-Class-Typ verwiesen werden kann.
jparse()
nimmt zwei Argumente an:
- Attribute: Ein JSON-String-Wert
- (optional) Path: Ein optionaler Pfadparameter zum Parsen bestimmter Werte aus dem JSON-String.
Hier ist ein einfaches Beispiel mit einem JSON-String, bei dem der Wert des Felds name
extrahiert wird:
WITH '{"name": "Avatar", "gender": "M", "age": 14 }' as jsonString
SELECT jparse(jsonString)[name] as Name
Wenn kein Schlüsselselektor angegeben ist, gibt die Funktion jparse() ein serialisiertes JSON zurück.
jparse
funktioniert auch mit einem Array-String. Wenn Sie ein einfaches Array haben, können Sie es auf die gleiche Weise abfragen wie ein JSON-Objekt und auch hier den Indexwert als Selektor verwenden:
WITH '["key1","key2"]' as jsonString
SELECT jparse(jsonString)[0]
Der Pfadparameter kann hilfreich sein, wenn ein verschachteltes JSON vorhanden ist und mehrere Werte extrahiert werden müssen. Im folgenden Beispiel enthält das Array eine Liste von Benutzer:innen mit ihren Namen und UserIDs. Der Pfadparameter kann als regulärer Ausdruck bereitgestellt werden, um alle IDs für alle Benutzer:innen abzurufen.
WITH '{"users": [{"name": "A", "id": 5}, {"name": "B", "id": 10}]}' as jsonString, jparse(jsonString, 'users[*].id') as ids
SELECT ids as UserIDs
Referenzen:
Weitere Informationen finden Sie in der Dokumentation zur Pfadsyntaxreferenz.
mapKeys
Verwenden Sie diese Funktion, um die Liste der Schlüssel aus der bereitgestellten Zuordnungstabelle oder einem JSON-String zu extrahieren. Der JSON-String kann mit der Funktion jparse()
in eine Zuordnungstabelle konvertiert werden.
mapKeys
nimmt ein einzelnes Argument an: attribute: ein Zuordnungs-Dataset.
Hier ist ein einfaches Beispiel für das Extrahieren aller Schlüssel aus einem bereitgestellten JSON-String:
WITH '{"name": "Avatar", "gender": "M", "age": 14 }' as jsonString
SELECT mapKeys(jparse(jsonString)) as keys
Die obige NRQL-Abfrage deserialisiert das JSON, ordnet alle Schlüssel zu und gibt sie zurück, d. h.: [’name’,’gender’,age’].
Diese Funktion funktioniert auch mit verschachtelten JSON-Strings. Allerdings extrahiert sie nur die Schlüssel der ersten Ebene:
WITH '{"value1": "test", "value2": {"nestedValue1": [1, 2, 3], "nestedValue2": 100}}' as jsonString
SELECT mapKeys(jparse(jsonString)) AS keys
mapValues
Wie die Funktion mapKeys
kann mapValues dabei helfen, alle Werte aus dem bereitgestellten Zuordnungs-Dataset zu extrahieren.
mapValues
nimmt ein einzelnes Argument an: attribute: ein Zuordnungs-Dataset.
Extrahieren wir nun die Werte aus diesem einfachen JSON-String:
WITH '{"name": "Avatar", "gender": "M", "age": 14 }' as jsonString
SELECT mapValues(jparse(jsonString)) as Values
Für den verschachtelten JSON-String funktioniert es auf die gleiche Weise, allerdings werden nur die Werte der ersten Ebene extrahiert und deserialisiert.
WITH '{"value1": "test", "value2": {"nestedValue1": [1, 2, 3], "nestedValue2": 100}}' as jsonString
SELECT mapValues(jparse(jsonString)) AS values
Der Wert des verschachtelten Objekts kann angezeigt werden, indem die Visualisierung in den Diagrammtyp JSON geändert wird:
Visualisierung
Im vorherigen Blogbeitrag dieser Reihe haben wir einige sofort einsatzbereite Visualisierungen wie Heatmaps, Histogramme und Zuordnungs-Widgets behandelt. Hier möchte ich eine vorhandene NRQL-Klausel (wieder) einführen, die beim Glätten der Diagramme oder beim Bereitstellen weiterer Datenpunkte für Visualisierungen wie Linien-, Flächen- oder gestapelte Säulendiagramme helfen kann.
Slide By
Die SLIDE BY
-Klausel ermöglicht sogenannte gleitende Fenster. Gleitende Fenster gruppieren Daten in überlappende Zeitfenster oder Zeit-Buckets, was sich von kaskadierenden Fenstern unterscheidet.
Diese Fenster können dazu beitragen, Liniendiagramme zu glätten und Ihren Diagrammen eine höhere Auflösung zu verleihen. Diese Feature kann besonders nützlich sein, wenn Sie ein größeres Dataset in einem TIMESERIES-Format mit mehr Daten in jedem Zeitabschnitt auswerten möchten.
Syntax
Die SLIDE BY
-Klausel kann zusammen mit der TIMESERIES
-Klausel verwendet werden.
Die Syntax lautet wie folgt: SELECT ... TIMESERIES units SLIDE BY units
Verwendung
Das folgende Beispiel zeigt die Abfrage der durchschnittlichen Dauer von Transaktionen SINCE 5 MINUTES AGO
unter Verwendung eines TIMESERIES-Bucket von jeweils 1 Minute. Das Diagramm unten zeigt Ergebnisse aus 5 Buckets oder Zeitfenstern.
SELECT average(duration) FROM Transaction
TIMESERIES 1 minute SINCE 5 minutes ago
Mithilfe der SLIDE BY-Klausel kann dasselbe Diagramm ohne die Lücken in jedem Bucket angezeigt werden.
SELECT average(duration) FROM Transaction
TIMESERIES 1 minute SLIDE BY 30 seconds
SINCE 5 minutes ago
Hier ist ein weiteres Beispiel mit PageView-Metriken in einem Liniendiagramm.
Die Klausel TIMESERIES
bietet mehr Buckets und ein größeres Dataset zur Analyse. Wenn Sie jedoch mehr Datenpunkte im gleitenden Fensterbereich analysieren möchten, fügen Sie einfach die Klausel SLIDE BY
zur gleichen Abfrage hinzu, wie in diesem Beispiel gezeigt:
FROM PageView SELECT count(*) TIMESERIES 1 minute SLIDE BY 10 seconds
Beachten Sie, dass die Bucket-Größe gleich bleibt, die Datenpunkte jedoch weitaus höher sind als zuvor, sodass Sie eine höher aufgelöste Vorschau der PageView
-Metriken erhalten.
Referenzen:
- Erfahren Sie mehr über gleitende Fenster.
- In diesem Nerd Bytes-Video erfahren Sie mehr zu SLIDE BY.
Fazit
Durch die Beherrschung von NRQL können Sie Ihre Daten erfassen, transformieren und interpretieren, sodass Sie das Gesamtbild in leicht verständliche Teile zerlegen können. Auf diese Weise können Sie Probleme erkennen, sobald sie auftreten, und Ihre Daten in Echtzeit analysieren, sodass Sie Ihre Telemetriedaten optimal nutzen können. Egal, ob Sie die Performance optimieren, Trends erkennen, wichtige Metriken zur Unterstützung geschäftlicher Entscheidungen überwachen oder einfach nur Dashboards mit benutzerdefinierten Daten erstellen möchten: NRQL ist ein unverzichtbares Tool, das Ihnen dabei helfen kann, Ihre Daten umfassend zu verstehen.
Nächste Schritte
Was jetzt?
- Sie können NRQL interaktiv lernen, indem Sie unsere NRQL-Lern-App verwenden.
- Erkunden Sie den New Relic Query Builder und erstellen Sie Ihre eigenen Diagramme und Dashboards.
- Erfahren Sie mehr über unsere NRQL-Konsole und werden Sie NRQL-Profi.
- Kommen Sie aus der Prometheus-Welt? Kein Grund zur Sorge. New Relic unterstützt Abfragen im PromQL-Stil.
Die in diesem Blog geäußerten Ansichten sind die des Autors und spiegeln nicht unbedingt die Ansichten von New Relic wider. Alle vom Autor angebotenen Lösungen sind umgebungsspezifisch und nicht Teil der kommerziellen Lösungen oder des Supports von New Relic. Bitte besuchen Sie uns exklusiv im Explorers Hub (discuss.newrelic.com) für Fragen und Unterstützung zu diesem Blogbeitrag. Dieser Blog kann Links zu Inhalten auf Websites Dritter enthalten. Durch die Bereitstellung solcher Links übernimmt, garantiert, genehmigt oder billigt New Relic die auf diesen Websites verfügbaren Informationen, Ansichten oder Produkte nicht.