Monitoring Query Language-(MQL-)Referenz

Machen Sie sich mit der Syntax von Monitoring Query Language-(MQL-)Ausdrücken vertraut, und informieren Sie sich zu den gültigen Werten für Intervall-, Statistik- und Prädikatoperatoren in MQL-Ausdrücken.

Informationen zum Bearbeiten von MQL  finden Sie unter MQL-Ausdruck für eine Abfrage bearbeiten. Informationen zum Abrufen eines bestimmten Zeitraums, z.B. der letzten Stunde, finden Sie unter Nicht standardmäßigen Zeitraum für eine Abfrage auswählen.

MQL-Syntax

Die MQL -Syntax bestimmt Ausdrücke für das Abfragen von Metriken, die im Monitoring-Service veröffentlicht werden. MQL-Ausdrücke definieren Abfragen (einschließlich Alarmabfragen). MQL verarbeitet aggregierte Daten.

Im folgenden Diagramm werden erforderliche Komponenten und allgemeine optionale Komponenten dargestellt.

Hinweis

Einige Komponenten können in einem MQL-Ausdruck mehrmals angezeigt werden. Beispiel: Sie können zwei Gruppierungsfunktionen verwenden (wie in groupBy(), gefolgt von einer Statistik, gefolgt von grouping()). Sie können auch Abfragen verschachteln.

Sie können auch mehrere Abfragen in einer einzigen Abfrage verknüpfen.

Bei Alarmen in der Konsole wird die Statistik absent() unter Operator aufgeführt. Siehe Abwesenheitsalarm erstellen.

Weitere Informationen zu absent() in der Konsole

Informationen zum Auswählen der Statistik absent() in der Konsole finden Sie im folgenden seitenspezifischen Anweisungen.

  • Seite Alarm erstellen oder Alarm bearbeiten: Wählen Sie im Basismodus unter Triggerregel unter Operator die Option absent aus. Im erweiterten Modus (wählen Sie In den erweiterten Modus wechseln) aktualisieren Sie den MQL-Ausdruck.
  • Seite Metrik-Explorer: Wählen Sie Erweiterter Modus aus, um MQL zu verwenden.
  • Seite Servicemetriken: öffnen Sie die Abfrage im Metrik-Explorer, und wählen Sie dann Erweiterter Modus aus, um MQL zu verwenden.
MQL-Ausdruck.

Informationen zum Lesen von Syntaxdiagrammen finden Sie unter Syntaxdiagramme lesen.

Gültige Werte für MQL-Ausdrücke

Hier finden Sie gültige Werte für Intervall-, Statistik- und Prädikatoperatoren in MQL-Ausdrücken.

Intervall

Hinweis

Berücksichtigen Sie neben dem Intervall auch die Auflösung und den Zeitraum.

Unterstützte Werte für das Intervall hängen vom in der Metrikabfrage angegebenen Zeitraum (gilt nicht auf Alarmabfragen) ab. Für kürzere Zeiträume werden weitere Intervallwerte unterstützt. Beispiel: Wenn Sie eine Stunde für den Zeitraum auswählen, werden alle Intervallwerte unterstützt. Wenn Sie 90 Tage als Zeitraum auswählen, werden nur Intervallwerte zwischen 1 Stunde und 1 Tag unterstützt.

Wählen Sie ein Alarmintervall basierend auf der Häufigkeit, mit der die Metrik ausgegeben wird. Beispiel: Eine alle fünf Minuten ausgegebene Metrik erfordert ein Alarmintervall von mindestens 5 Minuten. Die meisten Metriken werden jede Minute ausgegeben, was bedeutet, dass die meisten Metriken jedes Alarmintervall unterstützen. Um gültige Alarmintervalle für eine spezifische Metrik zu bestimmen, prüfen Sie die Metrikreferenz des relevanten Service.

Beispiel: Ein-Minuten-Intervall (1m)
CpuUtilization[1m].mean()

Gültige Intervalle für MQL-Ausdrücke: 1m-60m, 1h-24h, 1d

Anweisungen hierzu finden Sie unter Intervall für eine Abfrage auswählen.

Hinweis

Bei Metrikabfragen bestimmt das ausgewählte Intervall die standardmäßige Auflösung der Anforderung. Dadurch wird der maximale Zeitraum für die zurückgegebenen Daten festgelegt.

Bei Alarmabfragen hat das angegebene Intervall keine Auswirkung auf die Auflösung  der Anforderung. Der einzige gültige Wert der Auflösung einer Alarmabfrageanforderung ist 1m. Weitere Informationen zum Auflösungsparameter und seiner Verwendung in Alarmabfragen finden Sie unter Alarm.

Maximal zurückgegebener Zeitraum für eine Abfrage

Der maximal für eine Metrikabfrage zurückgegebene Zeitraum hängt von der Auflösung ab. Bei Metrikabfragen ist die Auflösung standardmäßig identisch mit dem Abfrageintervall.

Der maximale Zeitraum wird unabhängig von der angegebenen Endzeit mit der aktuellen Zeit berechnet. Im Folgenden werden die maximalen Zeiträume aufgeführt, das für jede in der Konsole verfügbare Intervallauswahl zurückgegeben wird (Basismodus).

Intervall Standardauflösung (Metrikabfragen) Maximal zurückgegebener Zeitraum

1 Minute

Automatisch (Seite Servicemetriken)*, wenn der ausgewählte Zeitraum 6 Stunden oder weniger beträgt

1 Minute 7 Tage

5 Minuten

Automatisch (Seite Servicemetriken)*, wenn der ausgewählte Zeitraum mehr als 6 Stunden und weniger als 36 Stunden beträgt

5 Minuten 30 Tage

1 Stunde

Automatisch (Seite Servicemetriken)*, wenn der ausgewählte Zeitraum mehr als 36 Stunden beträgt

1 Stunde 90 Tage

1 Tag

1 Tag 90 Tage

* Der maximale Zeitraum, den bei Auswahl von Automatisch unter Intervall (nur Seite Servicemetriken) zurückgegeben wird, wird durch die automatische Intervallauswahl bestimmt. Die automatische Intervallauswahl basiert auf dem ausgewählten Zeitraum.

Informationen zum Festlegen einer nicht standardmäßigen Auflösung, die vom Intervall abweicht, finden sie unter Nicht-Standardauflösungen für eine Abfrage auswählen.

Beispiel 1 für zurückgegebene Daten
Ein-Minuten-Intervall und Auflösung bis zur aktuellen Zeit, gesendet um 10:00 am 8. Januar. Es wurde keine Auflösungs- oder Endzeit angegeben. Daher entspricht die Auflösung standardmäßig dem Intervallwert von 1m, und die Endzeit entspricht der aktuellen Zeit (2023-01-08T10:00:00.789Z). Diese Anforderung gibt Metrikdatenpunkte von maximal 7 Tagen zurück. Der früheste Datenpunkt, der innerhalb dieses Zeitraums von sieben Tagen möglich ist, wäre 10:00 Uhr am 1. Januar (2023-01-01T10:00:00.789Z).
Beispiel 2 für zurückgegebene Daten
Intervall von fünf minuten mit einer lösung von einer minute, zurückgehend bis zu vor zwei tagen, gesendet am 8 januar um 10:00. Da die Auflösung den maximalen Zeitraum bestimmt, werden Metrikdatenpunkte von maximal 7 Tagen zurückgegeben. Während die angegebene Endzeit 10:00 Uhr am 6. Januar (2023-01-06T10:00:00.789Z) war, wäre der frühestmögliche Datenpunkt in diesem Zeitraum von sieben Tagen 10:00 Uhr am 1. Januar (2023-01-01T10:00:00.789Z). Deshalb können in diesem Beispiel nur Metrikdatenpunkte von 5 Tagen zurückgegeben werden.

Statistik

Die Statistik ist die Aggregationsfunktion, die auf die Gruppe von Rohdatenpunkten im angegebenen Intervall angewendet wurde.

Beispiel: Statistik "mean" (Mittel)
CpuUtilization[1m].mean()

Anweisungen hierzu finden Sie unter Statistik für eine Abfrage auswählen.

Nachfolgend sind gültige Statistiken aufgeführt.

Statistik (MQL-Ausdruck) Statistikoption (Basismodus in der Konsole) Beschreibung
absent() (siehe Operator absent)

Abwesenheitsprädikat.

Gibt "true" (1) zurück, wenn die Metrik während des gesamten Intervalls fehlt.

Gibt "false" (0) zurück, wenn die Metrik während des Intervalls vorhanden ist.

Wird nach dem Abwesenheitserkennungszeitraum ignoriert, und es werden keine Werte generiert.

Die Standardperiode für die Abwesenheitserkennung beträgt zwei Stunden. Sie können diese Periode beim Erstellen oder Aktualisieren eines Abwesenheitsalarms anpassen. Siehe Abwesenheitserkennungszeitraum für eine Alarmabfrage anpassen.

Gültige Werte reichen von einer Minute (1m) bis zu drei Tagen (3d oder 72h). Geben Sie die Zeit in der Abwesenheitserkennungsperiode mit einer Zahl und Einheit an (m, h oder d für Minute, Stunde oder Tag).

Verwenden Sie diese Statistik in allgemeinen Abfragen sowie in Abwesenheitsalarmen. Siehe Prädikat in einer Abfrage angeben.

avg() (nicht verfügbar) Gibt den Wert der Summe dividiert durch die Anzahl während des angegebenen Intervalls zurück. Identisch mit mean().
count() Anzahl Gibt die Anzahl der im angegebenen Intervall empfangenen Beobachtungen zurück.
first() (nicht verfügbar) Für jedes Intervall wird der Wert mit dem frühesten Zeitstempel im angegebenen Intervall zurückgegeben.
increment() (nicht verfügbar) Gibt die Änderung pro Intervall zurück.
last() (nicht verfügbar) Für jedes Intervall wird der Wert mit dem letzten Zeitstempel im angegebenen Intervall zurückgegeben.
max() Max. Gibt den höchsten Wert zurück, der während des angegebenen Intervalls beobachtet wurde.
mean() Mittelwert Gibt den Wert der Summe dividiert durch die Anzahl während des angegebenen Intervalls zurück.
min() Min. Gibt den niedrigsten Wert zurück, der während des angegebenen Intervalls beobachtet wurde.
percentile(p)

P50

P90

P95

P99

P99.9 (nur Seite Servicemetriken)

Gibt den geschätzten Wert des angegebenen Perzentils (p bei Verwendung von SDK, CLI oder API) während des angegebenen Intervalls zurück. Gültige Werte sind größer als 0,0 und kleiner als 1,0.

Beispiel: percentile(0.8) gibt den Wert des 80. Perzentils zurück.

rate() Satz Gibt die durchschnittliche Änderungsrate pro Intervall zurück. Die Einheit ist "pro Sekunde".
sum() Summe Gibt die Summe aller Werte pro Intervall zurück.

Prädikatoperatoren

Die Prädikatkomponente behält nur angegebene Werte aus den Metrikstreams bei. Verwenden Sie einen Prädikatoperator, um einen Schwellenwert oder eine Abwesenheit zu definieren.

Beispiel 1: Größer als 80 Prozent für die mittlere CPU-Auslastung
CpuUtilization[1m].mean() > 80
Beispiel 2: Zwischen 60 und 80 Prozent für die mittlere CPU-Auslastung
CpuUtilization[1m].mean() in (60, 80)
Beispiel 3: Größer als 1 für Fehler
ServiceConnectorHubErrors[1m].count() > 1
Beispiel 4: Mehr als 85 für CPU-Auslastung im 90. Perzentil (Auswahl einer Availability-Domain und Gruppierung nach Pool)
CpuUtilization[1m]{availabilityDomain = "VeBZ:PHX-AD-1"}.groupBy(poolId).percentile(0.9) > 85
Beispiel 5: Mindestens 20 für minimale CPU-Auslastung (entweder "ol8" oder "ol7")
CpuUtilization[1m]{resourceDisplayName =~ "ol8|ol7"}.min() >= 20
Beispiel 6: Mindestens 30 für minimale CPU-Auslastung (Instanznamen, die mit "instance-2023-" beginnen)
CpuUtilization[1m]{resourceDisplayName =~ "instance-2023-*"}.min() >= 30
Beispiel 7: Abwesenheit von CPU-Auslastungsmetriken für angegebene Ressource, 20 Stunden für Abwesenheitserkennungszeitraum
CpuUtilization[1m]{resourceId = "<resource_identifier>"}.groupBy(resourceId).absent(20)
absent()-Beschreibung: Gibt "true" (1) zurück, wenn die Metrik während des gesamten Intervalls fehlt. Gibt "false" (0) zurück, wenn die Metrik während des Intervalls vorhanden ist. Wird nach dem Abwesenheitserkennungszeitraum ignoriert, und es werden keine Werte generiert.

Anweisungen hierzu finden Sie unter Prädikat in einer Abfrage angeben.

Nachfolgend sind gültige Operatoren aufgeführt.

Operator (MQL-Ausdruck) Operatoroption (Basismodus in der Konsole) Anmerkungen
> größer als
>= größer als oder gleich
== gleich
=~ (nicht verfügbar) Fuzzy-Zuordnung.
!= (nicht verfügbar) Ungleich.
< kleiner als
<= weniger als oder gleich
in zwischen (einschließlich der angegebenen Werte) Einschließlich der beiden angegebenen Werte.
not in außerhalb (einschließlich der angegebenen Werte) Einschließlich der beiden angegebenen Werte.
(Siehe Statistik absent()) abwesend

Abwesenheitsprädikat.

Gibt "true" (1) zurück, wenn die Metrik während des gesamten Intervalls fehlt.

Gibt "false" (0) zurück, wenn die Metrik während des Intervalls vorhanden ist.

Wird nach dem Abwesenheitserkennungszeitraum ignoriert, und es werden keine Werte generiert.

Die Standardperiode für die Abwesenheitserkennung beträgt zwei Stunden. Sie können diese Periode beim Erstellen oder Aktualisieren eines Abwesenheitsalarms anpassen. Siehe Abwesenheitserkennungszeitraum für eine Alarmabfrage anpassen.

Gültige Werte reichen von einer Minute (1m) bis zu drei Tagen (3d oder 72h). Geben Sie die Zeit in der Abwesenheitserkennungsperiode mit einer Zahl und Einheit an (m, h oder d für Minute, Stunde oder Tag).

Verwenden Sie diese Statistik in allgemeinen Abfragen sowie in Abwesenheitsalarmen. Siehe Prädikat in einer Abfrage angeben.

Anweisungen zu Alarmen finden Sie unter Schwellenwertalarm erstellen und Abwesenheitsalarm erstellen.

Arithmetische Operatoren

Die folgenden arithmetischen Operatoren werden in MQL-Ausdrücken unterstützt.

Bediener Beschreibung
+ Hinzufügen
- Subtrahieren
* Multiplizieren
/ Divide
% Modulo (Rest teilen und zurückgeben)

Beispiel 1: Berechnen Sie den verfügbaren Prozentsatz der CPU-Auslastung (Metrik CPUUtilization im oci_computeagent-Namespace).

100 - CpuUtilization[1m].mean()

Beispiel 2: Wert in Sekunden statt der Standardeinheit der Metrik in Millisekunden berechnen (Metrik TotalRequestLatency im oci_objectstorage-Namespace)

TotalRequestLatency[1m].mean() / 1000

Join-Abfragen

Verwenden Sie die Operatoren && (AND) und || (OR), um Abfragen zu verknüpfen. Mehrere verknüpfte Abfragen fungieren als einzelne Abfrage.

Hinweis

Die Operatoren && (AND) und || (OR) können nur zwischen Abfragen verwendet werden. Verwenden Sie sie nicht zwischen Dimensionssets. Beispiel: Die folgende Abfrage ist ungültig: CpuUtilization[1m]{faultDomain =~ "FAULT-DOMAIN-1|FAULT-DOMAIN-2" || resourceDisplayName = "test"}.mean()
Join-Operator Beschreibung
&& AND: Verknüpfen Sie Abfragen. Gibt "true" zurück, wenn beide Operanden wahr sind. Gibt andernfalls "false" zurück.
|| OR: Join-Abfragen Gibt "true" zurück, wenn ein Operand wahr ist oder wenn beide Operanden wahr sind. Gibt andernfalls "false" zurück.

Beispiel 1: Abfragen mit OR verknüpfen Geben Sie "true" zurück, wenn sich der Datenpunkt für die CPU-Auslastung in Faultdomain 1 oder 2 befindet, ODER der Datenpunkt für die Speicherauslastung in Faultdomain 1 oder 2.

CpuUtilization[1m]{faultDomain =~ "FAULT-DOMAIN-1|FAULT-DOMAIN-2"}.mean() || MemoryUtilization[1m]{faultDomain =~ "FAULT-DOMAIN-1|FAULT-DOMAIN-2"}.mean()

Beispiel 2: Alarmabfragen mit AND verknüpfen. Alarm auslösen (Übergang in Auslösestatus) nur, wenn beide Abfragen wahr sind: Mindestens ein Fehler ist vorhanden UND der mittlere Fehler ist größer als die Hälfte.

ServiceConnectorHubErrors[1m].count() > 1 && ServiceConnectorHubErrors[1m].mean() > 0.5

Beispiel 3: Verknüpfen Sie Alarmabfragen mit AND. Lösen Sie den Alarm (Übergang in den Auslösestatus) nur aus, wenn beide Abfragen wahr sind: Bei kleineren Lesevorgängen (0 bis 8 Kilobyte) überschreitet das 50. Perzentil der Anforderungen 100 UND die mittlere Latenz ist kleiner als 0,01.

FileSystemReadRequestsBySize[5m]{resourceType = "filesystem", size = "0B_to_8KiB"}.percentile(.50) > 100 && FileSystemReadAverageLatencybySize[5m]{resourceType = "filesystem", size = "0B_to_8KiB"}.mean() > 0.01

Fuzzyübereinstimmung

Geben Sie ungefähre ("Fuzzy-")Übereinstimmungen mit Dimensionswerten in einem MQL-Ausdruck an.

Verwenden Sie Fuzzy Matching, wenn Sie mehrere Werte für einen Dimensionsnamen angeben.

Statt des Gleichheitszeichens (=) vor dem Werteset den folgenden Vergleichsoperator verwenden.

Vergleichsoperator Beschreibung
=~ (Gleichheitszeichen gefolgt von Tilde) Ungefähr gleich. Für Fuzzy-Übereinstimmungen verwendet

Bei der Fuzzy-Suche setzen Sie das Wertewerteset in Anführungszeichen: name = "val*" oder name = "value1|value2"

Ändern Sie das Werteset mit mindestens einem der folgenden Zeichen.

Zeichen für Fuzzy-Übereinstimmung eines Werts Beschreibung
* (Sternchen) Platzhalter für null bis viele Zeichen.
| (Pipe) OR-Operand für Dimensionswerte.

Beispiel für den Fuzzy-Abgleich für zwei mögliche Ressourcennamen ("ol8" oder "ol7"):

CpuUtilization[1m]{resourceDisplayName =~ "ol8|ol7"}.min() >= 20

Beispiel für den Fuzzy-Abgleich für Ressourcennamen mit dem Ausdruck "instance-2023-":

CpuUtilization[1m]{resourceDisplayName =~ "instance-2023-*"}.min() >= 30

Beispiel für den Fuzzy-Abgleich für drei Dimensionswertesets (Test-Compute-Instanzen in Faultdomain 1, die die Ausprägung myshape verwenden):

CpuUtilization [1m]{faultDomain =~ "FAULT-DOMAIN-1", resourceDisplayName =~ "test*", shape =~ "myshape"}.mean()