Aller au contenu

Troubleshooting

Guide de résolution des problèmes courants.

Serveur de Monitoring

Loki ne démarre pas

Symptôme : Container Loki en restart loop

docker-compose logs loki

Causes possibles :

  1. Permissions du volume

    # Vérifier les permissions
    ls -la /var/lib/docker/volumes/monitoring_loki_data/
    
    # Solution : utiliser user: "0" dans docker-compose ou fixer les permissions
    sudo chown -R 10001:10001 /var/lib/docker/volumes/monitoring_loki_data/_data/
    

  2. Configuration invalide

    # Valider la syntaxe YAML
    docker-compose exec loki cat /etc/loki/config.yml
    
    # Tester la config
    docker run --rm -v $(pwd)/config:/etc/loki grafana/loki:3.3.2 \
      -config.file=/etc/loki/config.yml -verify-config
    

  3. Espace disque insuffisant

    df -h /var/lib/docker
    

Grafana ne se connecte pas à Loki

Symptôme : Datasource en erreur dans Grafana

# Tester la connexion interne
docker-compose exec grafana wget -qO- http://loki:3100/ready

# Vérifier le réseau Docker
docker network inspect monitoring_monitoring

Solution : Vérifiez que les services sont sur le même réseau Docker.

Certificats SSL non générés

Symptôme : ERR_SSL_PROTOCOL_ERROR dans le navigateur

# Vérifier les logs Traefik
docker-compose logs traefik | grep -i "acme\|certificate"

# Vérifier que le port 80 est accessible (Let's Encrypt HTTP challenge)
curl -I http://grafana.monitoring.lyroh.com

Causes : - DNS non propagé - Port 80 bloqué par firewall - Email ACME invalide

Traefik ne route pas correctement

# Voir les routers actifs
docker-compose exec traefik traefik healthcheck

# Vérifier les labels Docker
docker inspect grafana | jq '.[0].Config.Labels'

Agents Alloy

Alloy ne se connecte pas à Loki

Symptôme : Logs non reçus dans Grafana

# Vérifier les logs de l'agent
docker-compose logs alloy

# Tester la connexion manuellement
curl -v -u "loki-push:PASSWORD" \
  https://loki.monitoring.lyroh.com/ready

Causes possibles :

  1. Credentials incorrects
  2. Vérifiez .env sur le serveur de l'agent
  3. Vérifiez que le hash dans middlewares.yml correspond

  4. Certificat SSL

    # Tester le certificat
    openssl s_client -connect loki.monitoring.lyroh.com:443
    

  5. Firewall

    # Tester la connectivité
    nc -zv loki.monitoring.lyroh.com 443
    

Logs des containers non collectés

Symptôme : Certains containers n'apparaissent pas dans Grafana

# Vérifier que le socket Docker est monté
docker-compose exec alloy ls -la /var/run/docker.sock

# Vérifier les targets découverts
curl http://localhost:12345/api/v0/component/discovery.docker.containers/targets

Causes : - Socket Docker non monté - Container sans label app - Container sur un autre réseau Docker

Labels manquants ou incorrects

# Vérifier les labels d'un container
docker inspect <container_name> | jq '.[0].Config.Labels'

# Vérifier la configuration Alloy
docker-compose exec alloy cat /etc/alloy/config.alloy

Problèmes de Performance

Requêtes lentes dans Grafana

Solutions :

  1. Réduire la plage temporelle : Commencez par 1h, pas 7 jours
  2. Utiliser des labels plus précis : {app="x"} pas {env=~".+"}
  3. Filtrer avant de parser : |= "error" avant | json
# Lent
{env="prod"} | json | level="error"

# Rapide
{app="nestjs-backend", env="prod"} |= "error" | json

Loki utilise trop de mémoire

Ajustez la configuration :

# loki-config.yml
ingester:
  chunk_target_size: 1572864  # Réduire si nécessaire
  wal:
    replay_memory_ceiling: 512MB  # Réduire

limits_config:
  ingestion_rate_mb: 8  # Réduire
  per_stream_rate_limit: 3MB  # Réduire

Disque plein

# Vérifier l'utilisation
du -sh /var/lib/docker/volumes/monitoring_loki_data/

# Réduire la rétention
# Dans loki-config.yml :
limits_config:
  retention_period: 72h  # 3 jours au lieu de 7

Erreurs Communes

"rate limit exceeded"

Cause : Trop de logs envoyés trop vite

Solution : Augmenter les limites ou réduire le volume de logs

limits_config:
  ingestion_rate_mb: 32  # Augmenter
  per_stream_rate_limit: 10MB  # Augmenter

"out of order sample"

Cause : Logs avec timestamps désordonnés

Solution : Loki 3.x accepte par défaut les logs désordonnés. Si le problème persiste :

limits_config:
  unordered_writes: true

"stream limit exceeded"

Cause : Trop de combinaisons de labels uniques

Solution : Réduire la cardinalité des labels

limits_config:
  max_global_streams_per_user: 10000  # Augmenter si nécessaire

Commandes de Diagnostic

État général

# Serveur monitoring
cd /opt/monitoring
docker-compose ps
docker-compose logs --tail=50

# Agent Alloy
cd /opt/alloy-agent
docker-compose ps
docker-compose logs --tail=50

Métriques Loki

curl -s http://localhost:3100/metrics | grep -E "loki_ingester|loki_distributor"

Santé des services

# Loki
curl http://localhost:3100/ready
curl http://localhost:3100/metrics

# Grafana
curl http://localhost:3000/api/health

# Alloy
curl http://localhost:12345/ready

Contacts Support

  • Documentation : https://docs.monitoring.lyroh.com
  • Grafana : https://grafana.monitoring.lyroh.com