Aller au contenu

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.

Fonctionne dans votre navigateur Sans inscription Gratuit et ouvert Mis à jour le 28 juil. 2026

Bac à sable de l’assistant LogQL ↔ PromQL

Direction
Loading…
query.logql

Tip: press Esc to release focus.

query.promql
read-only
Notes

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

source.logql
# LogQL metric query — error rate from a log stream
sum by (app) (
  rate({app="checkout", env="prod"} |= "error" [5m])
) > 0.2
result.promql
# 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.

log-only.logql
# 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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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 LogQLPromQL côtoie le reste du cluster d’observabilité OpsCanopyexpliquez 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.

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.