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.

Das folgende Diagramm zeigt die erforderlichen Komponenten und allgemeinen optionalen Komponenten.

Hinweis

Einige Komponenten können mehrmals in einem MQL-Ausdruck 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 einzelnen Abfrage verknüpfen.

Bei Alerts 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 in den folgenden seitenspezifischen Anweisungen.

  • Seite Alarm erstellen oder Alarm bearbeiten: Wählen Sie im Basismodus absent unter Operator unter Triggerregel aus. Im erweiterten Modus (wählen Sie In den erweiterten Modus wechseln) müssen Sie den MQL-Ausdruck aktualisieren.
  • Seite Metrik-Explorer: Wählen Sie Erweiterter Modus aus, um MQL zu verwenden.
  • Seite Service-Metriken: Öffnen Sie die Abfrage im Metrik-Explorer, und wählen Sie 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 angegebenen Zeitraum in der Metrikabfrage ab (gilt nicht für Alarmabfragen). 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 aus, mit der die Metrik ausgegeben wird. Beispiel: Eine alle fünf Minuten ausgegebene Metrik erfordert ein Alarmintervall von 5 Minuten oder höher. Die meisten Metriken werden jede Minute ausgegeben, was bedeutet, dass die meisten Metriken jedes Alarmintervall unterstützen. Um gültige Alarmintervalle für eine bestimmte Metrik zu bestimmen, prüfen Sie die Metrikreferenz des jeweiligen Service.

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

Gültige Intervalle für MQL-Ausdrücke folgen: 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, wodurch der maximale Zeitraum für die zurückgegebenen Daten festgelegt wird.

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, die für jede in der Konsole verfügbare Intervalloption zurückgegeben werden (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, der bei Auswahl der Option 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 unterscheidet, finden Sie unter Nicht standardmäßige Auflösung 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 Uhr 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 Auflösung von einer Minute, bis zu vor zwei Tagen, gesendet um 10:00 Uhr am 8. Januar. 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 der Rohdatenpunkte im angegebenen Intervall angewendet wird.

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 der Abwesenheitserkennungsperiode ignoriert und generiert keine Werte.

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

Gültige Werte reichen von einer Minute (1m) bis zu drei Tagen (3d oder 72h). Geben Sie die Zeit im Abwesenheitserkennungszeitraum mit einer Zahl und einer 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() Mittel 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: Mehr 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 die CPU-Auslastung im 90. Perzentil (Availability-Domain auswählen und nach Pool gruppieren)
CpuUtilization[1m]{availabilityDomain = "VeBZ:PHX-AD-1"}.groupBy(poolId).percentile(0.9) > 85
Beispiel 5: Mindestens 20 für die minimale CPU-Auslastung (Wählen Sie "ol8" oder "ol7")
CpuUtilization[1m]{resourceDisplayName =~ "ol8|ol7"}.min() >= 20
Beispiel 6: Mindestens 30 für die minimale CPU-Auslastung (Instanznamen auswählen, die mit "instance-2023-" beginnen)
CpuUtilization[1m]{resourceDisplayName =~ "instance-2023-*"}.min() >= 30
Beispiel 7: Metriken zur Abwesenheit der CPU-Auslastung für die angegebene Ressource, für den Zeitraum der Abwesenheitserkennung auf 20 Stunden gesetzt
CpuUtilization[1m]{resourceId = "<resource_identifier>"}.groupBy(resourceId).absent(20)
Beschreibung von absent(): 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 der Abwesenheitserkennungsperiode ignoriert, ohne dass Werte generiert werden.

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 Matching.
!= (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 der Abwesenheitserkennungsperiode ignoriert und generiert keine Werte.

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

Gültige Werte reichen von einer Minute (1m) bis zu drei Tagen (3d oder 72h). Geben Sie die Zeit im Abwesenheitserkennungszeitraum mit einer Zahl und einer 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.

Operator Beschreibung
+ Addieren
- Abziehen
* Multiplizieren
/ Divide
% Modulo (Divide und Return Rest)

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 anstelle der Standardmillisekundeneinheit der Metrik berechnen (Metrik TotalRequestLatency im oci_objectstorage-Namespace)

TotalRequestLatency[1m].mean() / 1000

Abfragen verknüpfen

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: Abfragen verknüpfen. Gibt True zurück, wenn beide Operanden wahr sind. Gibt ansonsten "false" zurück.
|| OR: Abfragen verknüpfen. Gibt True zurück, wenn einer der beiden Operanden wahr ist oder wenn beide Operanden wahr sind. Gibt ansonsten "false" zurück.

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

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

Beispiel 2: Verknüpfen Sie Alarmabfragen mit AND. Lösen Sie den Alarm (Übergang zum Auslösestatus) nur aus, 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 beträgt weniger 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

Fuzzyabgleich

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

Verwenden Sie den Fuzzy-Abgleich, wenn Sie mehrere Werte für einen Dimensionsnamen angeben.

Verwenden Sie statt des Gleichheitszeichens (=) vor dem Werteset den folgenden Vergleichsoperator.

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

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

Aktualisieren 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 eine Fuzzy-Übereinstimmung für zwei mögliche Ressourcennamen ("ol8" oder "ol7"):

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

Beispiel für eine Fuzzy-Übereinstimmung für Ressourcennamen mit dem Ausdruck "instance-2023-":

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

Beispiel für einen Fuzzy-Abgleich für drei Dimensionswertesets (Test von Compute-Instanzen in Faultdomain 1 mit der Ausprägung myshape):

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