- Archiver 131 .md dans docs/archive/root-md/ - Archiver 22 .json dans docs/archive/root-json/ - Conserver 7 .md utiles (README, CONTRIBUTING, CHANGELOG, etc.) - Conserver package.json, package-lock.json, turbo.json - Ajouter README d'index dans chaque archive
279 lines
6.2 KiB
Markdown
279 lines
6.2 KiB
Markdown
# Gestion des Logs Veza
|
|
|
|
## Organisation des Logs
|
|
|
|
Tous les logs de l'application Veza sont centralisés dans `/var/log/veza/` avec une organisation par service.
|
|
|
|
### Structure des Fichiers
|
|
|
|
```
|
|
/var/log/veza/
|
|
├── backend-api.log # Tous les logs du backend API
|
|
├── backend-api-error.log # Erreurs uniquement du backend API
|
|
├── redis.log # Logs Redis
|
|
├── redis-error.log # Erreurs Redis
|
|
├── db.log # Logs base de données
|
|
├── db-error.log # Erreurs base de données
|
|
├── rabbitmq.log # Logs RabbitMQ
|
|
├── rabbitmq-error.log # Erreurs RabbitMQ
|
|
├── chat-server.log # Logs du serveur de chat
|
|
├── chat-server-error.log # Erreurs du serveur de chat
|
|
├── stream-server.log # Logs du serveur de streaming
|
|
└── stream-server-error.log # Erreurs du serveur de streaming
|
|
```
|
|
|
|
### Rotation Automatique
|
|
|
|
Les logs sont automatiquement rotés avec la configuration suivante :
|
|
- **Taille maximale** : 100 MB par fichier
|
|
- **Nombre de backups** : 10 fichiers conservés
|
|
- **Rétention** : 30 jours
|
|
- **Compression** : Les anciens fichiers sont compressés en `.gz`
|
|
|
|
Les fichiers rotés sont nommés avec un suffixe numérique :
|
|
- `backend-api.log.1.gz` (le plus récent)
|
|
- `backend-api.log.2.gz`
|
|
- ...
|
|
- `backend-api.log.10.gz` (le plus ancien)
|
|
|
|
## Configuration
|
|
|
|
### Variables d'Environnement
|
|
|
|
Pour activer le logging vers `/var/log/veza`, configurez la variable d'environnement :
|
|
|
|
```bash
|
|
export LOG_DIR=/var/log/veza
|
|
```
|
|
|
|
Ajoutez cette ligne dans vos fichiers `.env` :
|
|
|
|
```env
|
|
# Répertoire de logs
|
|
LOG_DIR=/var/log/veza
|
|
|
|
# Niveau de log (DEBUG, INFO, WARN, ERROR)
|
|
LOG_LEVEL=INFO
|
|
```
|
|
|
|
### Permissions
|
|
|
|
Le répertoire `/var/log/veza` doit être accessible en écriture par l'utilisateur qui exécute les services.
|
|
|
|
Pour configurer les permissions :
|
|
|
|
```bash
|
|
sudo bash scripts/setup_logs.sh
|
|
```
|
|
|
|
Ou manuellement :
|
|
|
|
```bash
|
|
sudo mkdir -p /var/log/veza
|
|
sudo chown -R $USER:$USER /var/log/veza
|
|
sudo chmod 755 /var/log/veza
|
|
```
|
|
|
|
## Utilisation
|
|
|
|
### Visualiser les Logs
|
|
|
|
Le script `view_logs.sh` permet de visualiser facilement les logs :
|
|
|
|
```bash
|
|
# Voir les logs du backend API
|
|
bash scripts/view_logs.sh backend-api
|
|
|
|
# Voir uniquement les erreurs
|
|
bash scripts/view_logs.sh backend-api --errors
|
|
|
|
# Suivre les logs en temps réel
|
|
bash scripts/view_logs.sh backend-api --follow
|
|
|
|
# Filtrer par pattern
|
|
bash scripts/view_logs.sh backend-api -g "ERROR"
|
|
|
|
# Afficher les 100 dernières lignes
|
|
bash scripts/view_logs.sh backend-api -n 100
|
|
|
|
# Vue d'ensemble de tous les services
|
|
bash scripts/view_logs.sh all
|
|
```
|
|
|
|
### Rotation Manuelle
|
|
|
|
Pour forcer la rotation des logs :
|
|
|
|
```bash
|
|
# Roter tous les logs
|
|
bash scripts/rotate_logs.sh all
|
|
|
|
# Roter uniquement le backend API
|
|
bash scripts/rotate_logs.sh backend-api
|
|
```
|
|
|
|
### Commandes Utiles
|
|
|
|
```bash
|
|
# Voir la taille des fichiers de logs
|
|
du -h /var/log/veza/*.log
|
|
|
|
# Compter les erreurs dans les logs
|
|
grep -c "ERROR" /var/log/veza/backend-api.log
|
|
|
|
# Voir les logs en temps réel avec coloration
|
|
tail -f /var/log/veza/backend-api.log | grep --color=auto "ERROR\|WARN"
|
|
|
|
# Analyser les logs JSON (en production)
|
|
cat /var/log/veza/backend-api.log | jq '.level, .msg'
|
|
|
|
# Rechercher un pattern dans tous les logs
|
|
grep -r "user_id=123" /var/log/veza/
|
|
```
|
|
|
|
## Format des Logs
|
|
|
|
### Développement
|
|
|
|
En mode développement, les logs utilisent un format console lisible :
|
|
|
|
```
|
|
2026-01-03T22:54:47+01:00 INFO Backend API démarré port=8080
|
|
2026-01-03T22:54:48+01:00 DEBUG Connexion Redis établie url=redis://localhost:6379
|
|
```
|
|
|
|
### Production
|
|
|
|
En mode production, les logs sont en JSON structuré pour faciliter l'analyse :
|
|
|
|
```json
|
|
{
|
|
"level": "info",
|
|
"ts": "2026-01-03T22:54:47.123Z",
|
|
"caller": "api/main.go:66",
|
|
"msg": "Backend API démarré",
|
|
"port": 8080,
|
|
"env": "production"
|
|
}
|
|
```
|
|
|
|
## Monitoring et Alertes
|
|
|
|
### Surveiller les Erreurs
|
|
|
|
Pour être alerté en cas d'erreurs critiques :
|
|
|
|
```bash
|
|
# Surveiller les fichiers d'erreurs
|
|
watch -n 10 'tail -n 20 /var/log/veza/*-error.log'
|
|
```
|
|
|
|
### Agrégation de Logs (Optionnel)
|
|
|
|
Pour une installation en production, vous pouvez configurer l'agrégation vers un service externe (Loki, Elasticsearch, etc.) :
|
|
|
|
```env
|
|
LOG_AGGREGATION_ENABLED=true
|
|
LOG_AGGREGATION_ENDPOINT=http://loki:3100/loki/api/v1/push
|
|
LOG_AGGREGATION_BATCH_SIZE=100
|
|
LOG_AGGREGATION_FLUSH_INTERVAL=5s
|
|
```
|
|
|
|
## Docker
|
|
|
|
### Configuration
|
|
|
|
Dans `docker-compose.prod.yml`, les logs sont montés via un volume partagé :
|
|
|
|
```yaml
|
|
volumes:
|
|
veza_logs:
|
|
driver: local
|
|
driver_opts:
|
|
type: none
|
|
o: bind
|
|
device: /var/log/veza
|
|
|
|
services:
|
|
backend:
|
|
volumes:
|
|
- veza_logs:/var/log/veza
|
|
environment:
|
|
- LOG_DIR=/var/log/veza
|
|
```
|
|
|
|
### Accès aux Logs
|
|
|
|
```bash
|
|
# Voir les logs depuis le conteneur
|
|
docker exec veza_backend_prod tail -f /var/log/veza/backend-api.log
|
|
|
|
# Copier les logs vers l'hôte
|
|
docker cp veza_backend_prod:/var/log/veza ./logs-backup
|
|
```
|
|
|
|
## Dépannage
|
|
|
|
### Les logs ne sont pas créés
|
|
|
|
1. Vérifier les permissions :
|
|
```bash
|
|
ls -ld /var/log/veza
|
|
```
|
|
|
|
2. Vérifier la variable d'environnement :
|
|
```bash
|
|
echo $LOG_DIR
|
|
```
|
|
|
|
3. Vérifier les logs de démarrage du service
|
|
|
|
### Espace disque insuffisant
|
|
|
|
1. Vérifier l'espace disponible :
|
|
```bash
|
|
df -h /var/log/veza
|
|
```
|
|
|
|
2. Nettoyer les anciens logs :
|
|
```bash
|
|
# Supprimer les logs de plus de 30 jours
|
|
find /var/log/veza -name "*.gz" -mtime +30 -delete
|
|
```
|
|
|
|
3. Réduire la rétention dans la configuration de rotation
|
|
|
|
### Performance
|
|
|
|
Si l'écriture des logs impacte les performances :
|
|
|
|
1. Vérifier que la rotation est activée
|
|
2. Augmenter le niveau de log (passer de DEBUG à INFO)
|
|
3. Activer le sampling en production (déjà configuré)
|
|
|
|
## Sécurité
|
|
|
|
### Logs Sensibles
|
|
|
|
Les secrets et données sensibles sont automatiquement filtrés des logs :
|
|
- Mots de passe
|
|
- Tokens JWT
|
|
- Clés API
|
|
- Informations de carte bancaire
|
|
|
|
### Accès aux Logs
|
|
|
|
Limitez l'accès aux fichiers de logs :
|
|
|
|
```bash
|
|
# Permissions recommandées
|
|
chmod 640 /var/log/veza/*.log
|
|
chown $USER:$USER /var/log/veza/*.log
|
|
```
|
|
|
|
## Support
|
|
|
|
Pour plus d'informations sur la configuration du logging, consultez :
|
|
- `veza-backend-api/internal/logging/logger.go`
|
|
- `veza-chat-server/src/structured_logging.rs`
|
|
- `veza-stream-server/src/logging.rs` (si applicable)
|