{{tag>sysadmin monitoring loki grafana log todo}} ====== 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. {job="netfilter"} {host="localhost", job="netfilter"} 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). # 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" 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. | Les opérateurs **%%|~%%** et **%%!~%%** utilisent la [[https://github.com/google/re2/wiki/Syntax| syntaxe Go RE2]]. ===== Références ===== * https://megamorf.gitlab.io/cheat-sheets/loki/