LogQL ↔ PromQL · Observabilité
Traduisez entre LogQL et PromQL.
Un convertisseur LogQL vers PromQL gratuit qui fonctionne en ligne, entièrement dans votre navigateur. Collez une requête, choisissez un sens, et obtenez une réécriture propre des parties qui se traduisent ainsi que des notes honnêtes sur celles qui ne le font pas.
Bac à sable de l’assistant LogQL ↔ PromQL
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.
L’écart
Même grammaire, mondes différents.
LogQL a été délibérément modelé sur PromQL : la syntaxe des matchers, les fonctions de vecteur de plage et les opérateurs d’agrégation semblent presque identiques. Les ingénieurs qui utilisent à la fois Loki et Prometheus veulent donc constamment transporter une requête de l’un vers l’autre — et se tournent vers le rechercher-remplacer, qui casse discrètement sur les parties qui ne s’alignent pas.
Le hic, c’est que PromQL ne voit jamais que des échantillons pré-agrégés, tandis que LogQL peut aussi filtrer et remodeler des lignes de logs brutes. Les filtres de ligne, les parseurs et line_format n’ont aucun équivalent PromQL. Ce convertisseur de requêtes Loki fait pour vous le fastidieux mappage des métriques et, tout aussi important, vous indique exactement quelles parties il n’a pas pu traduire — pour que vous les corrigiez à dessein plutôt que par surprise.
Vous découvrez les différences ? Allez voir ce qui se traduit et ce qui ne se traduit pas ou essayez le bac à sable interactif ci-dessus.
Le pipeline
Comment ça fonctionne.
Cinq étapes déterministes s’exécutent de bout en bout à chaque appui sur Convertir — toutes dans l’onglet de votre navigateur, à chaque fois.
-
Analyser la requête.
Votre requête source est décomposée en ses parties structurelles — sélecteurs, fonctions de plage, agrégations et comparaisons — dans le langage que vous avez choisi.
-
Traduire la forme métrique.
Les constructions qui partagent la grammaire — matchers, rate/over_time, sum by (…), seuils — sont traduites une à une dans le langage cible.
-
Isoler ce qui ne se traduit pas.
Les éléments LogQL propres aux logs — filtres de ligne, parseurs, line_format — sont mis à l’écart, puisque PromQL n’a aucun équivalent pour eux.
-
Produire la traduction.
La requête réécrite est rendue dans le langage cible, prête à être copiée dans Grafana, un fichier de règles ou une alerte.
-
Présenter les notes.
Tout ce qui est avec perte ou intraduisible est mis en évidence sous forme de note en langage clair, afin que vous sachiez exactement quoi vérifier à la main.
Ce qui se traduit
Ce qui se traduit, et ce qui ne se traduit pas.
Les requêtes Metric partagent la grammaire et se traduisent proprement. Les requêtes Log — la partie qui lit les lignes brutes — sont là où les deux langages se séparent. Voici la répartition honnête.
Se traduit proprement
Les matchers de labels, les fonctions de vecteur de plage (rate, increase, count_over_time), les opérateurs d’agrégation avec regroupement by / without, et les comparaisons de seuil partagent tous une syntaxe quasi identique. La même forme en LogQL devient la même forme en 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 N’a aucun équivalent
PromQL ne voit que des échantillons numériques, si bien que les parties de LogQL qui travaillent sur le texte des logs bruts n’existent tout simplement pas de l’autre côté. Les filtres de ligne (|= "error"), les parseurs (| json, | logfmt), line_format et label_format sont signalés sous forme de notes, jamais supprimés silencieusement.
# 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 Moteur d’aperçu
Une note sur la précision : le traducteur dans le navigateur est un moteur d’aperçu qui traduit les formes de requêtes métriques courantes — matchers de labels, fonctions de vecteur de plage comme rate / count_over_time, agrégations avec by / without, et comparaisons de seuil. Il n’exécute pas un analyseur LogQL ou PromQL complet, et il ne peut pas inventer un nom de métrique pour une série dérivée des logs. Considérez sa sortie comme un solide premier jet à relire — non comme un remplacement garanti pour des règles de production.
FAQ
Vos questions, nos réponses.
Appuyez sur une question pour afficher la réponse.
Que fait l’assistant LogQL ↔ PromQL ?
Il traduit les formes de requêtes métriques courantes entre le LogQL de Grafana Loki et le PromQL de Prometheus, dans les deux sens. Collez une requête, choisissez un sens, et l’assistant réécrit les sélecteurs, les fonctions de plage et les agrégations dans l’autre langage — puis signale tout ce qui ne peut pas être traduit proprement. Tout s’exécute entièrement dans votre navigateur, sans compte et sans téléversement.
Ma requête quitte-t-elle un jour mon navigateur ?
Non. L’assistant est 100 % côté client. Vos requêtes sont analysées et réécrites dans l’onglet de votre navigateur — rien n’est envoyé à un serveur, et il n’y a aucune inscription. Vous pouvez coller en toute sécurité vos noms de labels internes, namespaces et identifiants de service.
Toute requête LogQL peut-elle devenir une requête PromQL (et inversement) ?
Non, et l’assistant est explicite à ce sujet. LogQL et PromQL partagent la même grammaire de matchers et d’agrégation pour les requêtes métriques, si bien que des formes comme rate(), count_over_time(), sum by (…) et les comparaisons de seuil se traduisent bien. Mais les requêtes de logs LogQL — les filtres de ligne tels que |= "error", label_format, line_format et les parseurs pattern/regexp — n’ont aucun équivalent PromQL, car PromQL ne voit que des échantillons pré-agrégés. Ces parties sont signalées sous forme de notes plutôt que supprimées silencieusement.
Qu’est-ce qui se reporte proprement entre les deux ?
Les matchers de labels ({app="checkout", env=~"prod|stage"}), les fonctions de vecteur de plage (rate, irate, increase, *_over_time), les opérateurs d’agrégation (sum, avg, max, min, count, topk) avec regroupement by/without, et les comparaisons binaires/de seuil partagent tous une syntaxe quasi identique. L’assistant les traduit directement et laisse vos noms de labels et vos durées intacts.
Pourquoi convertir entre LogQL et PromQL ?
Les équipes utilisent souvent à la fois Loki et Prometheus et veulent qu’une métrique éprouvée dans l’un existe dans l’autre — par exemple, transformer un taux d’erreur dérivé des logs dans Loki en une forme de recording rule qu’elles peuvent raisonner face aux métriques Prometheus, ou porter un seuil d’alerte PromQL en un équivalent LogQL sur un flux de logs. L’assistant vous fournit un premier jet rapide ainsi qu’une liste claire de ce qu’il faut revérifier.
Quelle est la différence entre LogQL et PromQL ?
PromQL interroge des métriques numériques pré-agrégées stockées dans Prometheus ; LogQL interroge des flux de logs dans Grafana Loki et peut en dériver des métriques au moment de la requête. Les deux partagent une syntaxe de matcher de labels identique et les mêmes opérateurs d’agrégation (sum, avg, max), mais LogQL ajoute un pipeline final de filtres et de parseurs — séparés par | — qui n’a aucun équivalent en PromQL. La différence réside dans le modèle de données : des échantillons numériques face à des lignes de logs brutes.
Comment convertir une requête PromQL en LogQL ?
Conservez les matchers de labels tels quels — les sélecteurs de flux LogQL utilisent la même syntaxe {label="value"}. Enveloppez ensuite le sélecteur dans une agrégation de plage telle que rate(), count_over_time() ou sum_over_time() et ajoutez une plage comme [5m]. Comme Loki ne dispose d’aucune série de métriques préexistante, vous devrez également pointer le sélecteur vers un véritable flux de logs et souvent ajouter une étape de parseur (| json ou | logfmt) pour extraire les labels selon lesquels vous voulez regrouper.
Quelles fonctions PromQL ne se traduisent pas proprement en LogQL ?
Les fonctions qui supposent des séries instrumentées préexistantes ne se traduisent pas directement. histogram_quantile n’a aucun équivalent LogQL direct (il faudrait plutôt utiliser quantile_over_time avec un label déballé). irate() est approximée par rate() en LogQL, puisque Loki ne dispose d’aucune fonction de taux instantané équivalente. Le binary vector matching de PromQL sur des paires de métriques est lui aussi plus limité en LogQL, qui opère sur des flux de logs plutôt que sur des séries numériques.
LogQL est-il basé sur PromQL ?
Oui. LogQL a été délibérément modelé sur PromQL : les sélecteurs de flux utilisent une syntaxe {label="value"} identique et les requêtes métriques LogQL réutilisent les mêmes opérateurs d’agrégation — sum, avg, max, topk, by/without. L’ajout clé est le pipeline de logs pour le filtrage et l’analyse des lignes de logs brutes, de sorte que les ingénieurs déjà familiers de PromQL peuvent lire les requêtes métriques LogQL avec un minimum d’adaptation.
Cet outil est-il affilié à Grafana Labs ou à Prometheus ?
Non. Il s’agit d’un outil communautaire indépendant, qui n’est ni affilié à Grafana Labs ou au projet Prometheus, ni approuvé par eux. Loki et Grafana sont des marques de Raintank, Inc. ; Prometheus est une marque de The Linux Foundation. Les noms des éditeurs ne sont utilisés que pour décrire les langages de requête que l’assistant traduit.
More free, private DevOps tools.
L’assistant LogQL ↔ PromQL côtoie le reste du cluster d’observabilité OpsCanopy — expliquez une requête PromQL ou testez vos règles d’alerte Loki avec AlertLint, le tout basé sur le navigateur et privé par défaut.
Plus dans Observabilité
29 outils gratuits, tous utilisables hors ligne — opscanopy.com fonctionne sans inscription et sans rien téléverser.
Vous voulez l’ensemble complet ? Parcourez le répertoire des outils, ou découvrez pourquoi tout ici s’exécute entièrement côté client.
Ni affilié à Grafana Labs ou au Prometheus projet, ni approuvé par eux. Loki et Grafana sont des marques de Raintank, Inc. ; Prometheus est une marque de The Linux Foundation.