Outils pour utilisateurs

Outils du site


work_in_progress:loki_logql

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
work_in_progress:loki_logql [2022/01/21 00:30] – créée yoannwork_in_progress:loki_logql [2022/01/22 11:18] (Version actuelle) yoann
Ligne 3: Ligne 3:
  
 ====== Loki et LogQL ====== ====== Loki et LogQL ======
 +
 +La **sélection des enregistrements dans une base Loki se fait via le LogQL** qui peut être considéré comme une forme de "grep" étendu s'appliquant aussi sur les labels.
 +
 +Une requête élémentaire se compose de 2 parties: le **sélecteur** (ou log stream selector) et l'**expression de filtrage** ( ou filter expression). Si les filtres sont optionnels, la requête LogQL doit obligatoirement contenir un sélecteur.
 +
 +===== Le sélecteur =====
 +
 +Le sélecteur détermine quels flux de journalisation doivent être considérés par la requête. Le sélecteur se compose d'une ou plusieurs paires clé-valeur, chaque clé est un label associé au log par le client lors de l'injection dans la base loki.
 +
 +<code>
 +{job="netfilter"}
 +</code>
 +
 +<code>
 +{host="localhost", job="netfilter"}
 +</code>
 +
 +Il existe plusieurs opérateurs de correspondance (label matchin operator) entre le label et la valeur:
 +^ =  | Doit correspondre exactement                        |
 +^ != | Doit être différent                                 |
 +^ =~ | Doit correspondre à l'expression rationnelle        |
 +^ !~ | Ne doit pas correspondre à l'expression rationnelle |
 +
 +Ce sont les même règles syntaxiques que l'on retrouve avec PromQL pour la sélection de labels de Prometheus.
 +
 +===== Expression de filtrage =====
 +
 +Les enregistrements sortant du sélecteur peuvent ensuite être filtrés par une expression. L'expression peut se composer d'éléments de texte constants ou d'expressions rationnelles (regex).
 +
 +<code>
 +# Retourne les enregistrements contenant le mot BLOCK
 +{job="netfilter"} |= "BLOCK"
 +
 +# Retourne les enregistrements contenant la chaine "DPT=443"
 +# et ne contenant pas la chaîne "DST=192.168.101.7"
 +{job="netfilter"} |= "DPT=443" !="DST=192.168.101.7"
 +</code> 
 +
 +Ci dessous les opérateurs de filtrage disponibles:
 +^ %%|=%%  | L'enregistrement doit contenir la chaîne.             |
 +^ %%!=%%  | L'enregistrement ne doit pas contenir la chaîne.      |
 +^ %%|~%%  | L'enregistrement doit correspondre à la regex.        |
 +^ %%!~%%  | L'enregistrement ne doit pas correspondre à la regex. |
 +
 +<note>
 +Les opérateurs **%%|~%%** et **%%!~%%** utilisent la [[https://github.com/google/re2/wiki/Syntax| syntaxe Go RE2]].
 +</note>
  
  
work_in_progress/loki_logql.1642725011.txt.gz · Dernière modification : 2022/01/21 00:30 de yoann