Aller au contenu

Labels & Filtres

Les labels sont essentiels pour organiser et filtrer vos logs dans Grafana.

Labels Standard

Label Description Exemples Obligatoire
app Nom de l'application python-scraper, nestjs-backend, nextjs-app-1 Oui
env Environnement prod, staging, dev Oui
host Nom du serveur app-server-1, worker-01 Oui
container Nom du container Docker api, web, worker Auto
level Niveau de log info, warn, error, debug Recommandé

Configuration des Labels

Via Docker Labels

La méthode recommandée est d'ajouter des labels Docker à vos containers :

# docker-compose.yml de votre application
services:
  api:
    image: your-app
    labels:
      - "app=nestjs-backend"
      - "service=api"

Via les variables d'environnement Alloy

# .env de l'agent Alloy
APP_ENV=prod
HOST_NAME=app-server-1

Via la configuration Alloy

loki.source.docker "docker_logs" {
  host    = "unix:///var/run/docker.sock"
  targets = discovery.relabel.docker_labels.output

  labels = {
    "env"  = "prod",
    "host" = "app-server-1",
    "team" = "backend",
  }

  forward_to = [loki.write.loki_remote.receiver]
}

Bonnes Pratiques

DO - À faire

  • Utilisez des labels avec une faible cardinalité (peu de valeurs possibles)
  • Gardez les noms de labels courts et descriptifs
  • Utilisez des conventions de nommage cohérentes
app=nestjs-backend     ✓ Bon
env=prod               ✓ Bon
host=server-01         ✓ Bon

DON'T - À éviter

  • Ne jamais utiliser des valeurs uniques (IDs, timestamps, emails)
  • Ne pas créer trop de labels (max 15-20 par stream)
user_id=12345          ✗ Mauvais (haute cardinalité)
request_id=abc-123     ✗ Mauvais (unique par requête)
timestamp=2024-01-01   ✗ Mauvais (utiliser le timestamp natif)

Exemples de Requêtes par Label

Filtrer par application

{app="nestjs-backend"}

Filtrer par environnement

{env="prod"}

Combinaison de labels

{app="nestjs-backend", env="prod", host="api-server-1"}

Tous les logs d'un serveur

{host="app-server-1"}

Toutes les erreurs en production

{env="prod"} |= "error"

Applications multiples

{app=~"nextjs-app-.*"}

Mapping des Applications Lyroh

Application Label app Label service (optionnel)
Python Scraper python-scraper scraper
NestJS Backend nestjs-backend api, worker
NextJS App 1 nextjs-app-1 web
NextJS App 2 nextjs-app-2 web
NextJS App 3 nextjs-app-3 web
NextJS App 4 nextjs-app-4 web