LogQL ↔ PromQL · Observability
Übersetzen Sie zwischen LogQL und PromQL.
Ein kostenloser LogQL zu PromQL Konverter, der online und vollständig in Ihrem Browser arbeitet. Fügen Sie eine Abfrage ein, wählen Sie eine Richtung und erhalten Sie ein sauberes Umschreiben der Teile, die sich abbilden lassen, plus ehrliche Hinweise zu den Teilen, die das nicht tun.
LogQL ↔ PromQL Helper Playground
Tip: press Esc to release focus.
Pick a direction, paste or load a query, then convert to see the translated query and notes on what does and does not map here.
Die Lücke
Gleiche Grammatik, verschiedene Welten.
LogQL wurde bewusst nach dem Vorbild von PromQL gestaltet: die Matcher-Syntax, die Range-Vector-Funktionen und die Aggregationsoperatoren sehen nahezu identisch aus. Daher möchten Engineers, die sowohl Loki als auch Prometheus betreiben, ständig eine Abfrage vom einen in das andere übertragen — und greifen zu Suchen-und-Ersetzen, das bei den Teilen, die nicht zusammenpassen, klammheimlich versagt.
Der Haken ist, dass PromQL immer nur vor-aggregierte Samples sieht, während LogQL rohe Log-Zeilen auch filtern und umformen kann. Zeilenfilter, Parser und line_format haben überhaupt kein PromQL-Äquivalent. Dieser Loki-Abfrage-Konverter erledigt die langweilige Metrik-Abbildung für Sie und sagt Ihnen — was ebenso wichtig ist — genau, welche Teile er nicht übersetzen konnte, sodass Sie diese bewusst korrigieren statt durch Überraschung.
Neu bei den Unterschieden? Springen Sie zu was sich abbilden lässt und was nicht oder probieren Sie das Live-Playground oben aus.
Die Pipeline
So funktioniert es.
Fünf deterministische Schritte laufen bei jedem Druck auf Convert von Anfang bis Ende durch — jedes Mal vollständig in Ihrem Browser-Tab.
-
Die Abfrage parsen.
Ihre Ausgangsabfrage wird in ihre strukturellen Bestandteile zerlegt — Selektoren, Range-Funktionen, Aggregationen und Vergleiche — in der von Ihnen gewählten Sprache.
-
Die Metrik-Form abbilden.
Konstrukte mit gemeinsamer Grammatik — Matcher, rate/over_time, sum by (…), Schwellenwerte — werden eins zu eins in die Zielsprache übertragen.
-
Isolieren, was sich nicht abbilden lässt.
Reine Log-LogQL-Teile — Zeilenfilter, Parser, line_format — werden herausgelöst, da PromQL kein Äquivalent dafür hat.
-
Die Übersetzung ausgeben.
Die umgeschriebene Abfrage wird in der Zielsprache dargestellt, bereit zum Kopieren in Grafana, eine Rule-Datei oder einen Alert.
-
Die Hinweise melden.
Alles, was verlustbehaftet oder nicht abbildbar ist, wird als Hinweis in klarer Sprache sichtbar gemacht, sodass Sie genau wissen, was Sie von Hand prüfen müssen.
Was sich abbilden lässt
Was sich übersetzen lässt und was nicht.
Metric-Abfragen teilen sich die Grammatik und lassen sich sauber abbilden. Log-Abfragen — der Teil, der rohe Zeilen liest — sind der Punkt, an dem sich die beiden Sprachen trennen. Hier ist die ehrliche Aufteilung.
Lässt sich sauber abbilden
Label-Matcher, Range-Vector-Funktionen (rate, increase, count_over_time), Aggregations- operatoren mit by / without-Gruppierung und Schwellenwert- vergleiche verwenden alle eine nahezu identische Syntax. Dieselbe Form in LogQL wird zur selben Form in PromQL.
# LogQL metric query — error rate from a log stream
sum by (app) (
rate({app="checkout", env="prod"} |= "error" [5m])
) > 0.2 # PromQL — the same aggregation shape over a counter metric
sum by (app) (
rate(app_request_errors_total{app="checkout", env="prod"}[5m])
) > 0.2 Hat kein Äquivalent
PromQL sieht nur numerische Samples, daher existieren die Teile von LogQL, die auf rohem Log-Text arbeiten, auf der anderen Seite schlicht nicht. Zeilenfilter (|= "error"), Parser (| json, | logfmt), line_format und label_format werden als Hinweise gemeldet, niemals stillschweigend verworfen.
# These LogQL pieces have NO PromQL equivalent:
{app="checkout"} |= "error" # line filter — PromQL sees samples, not lines
| json | line_format "{{.msg}}" # parsers + line_format reshape log text
| label_format level=`{{.severity}}` # label_format rewrites labels at query time Preview Engine
Ein Hinweis zur Genauigkeit: Der Übersetzer im Browser ist eine Preview Engine, die die gängigen Formen von Metrik-Abfragen abbildet — Label-Matcher, Range-Vector-Funktionen wie rate / count_over_time, Aggregationen mit by / without und Schwellenwertvergleiche. Sie führt keinen vollständigen LogQL- oder PromQL-Parser aus und kann keinen Metrik-Namen für eine aus Logs abgeleitete Serie erfinden. Behandeln Sie ihre Ausgabe als soliden ersten Entwurf zur Prüfung — nicht als garantierten Drop-in für produktive Rules.
FAQ
Fragen, beantwortet.
Tippen Sie auf eine Frage, um die Antwort aufzuklappen.
Was macht der LogQL ↔ PromQL Helper?
Er übersetzt gängige Formen von Metrik-Abfragen zwischen LogQL von Grafana Loki und PromQL von Prometheus, in beide Richtungen. Fügen Sie eine Abfrage ein, wählen Sie eine Richtung, und der Helper schreibt die Selektoren, Range-Funktionen und Aggregationen in die jeweils andere Sprache um — und kennzeichnet anschließend alles, was sich nicht sauber abbilden lässt. Er läuft vollständig in Ihrem Browser, ohne Konto und ohne Upload.
Verlässt meine Abfrage jemals meinen Browser?
Nein. Der Helper arbeitet zu 100 % clientseitig. Ihre Abfragen werden innerhalb Ihres Browser-Tabs geparst und umgeschrieben — nichts wird an einen Server gesendet, und es gibt keine Registrierung. Sie können interne Label-Namen, Namespaces und Service-Bezeichner bedenkenlos einfügen.
Lässt sich jede LogQL-Abfrage in eine PromQL-Abfrage umwandeln (und umgekehrt)?
Nein, und der Helper macht das transparent. LogQL und PromQL teilen sich dieselbe Matcher- und Aggregationsgrammatik für Metrik-Abfragen, sodass sich Formen wie rate(), count_over_time(), sum by (…) und Schwellenwertvergleiche gut übersetzen lassen. LogQL-Log-Abfragen hingegen — Zeilenfilter wie |= "error", label_format, line_format sowie Pattern-/Regexp-Parser — haben kein PromQL-Äquivalent, weil PromQL nur vor-aggregierte Samples sieht. Diese Teile werden als Hinweise gemeldet, statt stillschweigend verworfen zu werden.
Was wird sauber zwischen den beiden übernommen?
Label-Matcher ({app="checkout", env=~"prod|stage"}), Range-Vector-Funktionen (rate, irate, increase, *_over_time), Aggregationsoperatoren (sum, avg, max, min, count, topk) mit by/without-Gruppierung sowie binäre Vergleiche und Schwellenwertvergleiche verwenden eine nahezu identische Syntax. Der Helper bildet diese direkt ab und lässt Ihre Label-Namen und Zeitdauern unverändert.
Warum überhaupt zwischen LogQL und PromQL konvertieren?
Teams betreiben häufig sowohl Loki als auch Prometheus und möchten, dass eine Metrik, die sie in einem System erprobt haben, auch im anderen existiert — etwa eine aus Logs abgeleitete Fehlerrate in Loki in die Form einer Recording Rule zu überführen, die sie gegen Prometheus-Metriken nachvollziehen können, oder einen PromQL-Alert-Schwellenwert in ein LogQL-Äquivalent über einen Log-Stream zu portieren. Der Helper liefert Ihnen einen schnellen ersten Entwurf plus eine klare Liste dessen, was Sie nochmals prüfen sollten.
Was ist der Unterschied zwischen LogQL und PromQL?
PromQL fragt vor-aggregierte numerische Metriken ab, die in Prometheus gespeichert sind; LogQL fragt Log-Streams in Grafana Loki ab und kann zur Abfragezeit Metriken daraus ableiten. Beide teilen sich eine identische Label-Matcher-Syntax und dieselben Aggregationsoperatoren (sum, avg, max), aber LogQL ergänzt eine nachgelagerte Pipeline aus Filtern und Parsern — getrennt durch | —, die in PromQL kein Gegenstück hat. Der Unterschied liegt im Datenmodell: numerische Samples gegenüber rohen Log-Zeilen.
Wie konvertiere ich eine PromQL-Abfrage in LogQL?
Behalten Sie die Label-Matcher unverändert bei — LogQL-Stream-Selektoren verwenden dieselbe {label="value"}-Syntax. Umschließen Sie den Selektor anschließend mit einer Range-Aggregation wie rate(), count_over_time() oder sum_over_time() und fügen Sie eine Range wie [5m] hinzu. Da Loki keine bereits vorhandenen Metrik-Serien besitzt, müssen Sie den Selektor außerdem auf einen echten Log-Stream richten und häufig eine Parser-Stufe (| json oder | logfmt) ergänzen, um die Labels zu extrahieren, nach denen Sie gruppieren möchten.
Welche PromQL-Funktionen lassen sich nicht sauber auf LogQL abbilden?
Funktionen, die bereits vorhandene instrumentierte Serien voraussetzen, lassen sich nicht direkt übersetzen. histogram_quantile hat kein direktes LogQL-Gegenstück (stattdessen bräuchten Sie quantile_over_time mit einem entpackten Label). irate() wird in LogQL durch rate() angenähert, da Loki keine äquivalente Funktion für die momentane Rate besitzt. Auch das binäre PromQL-Vektor-Matching auf Metrik-Paaren ist in LogQL eingeschränkter, da LogQL auf Log-Streams statt auf numerischen Serien arbeitet.
Basiert LogQL auf PromQL?
Ja. LogQL wurde bewusst nach dem Vorbild von PromQL gestaltet: Stream-Selektoren verwenden eine identische {label="value"}-Syntax, und LogQL-Metrik-Abfragen nutzen dieselben Aggregationsoperatoren — sum, avg, max, topk, by/without. Die zentrale Ergänzung ist die Log-Pipeline zum Filtern und Parsen roher Log-Zeilen, sodass Engineers, die bereits mit PromQL vertraut sind, LogQL-Metrik-Abfragen mit minimaler Umstellung lesen können.
Steht dies in Verbindung mit Grafana Labs oder Prometheus?
Nein. Dies ist ein unabhängiges Community-Tool und steht in keiner Verbindung zu Grafana Labs oder dem Prometheus-Projekt und wird von diesen nicht unterstützt. Loki und Grafana sind Marken von Raintank, Inc.; Prometheus ist eine Marke der The Linux Foundation. Die Anbieternamen werden ausschließlich verwendet, um die Abfragesprachen zu beschreiben, die der Helper übersetzt.
More free, private DevOps tools.
Der LogQL ↔ PromQL Helper steht neben dem Rest des OpsCanopy-Observability-Clusters — erklären Sie eine PromQL-Abfrage oder testen Sie Ihre Loki-Alert-Rules mit AlertLint, alles browserbasiert und standardmäßig privat.
Mehr aus Observability
29 kostenlose Tools, jedes einzelne offlinefähig — opscanopy.com funktioniert ohne Registrierung, und nichts wird hochgeladen.
Möchten Sie die gesamte Sammlung? Durchstöbern Sie das vollständige Tools-Verzeichnis, oder lesen Sie, warum hier alles vollständig clientseitig läuft.
Steht in keiner Verbindung zu Grafana Labs oder dem Prometheus-Projekt und wird von diesen nicht unterstützt. Loki und Grafana sind Marken von Raintank, Inc.; Prometheus ist eine Marke der The Linux Foundation.