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.
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.
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.
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
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.
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.
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 ( 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 ( Beispiel: |
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)
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 ( 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.
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()