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

Nr. 1: X aus Y auswählen

SELECT X from Y , FROM Y SELECT X

Dies ist die einfachste Abfragemethode. Jede NRQL-Abfrage beginnt mit einer SELECT-Anweisung oder einer FROM-Klausel. Beginnen Sie Ihre erste Abfrage am besten mit FROM. Dies zeigt Ihnen eine Liste der Werte für das verfügbare Event bzw. die verfügbare Metrik an, und SELECT gibt an, welchen Teil eines Datentyps Sie abfragen möchten, indem Sie ein Attribut angeben oder eine Funktion. Beispielsweise werden mit SELECT * FROM Transaction die Werte aller verfügbaren Attribute abgerufen, indem * als Platzhalter verwendet wird.

NRQL SELECT-Klausel

Um die automatischen Vorschläge des Query Builders zu nutzen, verwenden Sie die FROM-Klausel. Beispielsweise schlägt FROM Transaction SELECT transactionSubType nur das relevante Attribut des ausgewählten Datensatzes vor.

NRQL FROM-Klausel

Jede NRQL-Abfrage muss mit einer SELECT-Anweisung oder einer FROM-Klausel beginnen. Alle anderen Klauseln sind optional, aber wir könnten unsere anfängliche Abfrage weiter verbessern und beispielsweise den Zeitabschnitt genau angeben, Vergleiche anstellen oder Custom-Labels hinzufügen. Versuchen Sie Folgendes:

SINCE

Verwenden Sie die SINCE-Klausel, um den Beginn einer Zeitspanne für die zurückgegebenen Daten zu definieren. Sie können eine Zeitzone für die Abfrage angeben, nicht jedoch für die Ergebnisse. NRQL-Ergebnisse basieren auf Ihrer Systemzeit, z. B. since 5 minutes ago oder since 1 months ago limit max. Hinweis: Der Standardwert ist 1 hour ago.

UNTIL

Dies wird verwendet, um einen anderen Endwert als den Standardwert anzugeben. Sobald eine Zeitspanne angegeben wurde, werden die Daten aufbewahrt und können nach Ablauf des Zeitraums überprüft werden. Hinweis: Der Standardwert ist NOW.

Hier ist ein nützliches Szenario, in dem wir SINCE und UNTIL kombinieren können, um ein Zeitreihendiagramm für max(duration) von Transaktionen für 1 Monat abzüglich der Daten von heute zu erstellen:

FROM Transaction 
SELECT MAX(duration) 
WHERE appName = 'node-express-mongodb' 
since 1 months ago until 1 DAY ago TIMESERIES auto
NRQL SINCE UNTIL-Klausel

COMPARE WITH

Um die Werte für zwei verschiedene Zeitspannen zu vergleichen, erfordert COMPARE WITH eine SINCE- oder UNTIL-Anweisung. Die durch COMPARE WITH angegebene Zeit ist relativ zu der durch SINCE oder UNTIL angegebenen Zeit. Zum Beispiel: Durch SINCE 1 day ago COMPARE WITH 1 day ago wird gestern mit dem Tag davor verglichen. Hier ist ein Beispiel zum Vergleichen der Werte für zwei verschiedene Zeitspannen:

SELECT average(duration) FROM Transaction SINCE 1 DAY AGO COMPARE WITH 1 WEEK AGO
NRQL COMPARE-Klausel (mit und ohne)

AS

Die AS-Klausel kann verwendet werden, um ein Attribut, einen Aggregator oder das Ergebnis einer mathematischen Funktion zu kennzeichnen. Dies kann beim Erstellen von Diagrammen äußerst hilfreich sein, da so das Ergebnis einer Gleichung oder einer Abfrage klarer identifiziert werden kann. Im Folgenden sehen Sie ein Beispiel für ein Diagramm, in dem AS zur Beschriftung eines Datensatzes verwendet wurde. Diese Beschriftung kann das Verständnis der Diagrammergebnisse erleichtern, da sie die Quelle der Daten im Diagramm klar angibt.

SELECT count(*)/uniqueCount(session) AS 'Pageviews per Session'
FROM PageView
NRQL AS-Klausel (Vergleich)

Referenzen


Nr. 2: Mathematische Funktionen

NRQL ermöglicht Ihnen die Verwendung einfacher und komplexer mathematischer Operatoren in einer SELECT-Klausel. Sie können mathematische Berechnungen für einzelne Attribute und auch für die Ausgabe von Aggregatorfunktionen verwenden.

  1. count : Damit wird die Anzahl der verfügbaren Datensätze ermittelt. Diese Funktion ähnelt SQL, sie zählt alle Datensätze für das angegebene Attribut.

    FROM Transaction SELECT count(*)
    

    example for count(*)

  2. average , min, max : – Damit werden Mindestwert, Höchstwert und Durchschnittswert eines Attributs berechnet. Sie können beispielsweise die Transaktionsdauer prüfen

    FROM Transaction
    SELECT average(duration) ,max(duration), min(duration)
    WHERE host LIKE '%west%'
    

example for average(), min() & max()

  1. percentage : Damit berechnen Sie den Prozentsatz eines Zieldatensatzes. Das erste Argument erfordert eine Aggregatorfunktion für das gewünschte Attribut.

    FROM TRANSACTION
    SELECT percentage(count(*), WHERE error IS true) AS 'Error Percent'
    WHERE host LIKE '%west%' EXTRAPOLATE
    

    NRQL for percentage

  2. percentile : Damit lässt sich das Perzentil für das erforderliche Attribut berechnen

    FROM TRANSACTION
    SELECT percentile(duration, 95, 75, 60)
    WHERE host LIKE '%west%' EXTRAPOLATE
    

95., 75. und 60. Perzentil für Transaktionsdauer

Referenzen


Nr. 3: Zeitreihen

Verwenden Sie die TIMESERIES-Klausel, um Daten als Zeitreihen zu erhalten, die in Zeitblöcke unterteilt sind. Diese Zeitblöcke werden auch „Buckets“ genannt und können als Sekunden, Minuten, Stunden usw. definiert werden. Das Stichwort TIMESERIES kann jeder Abfrage hinzugefügt werden, die eine Aggregationsfunktion verwendet, um die Werte im Zeitverlauf darzustellen.

    FROM Transaction
    SELECT MAX(duration)
    WHERE appName = 'node-express-mongodb'
    SINCE 1 MONTHS AGO
    TIMESERIES AUTO

Timeseries.

Sie können auch die Zeitabschnitte für die Serie definieren, z. B. TIMESERIES 30 seconds, um Datenpunkte in der Serie in 30-Sekunden-Intervallen zu erfassen, TIMESERIES 1 minute, um Datenpunkte in der Serie in 1-Minuten-Intervallen zu erfassen, und TIMESERIES max, um alle Datenpunkte in der Serie ohne definiertes Intervall zu erfassen. Dadurch können Sie die Zeitabschnitte der Serie an den Zeitrahmen anpassen, mit dem Sie arbeiten möchten.

Referenzen


Nr. 4: FACET (oder Gruppieren nach)

FACET

Verwenden Sie FACET, um Ihre Ergebnisse bedingt nach Attributwerten zu gruppieren und für jede Gruppe zu trennen. Dies kann hilfreich sein, wenn Sie Ihre Daten nach verschiedenen Kategorien oder Dimensionen analysieren möchten.

Hier ist ein einfaches Beispiel mit der Klausel FACET, in der Sie das Attribut PageView anhand jeder in Ihrem Datensatz vorhandenen Stadt gruppieren können:

SELECT count(*) FROM PageView FACET city

Das Ergebnis dieser Abfrage zeigt Ihnen die Anzahl der Seitenaufrufe für jede Stadt in Ihrem Datensatz, aufgeteilt in verschiedene Gruppen basierend auf dem City-Attribut.

example for FACET clause

FACET CASES

Die andere Variante von Facet ist Facet Cases. Wenn wir das Stichwort cases zusammen mit Facet verwenden, können wir der Abfrage mehrere Bedingungen hinzufügen oder sogar mehrere Attribute innerhalb eines FACET CASE kombinieren.

Hier ist ein Beispiel, in dem Sie die FACET CASES-Klausel verwenden können, um PageView-Daten abzufragen und mehrere Ergebnisse unterschiedlicher Dauer aus dem Datensatz abzurufen:

SELECT count(*) FROM PageView 
FACET CASES 
(WHERE duration < 1,
 WHERE duration > 1 and duration < 10)

Example for FACET CASES

Um Ihre Abfrageergebnisse besser lesbar und verständlicher zu machen, können Sie jeder Bedingung in den FACET CASES ein benutzerdefiniertes Label zuweisen, indem Sie die Option as für die Beschriftung verwenden:

SELECT count(*) from Transaction
FACET CASES(
where response.status LIKE '2%' OR httpResponseCode LIKE '2%' as '2xx Antworten',
where response.status LIKE '3%' OR httpResponseCode LIKE '3%' as '3xx Antworten',
where response.status LIKE '4%' OR httpResponseCode LIKE '4%' as '4xx Antworten',
where response.status LIKE '5%' OR httpResponseCode LIKE '5%' as '5xx Antworten'
)

FACET CASES with ‘AS’ label

Referenzen


Nr. 5: Filter

Das Filtern Ihrer Abfrageergebnisse kann nützlich sein, um die Ergebnisse auf die relevantesten Informationen einzugrenzen. NRQL bietet eine Vielzahl von Methoden zum Filtern Ihrer Datensätze.

Platzhalterfilter

Platzhalter- oder Wildcard-Filter sind sinnvoll, wenn Sie ein Abfrageergebnis mit einem bestimmten Muster für ausgewählte Datensatzeigenschaften filtern möchten. NRQL ermöglicht das Hinzufügen von Platzhalterfiltern mithilfe des Symbols %.

Im folgenden Beispiel möchten wir einen Durchschnittswert für alle Eigenschaften in unserem Datensatz erhalten, die auf .duration enden. In den Ergebnissen sehen wir zwei Eigenschaften, die unserem Filter entsprechen:

FROM Metric SELECT average(%.duration) FACET metricName TIMESERIES

Example dashboard for wildcard filter

filter()-Funktion

Die Funktion filter() ist hilfreich, wenn wir Ergebnisse aus mehreren Attributen abfragen und kombinieren müssen. Mit filter() können wir einfach mehrere Datensatzergebnisse in der Abfrage (durch Komma getrennt) kombinieren.

In diesem Beispiel verwenden wir einen Aggregator, um die Gesamtzahl aller Events in unserem Datensatz mit der Bezeichnung „Combined events“ aus den Attributen PageView und Transaction zu erhalten.

SELECT COUNT(*) AS 'Combined Events' FROM Transaction, PageView SINCE  1 DAY AGO

Example for simple usage of filter() function

Wir können die Ausgabe interessanter gestalten, indem wir die Gesamtanzahl aller Events sowie die jeweilige Anzahl nur für die Events PageView- und Transaction anzeigen. Dazu verwenden Sie einfach die Funktion filter() mit der folgenden Abfrage:

SELECT count(*) as 'Combined Events',
filter(count(*), WHERE eventType() = 'PageView') as 'Page Views',
filter(count(*), WHERE eventType()='Transaction') as 'Transactions'
FROM Transaction, PageView SINCE  1 DAY AGO

filter() function for events across multiple dimensions

Hier ist ein weiteres Beispiel, in dem wir filter() verwenden können, um mit der WHERE-Klausel die Anzahl verschiedener Metriken aus der gesamten Transaction abzurufen:

FROM Transaction SELECT 
filter(count(*), where request.uri not like '/api/%') as 'Others',
filter(count(*), where request.uri like '/api/tutorials%') as 'Tutorial Endpoints',
filter(count(*), where request.uri like '/api/weather%') as 'Weather Endpoints'
where appName = 'node-express-mongodb'
since 2 months ago limit max

filter() example with WHERE clause


Referenzen




In diesem Teil des Blogs haben wir die grundlegenden NRQL-Funktionen behandelt, die für einfache Datenabfragen erforderlich sind. Im nächsten Teil befassen wir uns mit den etwas komplexeren Features von NRQL. Mit diesen sind komplexe Datenabfragen und Visualisierungen möglich, sodass Sie das Beste aus Ihren Telemetriedaten herausholen können.