Requêtes LogQL
LogQL est le langage de requête de Loki, inspiré de PromQL.
Syntaxe de Base
Sélecteur de Stream
Exemples simples
# Tous les logs d'une application
{app="nestjs-backend"}
# Logs de production
{env="prod"}
# Combinaison
{app="nestjs-backend", env="prod"}
# Regex sur les labels
{app=~"nextjs-.*"}
# Négation
{app!="python-scraper"}
Filtres de Ligne
Contient
Ne contient pas
Regex
Regex négative
Parsers
JSON
Extrait les champs JSON comme labels.
Logfmt
Parse le format key=value key2=value2.
Pattern
Regex avec capture
Filtres sur Labels Extraits
Après parsing, filtrez sur les nouveaux labels :
Fonctions d'Agrégation
Compter les logs
Taux par seconde
Somme par label
Top 10 des erreurs
Exemples Pratiques
Erreurs des dernières 24h par app
Logs avec latence > 1000ms
Requêtes HTTP 5xx
Exceptions Python avec stack trace
Logs entre deux timestamps
{app="nestjs-backend"}
| json
| timestamp >= "2024-01-01T00:00:00Z" and timestamp < "2024-01-02T00:00:00Z"
Grouper par niveau de log
Requêtes pour Dashboards
Volume de logs par app (timeseries)
Ratio erreurs/total
sum(count_over_time({env="prod"} |~ "error" [$__interval]))
/
sum(count_over_time({env="prod"} [$__interval]))
* 100
Logs par heure
Performance
Tips pour des requêtes rapides
- Toujours commencer par les labels - Plus le sélecteur est précis, plus c'est rapide
- Filtres de ligne avant parsing -
|= "error"avant| json - Limiter la plage temporelle - Évitez les requêtes sur 30 jours
- Utiliser
line_formatavec parcimonie - Coûteux en CPU