PromQL-Kompatibilität

PromQL-Abfragen in Google Cloud Managed Service for Prometheus werden mithilfe der Monitoring Query Language (MQL) teilweise im Monarch-Backend ausgewertet und es gibt einige bekannte Unterschiede bei den Abfrageergebnissen. In diesem Dokument werden die Unterschiede beschrieben.

Abgesehen von den in diesem Dokument aufgeführten Unterschieden ist die PromQL in Managed Service for Prometheus mit der PromQL identisch, die in Prometheus-Version 2.44 verfügbar ist.

PromQL-Funktionen, die nach Prometheus-Version 2.44 hinzugefügt wurden, werden möglicherweise nicht unterstützt.

Abgleich mit Messwertnamen

Es wird nur der exakte Abgleich mit Messwertnamen unterstützt. Sie müssen in Ihrer Abfrage eine genaue Übereinstimmung mit dem Messwertnamen angeben.

Für häufige Szenarien, in denen ein regulärer Ausdruck für das __name__-Label verwendet wird, empfehlen wir die folgenden Umgehungslösungen:

  • In Prometheus-Adapterkonfigurationen wird häufig der Operator =~ verwendet, um mehrere Messwertnamen abzugleichen. Um dieses Problem zu beheben, erweitern Sie die Konfiguration, damit für jeden Messwert eine separate Richtlinie verwendet wird, und benennen Sie jeden Messwert explizit. Außerdem wird verhindert, dass das Autoscaling versehentlich auf unerwartete Messwerte angewendet wird.
  • Mithilfe von regulären Ausdrücken lassen sich häufig mehrere nichtdimensionale Messwerte im selben Diagramm darstellen. Wenn Sie beispielsweise einen Messwert wie cpu_servicename_usage haben, können Sie mit einem Platzhalter alle Ihre Dienste zusammen in einem Diagramm darstellen. Die Verwendung nicht dimensionsbasierter Messwerte wie dieser ist in Cloud Monitoring ausdrücklich unzulässig und führt zu einer extrem schlechten Abfrageleistung. Um dieses Problem zu beheben, verschieben Sie alle Dimensionen in Messwertlabels, anstatt sie in den Messwertnamen einzubetten.
  • Abfragen mehrerer Messwerte werden oft verwendet, um zu sehen, welche Messwerte abgefragt werden können. Wir empfehlen stattdessen den /labels/__name__/values-Aufruf, um Messwerte zu ermitteln. Sie können Messwerte auch über die Cloud Monitoring-Benutzeroberfläche entdecken.
  • Wenn Sie mehrere Messwerte abgleichen, sehen Sie, wie viele Datensätze pro Messwert gescrapt, aufgenommen und in Rechnung gestellt wurden. In Cloud Monitoring finden Sie diese Informationen auf der Seite Messwertverwaltung. Sie können auch mithilfe der Messwerte Aufgenommene Datensätze oder Datensätze nach Attributions-ID auf diese Informationen als Messdaten zugreifen.

Veraltung

Veralterung wird im Monarch-Backend nicht unterstützt.

Berechnung von irate

Wenn das Lookback-Window für die Funktion irate kleiner als die Schrittgröße ist, wird das Fenster auf die Schrittgröße erhöht. Monarch erfordert diese Änderung, um sicherzustellen, dass keine der Eingabedaten in der Ausgabe vollständig ignoriert werden. Dieser Unterschied gilt auch für rate-Berechnungen.

Berechnung von rate und increase

Wenn das Lookback-Window für die Funktion rate kleiner als die Schrittgröße ist, wird das Fenster auf die Schrittgröße erhöht. Monarch erfordert diese Änderung, um sicherzustellen, dass keine der Eingabedaten in der Ausgabe vollständig ignoriert werden. Dieser Unterschied gilt auch für irate-Berechnungen.

Es gibt Unterschiede bei Interpolations- und Extrapolationsberechnungen. Monarch verwendet einen anderen Interpolationsalgorithmus als Prometheus. Dieser Unterschied kann zu leicht unterschiedlichen Ergebnissen führen. Beispielsweise werden Monarch-Zählerstichproben mit einem Zeitraum gespeichert, nicht mit dem einzelnen Zeitstempel, den Prometheus verwendet. Daher können Zählerstichproben in Monarch in eine Ratenberechnung einbezogen werden, obwohl sie vom Prometheus-Zeitstempel ausgeschlossen werden würden. Dies führt in der Regel zu genaueren Ergebnissen, insbesondere bei Abfragen am Anfang oder Ende der zugrunde liegenden Zeitreihe.

Berechnung von histogram_quantile

Eine PromQL-histogram_quantile-Berechnung in einem Histogramm ohne Stichproben erzeugt einen NaN-Wert. Die Berechnung der internen Abfragesprache ergibt keinen Wert. Stattdessen wird der Punkt am Zeitstempel ignoriert.

Die Unterschiede bei der Ratenberechnung können sich auch auf die Eingabe für histogram_quantile-Abfragen auswirken.

Typspezifische Funktionen für unterschiedlich typisierte Messwerte

Obwohl das vorgelagerte Prometheus schwach typisiert ist, ist Monarch streng typisiert. Das bedeutet, dass die Ausführung von Funktionen mit spezifischer Typisierung auf einem Messwert mit anderer Typisierung (z. B. rate() auf einem GAUGE-Messwert oder histogram_quantile() auf einem COUNTER- oder nicht typisierten Messwert) in Managed Service for Prometheus nicht funktioniert, obwohl diese Funktionen im vorgelagerten Prometheus funktionieren.