5.5 KiB
5.5 KiB
Guide de Configuration Loki - LeCoffre Node
🎯 Configuration Obligatoire
Problème Résolu
Loki était en état "unhealthy" à cause d'une configuration réseau incorrecte. La solution est maintenant documentée et appliquée.
📁 Fichier de Configuration
Emplacement
/conf/loki/loki-config.yaml
Configuration Complète
auth_enabled: false
server:
http_listen_port: 3100
grpc_listen_port: 9096
http_listen_address: 0.0.0.0 # ← CRITIQUE : Écoute sur toutes les interfaces
grpc_listen_address: 0.0.0.0
common:
instance_addr: 0.0.0.0 # ← CRITIQUE : Adresse sur toutes les interfaces
path_prefix: /loki
storage:
filesystem:
chunks_directory: /loki/chunks
rules_directory: /loki/rules
replication_factor: 1
ring:
kvstore:
store: inmemory
schema_config:
configs:
- from: 2020-10-24
store: tsdb
object_store: filesystem
schema: v13
index:
prefix: index_
period: 24h
ruler:
alertmanager_url: http://localhost:9093
# Configuration de l'ingester - SEULEMENT le paramètre crucial
ingester:
lifecycler:
min_ready_duration: 5s # Réduit le délai de 15s à 5s
# Configuration des limites
limits_config:
reject_old_samples: true
reject_old_samples_max_age: 168h
max_cache_freshness_per_query: 10m
split_queries_by_interval: 15m
max_query_parallelism: 32
max_streams_per_user: 0
max_line_size: 256000
ingestion_rate_mb: 16
ingestion_burst_size_mb: 32
per_stream_rate_limit: 3MB
per_stream_rate_limit_burst: 15MB
max_entries_limit_per_query: 5000
max_query_series: 500
max_query_length: 721h
cardinality_limit: 100000
max_streams_matchers_per_query: 1000
max_concurrent_tail_requests: 10
# Configuration du storage
storage_config:
tsdb_shipper:
active_index_directory: /loki/tsdb-index
cache_location: /loki/tsdb-cache
filesystem:
directory: /loki/chunks
# Configuration du compactor
compactor:
working_directory: /loki/compactor
compaction_interval: 10m
retention_enabled: false
delete_request_store: filesystem
# Analytics désactivés
analytics:
reporting_enabled: false
🐳 Configuration Docker Compose
Service Loki
loki:
image: grafana/loki:latest
container_name: loki
ports:
- "0.0.0.0:3100:3100"
volumes:
- loki_data:/loki
- ./conf/loki/loki-config.yaml:/etc/loki/loki-config.yaml:ro
command: -config.file=/etc/loki/loki-config.yaml
networks:
btcnet:
aliases:
- loki
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3100/ready"]
interval: 30s
timeout: 15s
retries: 3
start_period: 120s
restart: unless-stopped
🔧 Points Critiques
1. Configuration Réseau (OBLIGATOIRE)
# ❌ INCORRECT - Cause du problème "unhealthy"
server:
http_listen_port: 3100
common:
instance_addr: 127.0.0.1
# ✅ CORRECT - Résout le problème
server:
http_listen_address: 0.0.0.0
grpc_listen_address: 0.0.0.0
common:
instance_addr: 0.0.0.0
2. Healthcheck Docker
# ✅ Configuration recommandée
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3100/ready"]
interval: 30s
timeout: 15s
retries: 3
start_period: 120s
3. Configuration Ingester
# ✅ Réduit le délai de démarrage
ingester:
lifecycler:
min_ready_duration: 5s
🧪 Tests de Validation
Test 1: Vérification de l'Écoute Réseau
docker exec loki netstat -tlnp | grep 3100
# Résultat attendu : tcp 0 0 :::3100 :::* LISTEN
Test 2: Test de Connectivité Externe
curl -s -o /dev/null -w "%{http_code}" http://localhost:3100/ready
# Résultat attendu : 200
Test 3: Test de Connectivité Interne
docker exec loki wget -q --spider http://localhost:3100/ready && echo "SUCCESS"
# Résultat attendu : SUCCESS
Test 4: Statut Docker
docker compose --env-file .env.master ps loki
# Résultat attendu : Up X seconds (healthy)
🚨 Erreurs Communes
Erreur 1: "Loki unhealthy"
Cause : Configuration réseau incorrecte
Solution : Configurer http_listen_address: 0.0.0.0
Erreur 2: "Healthcheck failed"
Cause : Utilisation de curl
au lieu de wget
Solution : Utiliser wget
dans le healthcheck
Erreur 3: "Config validation failed"
Cause : Configuration compactor incorrecte
Solution : Désactiver retention_enabled
ou configurer delete_request_store
Erreur 4: "Connection refused"
Cause : Loki écoute sur 127.0.0.1 uniquement
Solution : Configurer instance_addr: 0.0.0.0
📊 Monitoring
Logs à Surveiller
# Logs de démarrage
docker logs loki --tail 20
# Logs d'erreur
docker logs loki | grep -i error
# Logs de santé
docker logs loki | grep -i ready
Métriques à Surveiller
- Temps de démarrage : < 2 minutes
- Statut healthcheck : "healthy"
- Endpoint /ready : HTTP 200
- Utilisation mémoire : < 1GB
🎯 Bonnes Pratiques
1. Configuration
- Toujours utiliser la configuration complète
- Vérifier les paramètres réseau
- Tester la configuration avant déploiement
2. Déploiement
- Utiliser le script
start-monitoring.sh
- Surveiller les logs pendant le démarrage
- Valider le statut healthcheck
3. Maintenance
- Surveiller les logs régulièrement
- Vérifier l'espace disque
- Maintenir la configuration à jour
Document créé le 2025-09-21 Version : 1.0 Statut : ✅ Configuration validée et fonctionnelle