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 kann, machen Sie sich keine Sorgen. In diesem zweiteiligen Blog behandeln wir 10 wesentliche NRQL-Funktionen und -Klauseln, die Ihnen helfen werden, NRQL besser zu verstehen und tiefere Einblicke in Ihre Daten zu gewinnen. Mit diesen Funktionen und Klauseln können Sie Prozentsätze berechnen, Heatmaps erstellen, bedingte Widgets erstellen und vieles mehr. Durch den Einsatz von NRQL können Sie mehr aus Ihrer Datenanalyse herausholen. Erfahren Sie, wie Sie mit NRQL wertvolle Erkenntnisse aus Ihren Daten gewinnen.

In Teil 1 dieses Blogs haben wir die grundlegenden NRQL-Funktionen behandelt, die zum Abfragen von Daten erforderlich sind. In Teil 2 befassen wir uns mit den etwas komplexeren Funktionen von NRQL. Wir behandeln Themen wie Histogramme, Heatmaps und erweiterte Vergleichsoperatoren. Wir untersuchen, wie Sie mit NRQL komplexe Datensätze analysieren und Muster und Trends in Ihren Daten identifizieren können. Und wir betrachten einige Best Practices zum Schreiben effizienter Abfragen und zur Leistungsoptimierung Ihrer NRQL-Abfragen.

Nr. 6: Latest

Mit der Funktion latest() können Benutzer:innen den aktuellsten Wert eines Attributs über einen bestimmten Zeitraum abrufen. Mit einem einzelnen Attribut als Eingabe kann es den zuletzt aufgezeichneten Wert zurückgeben.

Hier ist ein einfaches Beispiel zum Abrufen des neuesten Werts des Attributs city im Karten-Widget aus dem PageView-Event:

FROM PageView
SELECT LATEST(city) AS 'Name:City'
FACET STRING(asnLatitude, precision: 5) AS 'Lat',
      STRING(asnLongitude, precision: 5) As 'Lang'
SINCE 1 HOUR AGO
LIMIT MAX

Map widget example with latest() clause


Referenzen


Nr. 7: Wenn

Was tun Sie, wenn Sie eine einfache if-then-else-Kontrollstruktur mit Ihrer Abfrage benötigen, um eine bedingte Ausgabe zu erhalten? NRQL stellt Ihnen eine if()-Funktion zur Verfügung, die in Kombination mit der SELECT-Klausel nützlich ist.

Hier ist ein einfaches Beispiel, in dem wir den Workload-Status überprüfen und die Ausgabe basierend auf der Eigenschaft statusValue als Ein oder Aus anzeigen:

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

7.if().png

Referenzen

  • Lesen Sie mehr über if().

Nr. 8: Aparse

aparse ist eine nützliche Funktion, um bestimmte Werte aus einer Zeichenfolge zu extrahieren. Sie können damit Strings parsen, die strukturierte Daten enthalten, und daraus bestimmte Werte extrahieren. Dies kann besonders nützlich sein, wenn Sie Logdaten oder andere Arten unstrukturierter Daten analysieren müssen.

aparse() benötigt zwei Argumente: – Ein Attribut mit einem String-Wert. – Ein Zeichenmuster, das Ankerzeichenfolgen und zu extrahierende Zeichen enthält. Beispielsweise kann www.*.com verwendet werden, um nur den Domain-Teil aus einer URL zu extrahieren.

Das folgende Bild ist ein Beispiel, bei dem der Hoststandort einen vorab festgelegten Wert enthält: NRQL without aparse

Im nächsten Beispiel extrahiert die Abfrage nur den gewünschten Teil der Zeichenfolge aus dem Ergebnis, behält jedoch den Standortnamen bei, nachdem der Präfixteil basierend auf dem angegebenen Anker-/Regex-Muster entfernt wurde.

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

NRQL with aparse to capture location


Referenzen

  • Lesen Sie mehr über aparse.

Nr. 9: Unterabfragen

NRQL unterstützt auch Unterabfragen. Dies sind Abfragen innerhalb anderer Abfragen. Unterabfragen sind eine leistungsstarke Möglichkeit, mehrere Abfragen zusammen in NRQL zu verwenden und Ergebnisse aus mehreren verschiedenen Datasets zu generieren.

Hier ist ein einfaches Beispiel, in dem wir alle Transaktionen für Hosts filtern und finden, die Logfehler aufweisen, ohne explizit Hostnamen anzugeben:

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

9.subqueries.png

Unterabfrage mit IN-Klausel

Ein weiterer guter Use Case einer Unterabfrage ist die Erstellung einer dynamischeren Abfrage, anstatt mehrere Werte für Bedingungen zu schreiben. Wir können die IN()-Klausel mit einer Unterabfrage verwenden, was nützlich ist, wenn sich die Filterkriterien im Laufe der Zeit ändern oder erhöhen könnten.

Hier ist ein Beispiel für einen Use Case: Um die durchschnittliche Dauer aller Transaktionen für TransactionError über alle Entities hinweg zu ermitteln, können wir eine Beispielabfrage verwenden. Diese Abfrage sucht nach allen entity.guids unter Verwendung einer Unterabfrage und wendet dann das Ergebnis auf die WHERE-Klausel für die Aggregation von average(duration) an.

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


Referenzen


Nr. 10: Histogramme und Heatmaps

Histogramm

Mit Histogrammen können Benutzer:innen schnell Muster, Verteilungen und Trends in ihren Daten erkennen.

histogram() akzeptiert drei Argumente: – Attributname – Höchstwert des Sampling-Bereichs – Gesamtzahl der Buckets (zwischen 1 und 500), wobei die Bereichsgrenzen eingeschlossen sind

Sie können aus PageView ein Histogramm der Antwortzeiten erstellen (bis zu 10 Sekunden über 20 Buckets). Die Abfrage erzeugt eine Ausgabe von 20 verschiedenen Zeitblöcken (oder Buckets) auf der X-Achse für die Gesamtzahl der Anfragen auf der Y-Achse für das Attribut “duration” aus PageView.

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

Histogram() to showcase PageView duration across timebuckets

Heatmaps

Heatmaps() sind nützlich für die Visualisierung von Mustern in einem Datensatz. Die Farbintensität in der Heatmap ändert sich von heller zu dunkler, wenn die Werte steigen oder fallen.

Um eine Heatmap zu erstellen, verwenden Sie die Funktion Histogram() mit nur einem einzigen, numerischen Attribut und fügen Sie eine FACET-Klausel hinzu. Hier ist ein Beispiel einer Heatmap, die die verschiedenen Betriebssysteme zeigt, von denen aus in den letzten drei Stunden auf unsere Website zugegriffen wurde.

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

Heatmap showing PageViews by userAgentOS


Referenzen


Wenn Sie NRQL beherrschen, können Sie Ihre Daten erfassen und interpretieren und so das Gesamtbild in leicht verständliche Teile zerlegen. Dies hilft Ihnen, auftretende Probleme zu erkennen, Ihre Daten in Echtzeit zu analysieren und wertvolle Erkenntnisse zu gewinnen. Unabhängig davon, ob Sie die Performance optimieren, Trends erkennen oder wichtige Metriken überwachen möchten, um zu fundierten Geschäftsentscheidungen zu gelangen, ist NRQL ein unverzichtbares Tool, das Ihnen dabei helfen kann, Ihre Daten umfassend zu verstehen.