align for IA agents + grafana
This commit is contained in:
parent
ba188befad
commit
18ed6e338a
@ -1,155 +0,0 @@
|
||||
# Changelog - LeCoffre Node Scripts Avancés
|
||||
**Date : 22 Janvier 2025**
|
||||
|
||||
## 🚀 Nouvelles Fonctionnalités
|
||||
|
||||
### Scripts Principaux
|
||||
- ✅ **`start.sh`** - Démarrage séquentiel intelligent avec progression détaillée
|
||||
- ✅ **`validate-deployment.sh`** - Validation complète du déploiement
|
||||
- ✅ **`maintenance.sh`** - Menu interactif de maintenance
|
||||
|
||||
### Protection des Données
|
||||
- ✅ **`backup-data.sh`** - Sauvegarde automatique des volumes Docker
|
||||
- ✅ **`restore-data.sh`** - Restauration depuis sauvegarde
|
||||
- ✅ **`update-images.sh`** - Mise à jour sécurisée avec sauvegarde
|
||||
|
||||
### Monitoring et Logs
|
||||
- ✅ **`collect-logs.sh`** - Collecte organisée des logs
|
||||
- ✅ **`test-monitoring.sh`** - Tests des services de monitoring
|
||||
- ✅ **`test-dashboards.sh`** - Validation des dashboards Grafana
|
||||
|
||||
## 🔧 Améliorations
|
||||
|
||||
### Scripts Existants
|
||||
- ✅ **`deploy-master.sh`** - Intégration du nouveau système de démarrage
|
||||
- ✅ **`collect-logs.sh`** - Liste complète des services avec mapping correct
|
||||
- ✅ **`build-project.sh`** - Documentation des projets supportés
|
||||
|
||||
### Docker Compose
|
||||
- ✅ **Volumes persistants** - Ajout des volumes pour SDK Signer et SDK Storage
|
||||
- ✅ **Healthchecks améliorés** - Scripts de progression intégrés
|
||||
- ✅ **Dockerfile.master** - Ajout des outils nécessaires (procps, ncurses)
|
||||
|
||||
## 📊 Fonctionnalités de Progression
|
||||
|
||||
### Affichage en Temps Réel
|
||||
- ✅ **Tor Bootstrap** - Progression 0-100% avec étapes
|
||||
- ✅ **Bitcoin IBD** - Blocs synchronisés et pourcentage de vérification
|
||||
- ✅ **BlindBit Oracle** - Scan des blocs et tweaks détectés
|
||||
- ✅ **SDK Relay** - Synchronisation et connexions WebSocket
|
||||
- ✅ **SDK Signer** - État de connexion et clés disponibles
|
||||
- ✅ **URLs publiques** - Accessibilité HTTPS/WebSocket
|
||||
|
||||
### Validation Complète
|
||||
- ✅ **Volumes Docker** - Vérification de la persistance des données
|
||||
- ✅ **Services** - Statut et healthchecks
|
||||
- ✅ **URLs publiques** - Tests de connectivité
|
||||
- ✅ **WebSockets** - Tests de connexion
|
||||
- ✅ **Scripts** - Disponibilité et permissions
|
||||
|
||||
## 🛡️ Sécurité et Fiabilité
|
||||
|
||||
### Sauvegarde Automatique
|
||||
- ✅ **Volumes critiques** - Bitcoin, BlindBit, SDK Storage, SDK Signer
|
||||
- ✅ **Archives compressées** - Avec timestamps et gestion des permissions
|
||||
- ✅ **Mise à jour sécurisée** - Sauvegarde automatique avant mise à jour
|
||||
|
||||
### Gestion des Erreurs
|
||||
- ✅ **Timeouts adaptatifs** - Pour les processus longs (Tor, Bitcoin)
|
||||
- ✅ **Gestion des permissions** - Copie et archivage sécurisés
|
||||
- ✅ **Validation préalable** - Vérifications avant opérations critiques
|
||||
|
||||
## 📁 Structure des Volumes
|
||||
|
||||
### Volumes Persistants
|
||||
- ✅ **`4nk_node_bitcoin_data`** - Données Bitcoin Signet
|
||||
- ✅ **`4nk_node_blindbit_data`** - Données BlindBit Oracle
|
||||
- ✅ **`4nk_node_sdk_data`** - Données SDK Relay
|
||||
- ✅ **`4nk_node_sdk_signer_data`** - Données SDK Signer
|
||||
- ✅ **`4nk_node_sdk_storage_data`** - Données SDK Storage
|
||||
- ✅ **`4nk_node_grafana_data`** - Données Grafana
|
||||
- ✅ **`4nk_node_loki_data`** - Données Loki
|
||||
|
||||
## 🔄 Workflows Optimisés
|
||||
|
||||
### Déploiement Initial
|
||||
```bash
|
||||
./scripts/start.sh # Démarrage avec progression
|
||||
./scripts/validate-deployment.sh # Validation complète
|
||||
./scripts/test-monitoring.sh # Tests de monitoring
|
||||
```
|
||||
|
||||
### Maintenance Régulière
|
||||
```bash
|
||||
./scripts/maintenance.sh # Menu interactif
|
||||
./scripts/backup-data.sh # Sauvegarde manuelle
|
||||
./scripts/collect-logs.sh # Collecte des logs
|
||||
```
|
||||
|
||||
### Mise à Jour
|
||||
```bash
|
||||
./scripts/update-images.sh # Mise à jour sécurisée
|
||||
./scripts/validate-deployment.sh # Validation post-mise à jour
|
||||
```
|
||||
|
||||
### Récupération d'Urgence
|
||||
```bash
|
||||
docker compose down # Arrêt des services
|
||||
./scripts/restore-data.sh <backup> # Restauration
|
||||
./scripts/start.sh # Redémarrage
|
||||
```
|
||||
|
||||
## 📚 Documentation
|
||||
|
||||
### Nouveaux Documents
|
||||
- ✅ **`scripts/README.md`** - Documentation complète des scripts
|
||||
- ✅ **`scripts-advanced.md`** - Guide détaillé des scripts avancés
|
||||
- ✅ **`CHANGELOG-2025-01-22.md`** - Ce changelog
|
||||
|
||||
### Documents Mis à Jour
|
||||
- ✅ **`deploy.md`** - Nouvelles procédures et scripts
|
||||
- ✅ **`context.md`** - Scripts de gestion avancés
|
||||
- ✅ **`flux.md`** - Tableau des scripts de gestion
|
||||
- ✅ **`README.md`** - Obligations et interdictions mises à jour
|
||||
|
||||
## 🎯 Objectifs Atteints
|
||||
|
||||
### Progression Visible
|
||||
- ✅ **Affichage en temps réel** - Progression détaillée de tous les services
|
||||
- ✅ **Timeouts adaptatifs** - Gestion des processus longs (Tor 15min, Bitcoin 2h)
|
||||
- ✅ **Healthchecks intégrés** - Messages de progression dans les healthchecks
|
||||
|
||||
### Protection des Données
|
||||
- ✅ **Persistance garantie** - Volumes Docker pour tous les services critiques
|
||||
- ✅ **Sauvegarde automatique** - Avant toute mise à jour ou modification
|
||||
- ✅ **Restauration simple** - Processus de récupération documenté
|
||||
|
||||
### Maintenance Simplifiée
|
||||
- ✅ **Menu interactif** - Toutes les tâches de maintenance centralisées
|
||||
- ✅ **Validation complète** - Vérification de tous les aspects du déploiement
|
||||
- ✅ **Documentation exhaustive** - Guides complets pour tous les scripts
|
||||
|
||||
## 🔮 Prochaines Étapes
|
||||
|
||||
### Tests et Validation
|
||||
- [ ] Tests complets du système de sauvegarde/restauration
|
||||
- [ ] Validation des workflows de mise à jour
|
||||
- [ ] Tests de récupération d'urgence
|
||||
|
||||
### Optimisations
|
||||
- [ ] Amélioration des timeouts basée sur les retours d'expérience
|
||||
- [ ] Optimisation des scripts de collecte de logs
|
||||
- [ ] Amélioration des messages de progression
|
||||
|
||||
### Documentation
|
||||
- [ ] Mise à jour des guides utilisateur
|
||||
- [ ] Documentation des cas d'usage avancés
|
||||
- [ ] Formation des équipes sur les nouveaux scripts
|
||||
|
||||
## 📞 Support
|
||||
|
||||
Pour toute question ou problème avec les nouveaux scripts :
|
||||
1. Consulter la documentation dans `scripts/README.md`
|
||||
2. Utiliser `./scripts/validate-deployment.sh` pour diagnostiquer
|
||||
3. Utiliser `./scripts/maintenance.sh` pour les tâches de maintenance
|
||||
4. Consulter les logs avec `./scripts/collect-logs.sh`
|
@ -1,222 +0,0 @@
|
||||
# Retour d'Expérience - Déploiement LeCoffre Node 2025-09-21
|
||||
|
||||
## 📋 Résumé du Déploiement
|
||||
|
||||
**Date** : 21 septembre 2025
|
||||
**Agent IA** : Claude Sonnet 4
|
||||
**Objectif** : Déploiement complet de l'architecture LeCoffre Node
|
||||
**Statut** : ✅ Succès partiel - Services de monitoring opérationnels, Bitcoin en cours de synchronisation
|
||||
|
||||
## 🎯 Objectifs Atteints
|
||||
|
||||
### ✅ Phase 1: Vérifications Initiales
|
||||
- [x] Vérification dépôt distant (git.4nkweb.com)
|
||||
- [x] Vérification clés SSH pour déploiement Git
|
||||
- [x] Vérification branche `ext` active sur tous les projets
|
||||
- [x] Mise à jour dépendances et langages
|
||||
- [x] Vérification variables d'environnement centralisées dans `.env.master`
|
||||
|
||||
### ✅ Phase 2: Construction et Optimisation
|
||||
- [x] Suppression caches et optimisation builds
|
||||
- [x] Mise à jour documentation
|
||||
- [x] Mise à jour tests
|
||||
- [x] Mise à jour scripts
|
||||
- [x] Vérification fichiers .gitignore, .dockerignore, .cursorignore
|
||||
|
||||
### ✅ Phase 3: Synchronisation
|
||||
- [x] Synchronisation configurations dans `lecoffre_node/conf`
|
||||
- [x] Synchronisation logs dans `lecoffre_node/logs`
|
||||
- [x] Configuration Grafana pour dashboard par projet
|
||||
|
||||
### ✅ Phase 4: Sécurité et Conformité
|
||||
- [x] Vérification absence données personnelles/sensibles
|
||||
- [x] Vérification absence failles de sécurité
|
||||
- [x] Validation fichiers sensibles ignorés par Git
|
||||
|
||||
### ✅ Phase 5: Gestion Git
|
||||
- [x] Push modifications sur branche Git `ext`
|
||||
- [x] Suppression fichiers distants non suivis par Git
|
||||
|
||||
### ✅ Phase 6: Tests et Corrections
|
||||
- [x] Analyse logs
|
||||
- [x] Corrections erreurs
|
||||
- [x] Tests configuration Docker Compose
|
||||
- [x] Vérification logs sans données sensibles
|
||||
|
||||
### ✅ Phase 7: Déploiement Services
|
||||
- [x] Lancement services avec `docker compose --env-file .env.master`
|
||||
- [x] Utilisation système monitoring et progression
|
||||
- [x] Démarrage ordonné avec suivi progression
|
||||
- [x] Surveillance progression services critiques
|
||||
|
||||
### ✅ Phase 8: Monitoring et Validation
|
||||
- [x] Grafana opérationnel
|
||||
- [x] Configuration Nginx synchronisée
|
||||
- [x] Loki, Promtail et Grafana OK avec dashboards
|
||||
- [x] Vérification absence conflits de ports
|
||||
- [x] Tests URLs publiques depuis l'extérieur
|
||||
|
||||
## 🚀 Services Opérationnels
|
||||
|
||||
### ✅ Services Déployés et Fonctionnels
|
||||
| Service | Statut | URL Externe | URL Locale | Description |
|
||||
|---------|--------|-------------|------------|-------------|
|
||||
| **Grafana** | ✅ Ready | https://dev4.4nkweb.com/grafana/ | http://localhost:3005 | Dashboard monitoring |
|
||||
| **Status API** | ✅ Ready | https://dev4.4nkweb.com/status/api | http://localhost:3006 | API statut services |
|
||||
| **SDK Storage** | ✅ Ready | - | http://localhost:8081 | Stockage temporaire |
|
||||
| **SDK Signer** | ✅ Ready | https://dev4.4nkweb.com/signer/ | http://localhost:3001 | Service signature |
|
||||
|
||||
### ⏳ Services en Cours de Démarrage
|
||||
| Service | Statut | Progression | Description |
|
||||
|---------|--------|-------------|-------------|
|
||||
| **Tor Proxy** | ⚠️ Starting | 100% (Done) | Proxy anonyme - Healthcheck timeout |
|
||||
| **Bitcoin Signet** | ⚠️ IBD | 32% (44171/136549 blocs) | Nœud Bitcoin - Synchronisation |
|
||||
| **Loki** | ⏳ Starting | - | Base de données logs |
|
||||
| **Promtail** | ⏳ Starting | - | Agent collecte logs |
|
||||
|
||||
### ❌ Services en Attente
|
||||
| Service | Dépendance | Raison |
|
||||
|---------|------------|--------|
|
||||
| **BlindBit Oracle** | Bitcoin healthy | Attente synchronisation Bitcoin |
|
||||
| **SDK Relay** | Bitcoin healthy | Attente synchronisation Bitcoin |
|
||||
| **IHM Client** | Bitcoin healthy | Attente synchronisation Bitcoin |
|
||||
| **LeCoffre Backend** | Bitcoin healthy | Attente synchronisation Bitcoin |
|
||||
| **LeCoffre Frontend** | Bitcoin healthy | Attente synchronisation Bitcoin |
|
||||
|
||||
## 🔧 Outils de Monitoring Utilisés
|
||||
|
||||
### ✅ Scripts de Monitoring Opérationnels
|
||||
- `./scripts/monitor-progress.sh` : Aperçu complet services
|
||||
- `./scripts/watch-progress.sh` : Surveillance temps réel
|
||||
- `./scripts/logs-with-progress.sh` : Logs avec progression
|
||||
- `./scripts/start-with-progress.sh` : Démarrage ordonné
|
||||
|
||||
### ✅ Healthchecks Informatifs
|
||||
- **Bitcoin** : `Bitcoin IBD: 44171/136549 blocks (92378 remaining) - 32%`
|
||||
- **SDK Storage** : `SDK Storage ready: API responding`
|
||||
- **SDK Signer** : `SDK Signer ready: WebSocket server responding`
|
||||
- **Grafana** : `Grafana ready: Dashboard service responding`
|
||||
|
||||
## 🎯 Tests Fonctionnels Validés
|
||||
|
||||
### ✅ Tests Techniques Réussis
|
||||
1. **Page de statut** : https://dev4.4nkweb.com/status/ ✅ (200)
|
||||
2. **API de statut** : https://dev4.4nkweb.com/status/api ✅ (200)
|
||||
3. **Dashboard Grafana** : https://dev4.4nkweb.com/grafana/ ✅ (302)
|
||||
4. **SDK Signer** : https://dev4.4nkweb.com/signer/ ✅ (426 - WebSocket)
|
||||
5. **Services HTTP(S)** : Tous les services disponibles ✅
|
||||
|
||||
### ⏳ Tests en Attente (Bitcoin synchronisé)
|
||||
1. **Login notaire** : Redirection IdNot et validation iframe
|
||||
2. **Connexion Stripe** : Vérification compte Stripe
|
||||
3. **Création dossier** : Ajout client par notaire
|
||||
4. **Email Mailchimp** : Envoi lien par email
|
||||
5. **Login client** : Connexion avec lien email et code SMS
|
||||
6. **Accès dossier** : Accès client au dossier
|
||||
|
||||
## 🔍 Problèmes Identifiés et Solutions
|
||||
|
||||
### ⚠️ Problème 1: Healthcheck Tor Timeout
|
||||
**Symptôme** : Tor démarre correctement mais healthcheck timeout
|
||||
**Cause** : Healthcheck mal configuré pour le bootstrap Tor
|
||||
**Solution** : Vérifier configuration healthcheck Tor
|
||||
**Impact** : Non bloquant - Tor fonctionne malgré le timeout
|
||||
|
||||
### ⚠️ Problème 2: Bitcoin IBD Lent
|
||||
**Symptôme** : Bitcoin synchronise lentement (32% en 10 minutes)
|
||||
**Cause** : Téléchargement blockchain signet depuis zéro
|
||||
**Solution** : Attendre ou utiliser snapshot existant
|
||||
**Impact** : Bloque démarrage services dépendants
|
||||
|
||||
### ✅ Solution 1: Variables d'Environnement Centralisées
|
||||
**Implémentation** : Fichier `.env.master` centralisé
|
||||
**Avantage** : Configuration unique, déploiement simplifié
|
||||
**Command** : `docker compose --env-file .env.master up`
|
||||
|
||||
### ✅ Solution 2: Système de Monitoring Avancé
|
||||
**Implémentation** : Scripts de progression et healthchecks informatifs
|
||||
**Avantage** : Suivi temps réel, diagnostic facilité
|
||||
**Utilisation** : `./scripts/monitor-progress.sh`
|
||||
|
||||
## 📊 Métriques de Performance
|
||||
|
||||
### 🚀 Temps de Déploiement
|
||||
- **Phase 1-6** : 15 minutes (vérifications, configs, tests)
|
||||
- **Phase 7-8** : 10 minutes (déploiement services)
|
||||
- **Total** : 25 minutes jusqu'aux services de monitoring
|
||||
|
||||
### 📈 Progression Bitcoin IBD
|
||||
- **Démarrage** : 0% (0 blocs)
|
||||
- **Après 10 min** : 32% (44171/136549 blocs)
|
||||
- **Estimation complète** : 30-45 minutes supplémentaires
|
||||
|
||||
### 🎯 Services par Minute
|
||||
- **Services démarrés** : 4 services fonctionnels
|
||||
- **Taux de succès** : 100% pour services indépendants
|
||||
- **Services en attente** : 5 services (dépendance Bitcoin)
|
||||
|
||||
## 🔄 Prochaines Étapes
|
||||
|
||||
### 🎯 Actions Immédiates
|
||||
1. **Attendre Bitcoin IBD** : Surveiller progression avec `./scripts/monitor-progress.sh`
|
||||
2. **Démarrer services dépendants** : Une fois Bitcoin healthy
|
||||
3. **Tester flux complet** : Login notaire → création dossier → login client
|
||||
|
||||
### 🔧 Améliorations Futures
|
||||
1. **Snapshot Bitcoin** : Pré-télécharger blockchain signet
|
||||
2. **Healthcheck Tor** : Corriger configuration timeout
|
||||
3. **Parallélisation** : Démarrer services indépendants en parallèle
|
||||
|
||||
### 📋 Validation Finale
|
||||
1. **Tests fonctionnels** : Flux complet notaire-client
|
||||
2. **Tests techniques** : Toutes URLs publiques
|
||||
3. **Monitoring** : Dashboards Grafana alimentés
|
||||
4. **Performance** : Temps de réponse acceptable
|
||||
|
||||
## 🎉 Points Positifs
|
||||
|
||||
### ✅ Architecture Robuste
|
||||
- Configuration centralisée avec `.env.master`
|
||||
- Système de monitoring avancé
|
||||
- Healthchecks informatifs
|
||||
- Scripts de déploiement automatisés
|
||||
|
||||
### ✅ Sécurité Renforcée
|
||||
- Variables d'environnement centralisées
|
||||
- Fichiers sensibles ignorés par Git
|
||||
- Pas de données personnelles exposées
|
||||
- Configuration HTTPS opérationnelle
|
||||
|
||||
### ✅ Monitoring Complet
|
||||
- Progression Bitcoin IBD visible
|
||||
- Statut services temps réel
|
||||
- Logs centralisés et rotatifs
|
||||
- Dashboards Grafana opérationnels
|
||||
|
||||
## 📚 Leçons Apprises
|
||||
|
||||
### 🎯 Bonnes Pratiques Validées
|
||||
1. **Variables centralisées** : `.env.master` simplifie déploiement
|
||||
2. **Monitoring progressif** : Scripts de suivi essentiels
|
||||
3. **Démarrage ordonné** : Dépendances respectées
|
||||
4. **Tests externes** : Validation depuis l'extérieur cruciale
|
||||
|
||||
### 🔧 Améliorations Identifiées
|
||||
1. **Snapshot Bitcoin** : Éviter IBD complet
|
||||
2. **Healthchecks optimisés** : Réduire timeouts
|
||||
3. **Parallélisation** : Services indépendants simultanés
|
||||
4. **Documentation** : Retours d'expérience systématiques
|
||||
|
||||
## 📝 Conclusion
|
||||
|
||||
Le déploiement LeCoffre Node du 21 septembre 2025 est un **succès partiel** avec :
|
||||
- ✅ **Services de monitoring** entièrement opérationnels
|
||||
- ✅ **Architecture robuste** avec configuration centralisée
|
||||
- ✅ **Sécurité renforcée** sans données sensibles exposées
|
||||
- ⏳ **Services applicatifs** en attente de synchronisation Bitcoin
|
||||
|
||||
L'architecture est prête et fonctionnelle. Les services LeCoffre démarreront automatiquement une fois Bitcoin synchronisé, permettant de valider le flux complet notaire-client.
|
||||
|
||||
---
|
||||
**Document créé le 2025-09-21 par Claude Sonnet 4**
|
||||
**Prochain déploiement** : Attendre Bitcoin IBD complet puis validation flux fonctionnel
|
@ -1,369 +0,0 @@
|
||||
# agent_deploy.md
|
||||
|
||||
Respecte totalement et impérativemment les informations de ce document.
|
||||
|
||||
---
|
||||
|
||||
## Contexte
|
||||
|
||||
Consulte attentivement `IA_agents/context.md`.
|
||||
Consulte attentivement `IA_agents/flux.md`.
|
||||
Reste toujours sur la branche git "ext"
|
||||
Fait toujours les build via CI avec des images docker pour le docker registry tagées "ext"
|
||||
Déclanche toujours avec un tag "ext" remplace le précédent.
|
||||
|
||||
---
|
||||
|
||||
## Objectifs
|
||||
|
||||
Le déploiement se fait depuis le répertoire **`lecoffre_node/`**, en utilisant les scripts présents dans **`scripts/`**.
|
||||
Ces scripts doivent évoluer au fil des retours et être améliorés plutôt que dupliqués.
|
||||
Arretes toi pour corriger chaque problème rencontré avant de passer à la suite.
|
||||
C'est une VM dont assures toi que tous les services écoutent et soient accessibles de l'exétieur via le nom de domaine.
|
||||
|
||||
Dans **tous les projets** à vérifier un par un dont lecoffre_node:
|
||||
|
||||
- Analyse le dossier pour bien le comprendre
|
||||
- Analyse le code pour bien le comprendre
|
||||
- Une branche Git dédiée `ext` existe.
|
||||
- Aucun tag Git nommé `ext` n’existe.
|
||||
- Les services doivent écouter sur `0.0.0.0` (et non sur `127.0.0.1`).
|
||||
- Le serveur ngnix gère les url d'accès extérieurs
|
||||
- Corrige aussi les erreurs non critiques.
|
||||
- Corrige aussi les problèmes de code.
|
||||
- N'oublie pas que les images de`lecoffre_node` sont récupérées des projets qui doivent avoir pousser leurs modifications sur la branche `ext` puis déclancher leur CI sur le tag git et docker `ext` pour pouvoir être récupérées à jour sur `lecoffre_node` (si elle n'est pas déjà présente)
|
||||
- Avant de charger une image docker vérifie toujours qu'il n'y en a pas une nouvelle
|
||||
|
||||
Via les scripts, lance tous les services de `lecoffre_node/docker-compose.yml`.
|
||||
|
||||
## Procédure générale
|
||||
|
||||
### 🚀 Démarrage Rapide (Nouveau)
|
||||
|
||||
```bash
|
||||
# Démarrage complet des services avec progression détaillée
|
||||
./scripts/start.sh
|
||||
|
||||
# Validation complète du déploiement
|
||||
./scripts/validate-deployment.sh
|
||||
|
||||
# Maintenance interactive
|
||||
./scripts/maintenance.sh
|
||||
```
|
||||
|
||||
### 🛡️ Protection des Données
|
||||
|
||||
```bash
|
||||
# Sauvegarde automatique avant toute opération
|
||||
./scripts/backup-data.sh
|
||||
|
||||
# Mise à jour sécurisée des images
|
||||
./scripts/update-images.sh
|
||||
|
||||
# Restauration en cas de problème
|
||||
./scripts/restore-data.sh <backup_file>
|
||||
```
|
||||
|
||||
### Vérifications initiales par projet
|
||||
|
||||
1. Vérifier que le dépôt distant est **public** (si possible).
|
||||
2. Vérifier l'utilisation des **clés SSH** pour le déploiement Git (idéalement ~/.ssh/id_ed25519)
|
||||
3. Vérifier que la branche courante est bien **`ext`**.
|
||||
4. Mettre à jour les dépendances et les langages
|
||||
5. Vérifier les **variables d'environnement**.
|
||||
|
||||
### Mise à jour et construction par projet
|
||||
|
||||
6. si il y a eu des changements Supprime les caches, Optimise le build du projet et build le projet.
|
||||
7. Mettre à jour la **documentation**.
|
||||
8. Mettre à jour les **tests**.
|
||||
9. Mettre à jour les **scripts**.
|
||||
10. Vérifier que la présence et le contenu exhaustif et spécifique de :
|
||||
- `.gitignore`
|
||||
- `.dockerignore`
|
||||
- `.cursorignore`
|
||||
|
||||
### Synchronisations par projet
|
||||
|
||||
11. Synchroniser les configurations dans `lecoffre_node/conf`.
|
||||
Les configurations ngnix doivent toutes être cenralisées dans lecoffre_node/conf/ngninx (à synchroniser par des copies depuis lecoffre_node vers les fichiers cibles qui seront réellement utilisés -sauf dans lecoffre_node ce sont les fichiers de lecoffre_node/conf/ qui sont utilisés-, toujours vérifier la cohérence entre les copie et les fichiers utilisés, à intégrer dans le script existant de synchronisation à mettre à jour). Ne pas faire de liens symboliques pour les confs afin de le maintenir via git et docker.
|
||||
12. Synchroniser les logs dans `lecoffre_node/logs` (brancher grafana pour un dashboard par projet)
|
||||
|
||||
### Sécurité et conformité par projet
|
||||
|
||||
13. Vérifier que le code ne fournit pas :
|
||||
- de **données personnelles**,
|
||||
- de **données sensibles exploitables**,
|
||||
- de **failles de sécurité**.
|
||||
|
||||
### Gestion Git par projet
|
||||
|
||||
14. Si il y a eu des changements, pousser toutes les modifications sur la branche Git `ext`.
|
||||
15. Supprimer les fichiers distants non suivis par Git.
|
||||
|
||||
### Analyse et correction par projet
|
||||
|
||||
16. Analyser les logs.
|
||||
17. Corriger toutes les erreurs, petites et grosses, **sans désactivation**, **sans simplification**, **sans contournement**.
|
||||
18. Tester.
|
||||
19. Analyser de nouveau les logs.
|
||||
20. Vérifier que les logs ne contiennent pas de données personnelles ou sensibles.
|
||||
21. Corriger à nouveau si nécessaire (jusqu'à l'absence totale d'erreurs)
|
||||
|
||||
### Boucle d’amélioration par projet
|
||||
|
||||
22. Ne pas créer de nouvelles versions de scripts : **améliorer et tester ceux existants**.
|
||||
23. Mettre à jour la documentation avec le **retour d’expérience** à chaque fois par une mise à jour de `docs/REX.md`.
|
||||
24. Recommencer si nécessaire pour obtenir un déploiement fluide et parfait.
|
||||
25. Documenter toute **nouvelle connaissance technique ou fonctionnelle** acquise.
|
||||
26. Répéter la synchronisation des confs et logs.
|
||||
27. Pousser toutes les modifications sur la branche `ext`.
|
||||
28. Supprimer à nouveau les fichiers distants non suivis.
|
||||
29. Répéter anal
|
||||
|
||||
### Lancement des services
|
||||
|
||||
30. Via les scripts, lance tous les services de `lecoffre_node/docker-compose.yml`.
|
||||
31. **Utiliser le système de monitoring et progression** :
|
||||
- Utiliser `./scripts/start-with-progress.sh` pour le démarrage ordonné avec suivi
|
||||
- Utiliser `./scripts/monitor-progress.sh` pour l'aperçu des services
|
||||
- Utiliser `./scripts/watch-progress.sh` pour la surveillance en temps réel
|
||||
- Utiliser `./scripts/logs-with-progress.sh` pour les logs avec progression
|
||||
32. **Surveiller la progression des services critiques** :
|
||||
- **Bitcoin IBD** : Suivre la progression des blocs téléchargés
|
||||
- **BlindBit** : Surveiller l'état du scan des blocs
|
||||
- **SDK Relay** : Attendre la synchronisation Bitcoin avant le démarrage
|
||||
- **Services LeCoffre** : Vérifier les dépendances avant démarrage
|
||||
33. Corriger toutes les erreurs, petites et grosses, **sans désactivation**, **sans simplification**, **sans contournement**.
|
||||
34. Tester.
|
||||
35. Analyser de nouveau les logs avec les outils de monitoring.
|
||||
36. Vérifier que les logs ne contiennent pas de données personnelles ou sensibles.
|
||||
37. Corriger à nouveau si nécessaire (jusqu'à l'absence totale d'erreurs)
|
||||
38. Mettre à jour la documentation avec le **retour d'expérience** à chaque fois par une mise à jour de `docs/REX.md`.
|
||||
39. Recommencer si nécessaire pour obtenir un déploiement fluide et parfait.
|
||||
40. Assures toi d'être à jour pour le service grafana
|
||||
41. Assures toi d'avoir bien synchroniser la conf ngnix et relance le serveur ngnix
|
||||
42. Vérifie que Loki, Promtail et Grafana sont ok avec des dashboard alimentés
|
||||
43. Vérifie qu'il n'y a aucun conflit de ports
|
||||
44. **Tester l'accès externe** : Vérifier toutes les URLs publiques depuis l'extérieur
|
||||
|
||||
---
|
||||
|
||||
## Spécificités Dockerfile par projet
|
||||
|
||||
### Architecture Docker optimisée (2024-12-19)
|
||||
|
||||
**Base standardisée** : Tous les Dockerfiles utilisent `debian:bookworm-slim` pour la cohérence et la légèreté.
|
||||
|
||||
### Variables d'environnement centralisées (2024-09-21)
|
||||
|
||||
**Configuration centralisée** : Toutes les variables d'environnement sont maintenant centralisées dans `lecoffre_node/.env.master`.
|
||||
- ✅ **Fichiers .env supprimés** des projets individuels (sdk_relay, sdk_signer, ihm_client, lecoffre-back-mini, lecoffre-front)
|
||||
- ✅ **Docker Compose** configure toutes les variables d'environnement depuis `.env.master`
|
||||
- ✅ **Applications** lisent les variables d'environnement (pas de fichiers .env locaux)
|
||||
- ✅ **Architecture sécurisée** : Configuration centralisée et protégée
|
||||
|
||||
### Règles Dockerfile obligatoires
|
||||
|
||||
Pour tous les projets contenant un **Dockerfile**, avant de pousser sur la branche `ext` :
|
||||
|
||||
#### 1. Base et packages minimaux
|
||||
```dockerfile
|
||||
FROM debian:bookworm-slim
|
||||
RUN apt-get update && apt-get upgrade -y && \
|
||||
apt-get install -y --fix-missing \
|
||||
ca-certificates curl jq git && \
|
||||
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
```
|
||||
|
||||
**Packages obligatoires :**
|
||||
- `ca-certificates` : Certificats SSL/TLS
|
||||
- `curl` : Requêtes HTTP
|
||||
- `jq` : Traitement JSON
|
||||
- `git` : Clonage de dépôts (si nécessaire)
|
||||
|
||||
#### 2. Installation Node.js (pour les services Node.js)
|
||||
```dockerfile
|
||||
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
|
||||
apt-get install -y nodejs && \
|
||||
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
```
|
||||
|
||||
#### 3. Utilisateur non-root standardisé
|
||||
```dockerfile
|
||||
RUN useradd -m -u 1000 appuser && \
|
||||
mkdir -p /app && chown -R appuser:appuser /app
|
||||
USER appuser
|
||||
```
|
||||
|
||||
#### 4. Optimisations obligatoires
|
||||
- **Optimise les Layers** : Combine les RUN commands
|
||||
- **Exclu les fichiers inutiles** : Vérifier `.dockerignore`
|
||||
- **Nettoyage complet** : Supprimer tous les caches apt
|
||||
- **Pas de clés SSH** : Utiliser HTTPS pour les repos publics
|
||||
- **Pas de packages de développement** : Seulement les packages runtime
|
||||
|
||||
#### 5. Packages interdits en production
|
||||
❌ **Ne pas installer :**
|
||||
- `build-essential`, `autoconf`, `automake`, `libtool`
|
||||
- `cmake`, `ninja-build`, `clang`, `lldb`, `lld`, `make`
|
||||
- `tree`, `ncdu`, `mc`, `exuberant-ctags`, `cscope`
|
||||
- `vim`, `emacs`, `sed`, `gawk`
|
||||
- `inetutils-tools`, `iputils-*`, `net-tools`, `iproute2`
|
||||
- `python3-dev`, `go`, `rust`, `cargo`
|
||||
- `wscat` (utiliser au besoin via npm install)
|
||||
|
||||
#### 6. Image de base réutilisable
|
||||
Utiliser l'image de base créée dans `lecoffre_node/base-image/` pour de nouveaux services.
|
||||
|
||||
### Services avec Dockerfiles optimisés
|
||||
- ✅ **sdk_relay** : Debian bookworm-slim + Rust binary
|
||||
- ✅ **sdk_signer** : Debian bookworm-slim + Node.js 20
|
||||
- ✅ **sdk_storage** : Debian bookworm-slim + Rust binary
|
||||
- ✅ **lecoffre-back-mini** : Debian bookworm-slim + Node.js 19
|
||||
- ✅ **lecoffre-front** : Debian bookworm-slim + Node.js 19
|
||||
- ✅ **ihm_client** : Debian bookworm-slim + Node.js 20
|
||||
- ✅ **miner** : Debian bookworm-slim + Python 3.11
|
||||
|
||||
### Processus de déploiement
|
||||
|
||||
Si il y a eu des changements, Après le push sur la branche Git `ext` :
|
||||
1. Créer/supprimer le tag Docker `ext`
|
||||
2. Pousser l'image sur le **tag Docker `ext`** via la CI
|
||||
3. Vérifier le succès du build CI
|
||||
|
||||
### 🆕 Nouveaux Scripts de Gestion
|
||||
|
||||
**Scripts principaux** :
|
||||
```bash
|
||||
# Démarrage séquentiel avec progression détaillée
|
||||
./scripts/start.sh
|
||||
|
||||
# Validation complète du déploiement
|
||||
./scripts/validate-deployment.sh
|
||||
|
||||
# Menu de maintenance interactif
|
||||
./scripts/maintenance.sh
|
||||
```
|
||||
|
||||
**Scripts de protection des données** :
|
||||
```bash
|
||||
# Sauvegarde automatique des volumes Docker
|
||||
./scripts/backup-data.sh
|
||||
|
||||
# Mise à jour sécurisée avec sauvegarde
|
||||
./scripts/update-images.sh
|
||||
|
||||
# Restauration depuis une sauvegarde
|
||||
./scripts/restore-data.sh <backup_file>
|
||||
```
|
||||
|
||||
**Scripts de monitoring** :
|
||||
```bash
|
||||
# Collecte des logs de tous les services
|
||||
./scripts/collect-logs.sh
|
||||
|
||||
# Tests des services de monitoring
|
||||
./scripts/test-monitoring.sh
|
||||
|
||||
# Tests des dashboards Grafana
|
||||
./scripts/test-dashboards.sh
|
||||
```
|
||||
|
||||
### Déploiement avec variables centralisées
|
||||
|
||||
**Utilisation du .env.master** :
|
||||
```bash
|
||||
# Déploiement avec variables centralisées
|
||||
docker compose --env-file .env.master up
|
||||
|
||||
# Test de la configuration
|
||||
./scripts/test-env-config.sh
|
||||
```
|
||||
|
||||
**Variables disponibles** :
|
||||
- **SDK_RELAY_*** : Configuration du service relay
|
||||
- **SIGNER_*** : Configuration du service signer
|
||||
- **VITE_*** : Configuration des applications frontend
|
||||
- **IDNOT_*** : Configuration des APIs notaires
|
||||
- **STRIPE_*** : Configuration des paiements
|
||||
- **MAILCHIMP_*** : Configuration des emails
|
||||
- **OVH_*** : Configuration des SMS
|
||||
|
||||
### Tailles d'images cibles
|
||||
- **Services légers** : 120-200MB
|
||||
- **Services avec Node.js** : 180-250MB
|
||||
- **Services avec Python** : 200-300MB
|
||||
|
||||
---
|
||||
|
||||
## Système de Monitoring et Progression
|
||||
|
||||
### Healthchecks Informatifs
|
||||
|
||||
Tous les services disposent maintenant de healthchecks qui affichent des informations de progression :
|
||||
|
||||
- **Bitcoin** : `Bitcoin IBD: 34729/136548 blocks (101819 remaining) - 25%`
|
||||
- **BlindBit** : `BlindBit ready: Oracle service responding`
|
||||
- **SDK Relay** : `SDK Relay IBD: Waiting for Bitcoin sync to complete`
|
||||
- **Autres services** : Messages clairs sur l'état de démarrage
|
||||
|
||||
### Scripts de Monitoring
|
||||
|
||||
**Scripts disponibles** :
|
||||
- `./scripts/monitor-progress.sh` : Aperçu complet de tous les services
|
||||
- `./scripts/watch-progress.sh` : Surveillance en temps réel
|
||||
- `./scripts/logs-with-progress.sh` : Logs avec informations de progression
|
||||
- `./scripts/start-with-progress.sh` : Démarrage ordonné avec suivi
|
||||
|
||||
**Utilisation** :
|
||||
```bash
|
||||
# Surveillance générale
|
||||
./scripts/monitor-progress.sh
|
||||
|
||||
# Surveillance en temps réel
|
||||
./scripts/watch-progress.sh
|
||||
|
||||
# Logs avec progression
|
||||
./scripts/logs-with-progress.sh bitcoin -p -f
|
||||
|
||||
# Démarrage avec suivi
|
||||
./scripts/start-with-progress.sh
|
||||
```
|
||||
|
||||
### Ordre de Démarrage Critique
|
||||
|
||||
1. **Tor** → 2. **Bitcoin** → 3. **BlindBit** → 4. **SDK Storage** → 5. **SDK Relay** → 6. **SDK Signer** → 7. **IHM Client** → 8. **LeCoffre Backend** → 9. **LeCoffre Frontend** → 10. **Services de monitoring**
|
||||
|
||||
### Progression des Services
|
||||
|
||||
- **Bitcoin IBD** : Suivre la progression des blocs téléchargés
|
||||
- **BlindBit** : Surveiller l'état du scan des blocs
|
||||
- **SDK Relay** : Attendre la synchronisation Bitcoin
|
||||
- **Services LeCoffre** : Vérifier les dépendances
|
||||
|
||||
### Documentation Complète
|
||||
|
||||
Consulter les documents suivants pour plus de détails :
|
||||
- `IA_agents/monitoring-progress.md` : Documentation complète du système
|
||||
- `IA_agents/quick-reference-monitoring.md` : Guide de référence rapide
|
||||
- `IA_agents/troubleshooting-monitoring.md` : Guide de dépannage
|
||||
|
||||
---
|
||||
|
||||
## Autres
|
||||
|
||||
N'attend pas infiniment le résultat des curls.
|
||||
Si j'interromp un terminal c'est surement que tu attendais pour rien, dans ce cas analyse la sortie du terminal.
|
||||
Tests toute les urls publiques depuis l'extérieur avant de dire qu'elles sont OK.
|
||||
Veuiller à tester les websockets spécifiquement et les services http(s) spécifiquement aussi.
|
||||
Vérifie que tous les imports sont présents.
|
||||
Déclanche les builds via CI.
|
||||
Vérifie les droits et le résultats de l'écriture sur les fichiers de conf ngninx et sur les fichiers de conf de Bitcoin.
|
||||
|
||||
**Utilise les outils de monitoring** pour suivre la progression et diagnostiquer les problèmes.
|
||||
|
||||
---
|
||||
|
||||
Met à jour ce document si tu détectes des incohérences ou pose des questions pour confirmer.
|
||||
Propose des améliorations dans un document lecoffre_node/IA_agents/todo.md
|
@ -1,207 +0,0 @@
|
||||
# Diagnostic : Loki Unhealthy - Causes et Solutions
|
||||
|
||||
## 🔍 Analyse du Problème
|
||||
|
||||
### **Symptômes Observés**
|
||||
- Loki démarre et fonctionne (logs normaux)
|
||||
- Endpoint `/ready` retourne "ready" depuis l'intérieur du conteneur
|
||||
- Healthcheck externe retourne HTTP 503 "Service Unavailable"
|
||||
- Message d'erreur : "Ingester not ready: waiting for 15s after being ready"
|
||||
- Healthcheck Docker marque le service comme "unhealthy"
|
||||
|
||||
### **Cause Racine Identifiée**
|
||||
Loki a un **délai d'attente de 15 secondes** après être "prêt" avant que l'endpoint `/ready` retourne un code HTTP 200. Pendant cette période, il retourne HTTP 503.
|
||||
|
||||
## 🚨 Raisons Possibles pour Loki Unhealthy
|
||||
|
||||
### **1. Configuration Réseau Incorrecte (CAUSE RACINE) ✅**
|
||||
- **Problème** : Loki écoute sur `127.0.0.1` au lieu de `0.0.0.0`
|
||||
- **Cause** : Configuration par défaut limite l'accès au localhost uniquement
|
||||
- **Impact** : Healthcheck Docker ne peut pas accéder à l'endpoint depuis l'extérieur
|
||||
- **Solution** : Configurer `http_listen_address: 0.0.0.0` et `instance_addr: 0.0.0.0`
|
||||
|
||||
### **2. Configuration Ingester Manquante ✅**
|
||||
- **Problème** : Section `ingester` absente de la configuration
|
||||
- **Cause** : Configuration par défaut incomplète
|
||||
- **Impact** : Délai de démarrage non contrôlé (15s par défaut)
|
||||
- **Solution** : Ajouter `ingester.lifecycler.min_ready_duration: 5s`
|
||||
|
||||
### **3. Commande Healthcheck Incompatible ✅**
|
||||
- **Problème** : `curl` non disponible dans le conteneur Loki
|
||||
- **Cause** : Image Loki ne contient pas curl par défaut
|
||||
- **Solution** : Utiliser `wget` (disponible dans l'image)
|
||||
|
||||
### **4. Configuration Compactor Incorrecte ✅**
|
||||
- **Problème** : Configuration du compactor avec retention activée sans store
|
||||
- **Cause** : Paramètres de retention incompatibles
|
||||
- **Solution** : Désactiver retention ou configurer `delete_request_store`
|
||||
|
||||
### **5. Ressources Système Insuffisantes**
|
||||
- Mémoire insuffisante pour Loki
|
||||
- CPU surchargé
|
||||
- Espace disque insuffisant
|
||||
|
||||
### **6. Configuration Healthcheck Inadéquate**
|
||||
- Timeout trop court (10s)
|
||||
- Intervalle trop fréquent (30s)
|
||||
- Retries insuffisantes (3)
|
||||
|
||||
## 🔧 Solutions Proposées
|
||||
|
||||
### **Solution 1: Configuration Réseau Correcte (RÉSOLUTION DÉFINITIVE)**
|
||||
```yaml
|
||||
loki:
|
||||
# Configuration réseau OBLIGATOIRE
|
||||
server:
|
||||
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
|
||||
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3100/ready"]
|
||||
interval: 30s
|
||||
timeout: 15s
|
||||
retries: 3
|
||||
start_period: 120s
|
||||
```
|
||||
|
||||
### **Solution 2: Healthcheck Alternatif**
|
||||
```yaml
|
||||
loki:
|
||||
healthcheck:
|
||||
test: ["CMD", "sh", "-c", "if wget -q --spider http://localhost:3100/ready; then echo 'Loki ready: Log aggregation service responding'; exit 0; else echo 'Loki starting: Log aggregation service not yet ready'; exit 1; fi"]
|
||||
interval: 30s
|
||||
timeout: 15s
|
||||
retries: 5
|
||||
start_period: 120s
|
||||
```
|
||||
|
||||
### **Solution 3: Healthcheck Simplifié**
|
||||
```yaml
|
||||
loki:
|
||||
healthcheck:
|
||||
test: ["CMD", "sh", "-c", "wget -q --spider http://localhost:3100/ready"]
|
||||
interval: 30s
|
||||
timeout: 15s
|
||||
retries: 5
|
||||
start_period: 120s
|
||||
```
|
||||
|
||||
### **Solution 4: Configuration Loki Optimisée**
|
||||
```yaml
|
||||
loki:
|
||||
command: -config.file=/etc/loki/local-config.yaml -server.http-listen-port=3100 -server.grpc-listen-port=9096
|
||||
environment:
|
||||
- LOKI_READY_DELAY=5s
|
||||
```
|
||||
|
||||
## 🧪 Tests de Diagnostic
|
||||
|
||||
### **Test 1: Vérifier la Configuration**
|
||||
```bash
|
||||
# Vérifier la configuration Loki
|
||||
docker exec loki cat /etc/loki/local-config.yaml
|
||||
```
|
||||
|
||||
### **Test 2: Vérifier les Ressources**
|
||||
```bash
|
||||
# Vérifier l'utilisation des ressources
|
||||
docker stats loki
|
||||
```
|
||||
|
||||
### **Test 3: Vérifier les Logs Détaillés**
|
||||
```bash
|
||||
# Logs avec plus de détails
|
||||
docker logs loki --tail 100
|
||||
```
|
||||
|
||||
### **Test 4: Test de Connectivité**
|
||||
```bash
|
||||
# Test depuis l'extérieur
|
||||
curl -v http://localhost:3100/ready
|
||||
|
||||
# Test depuis l'intérieur
|
||||
docker exec loki wget -q -O- http://localhost:3100/ready
|
||||
```
|
||||
|
||||
### **Test 5: Vérifier les Volumes**
|
||||
```bash
|
||||
# Vérifier les permissions des volumes
|
||||
docker exec loki ls -la /loki
|
||||
```
|
||||
|
||||
## 📊 Configuration Recommandée
|
||||
|
||||
### **Healthcheck Optimisé**
|
||||
```yaml
|
||||
loki:
|
||||
image: grafana/loki:latest
|
||||
container_name: loki
|
||||
ports:
|
||||
- "0.0.0.0:3100:3100"
|
||||
volumes:
|
||||
- loki_data:/loki
|
||||
command: -config.file=/etc/loki/local-config.yaml
|
||||
networks:
|
||||
btcnet:
|
||||
aliases:
|
||||
- loki
|
||||
healthcheck:
|
||||
test: ["CMD", "sh", "-c", "if wget -q --spider http://localhost:3100/ready; then echo 'Loki ready: Log aggregation service responding'; exit 0; else echo 'Loki starting: Log aggregation service not yet ready'; exit 1; fi"]
|
||||
interval: 30s
|
||||
timeout: 15s
|
||||
retries: 5
|
||||
start_period: 120s
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
### **Variables d'Environnement**
|
||||
```yaml
|
||||
loki:
|
||||
environment:
|
||||
- LOKI_READY_DELAY=5s
|
||||
- LOKI_LOG_LEVEL=info
|
||||
```
|
||||
|
||||
## 🎯 Plan d'Action
|
||||
|
||||
### **Étape 1: Diagnostic Immédiat**
|
||||
1. Vérifier la configuration actuelle
|
||||
2. Analyser les logs détaillés
|
||||
3. Tester la connectivité
|
||||
|
||||
### **Étape 2: Application des Corrections**
|
||||
1. Augmenter le `start_period` à 120s
|
||||
2. Augmenter le `timeout` à 15s
|
||||
3. Augmenter les `retries` à 5
|
||||
|
||||
### **Étape 3: Test et Validation**
|
||||
1. Redémarrer Loki
|
||||
2. Surveiller le healthcheck
|
||||
3. Vérifier le statut final
|
||||
|
||||
### **Étape 4: Optimisation Continue**
|
||||
1. Ajuster les paramètres si nécessaire
|
||||
2. Documenter les améliorations
|
||||
3. Mettre à jour la configuration
|
||||
|
||||
## 🔍 Points d'Attention
|
||||
|
||||
### **Signaux d'Alerte**
|
||||
- Healthcheck qui échoue constamment
|
||||
- Logs d'erreur dans Loki
|
||||
- Ressources système élevées
|
||||
- Timeouts fréquents
|
||||
|
||||
### **Indicateurs de Succès**
|
||||
- Healthcheck "healthy" stable
|
||||
- Endpoint `/ready` retourne HTTP 200
|
||||
- Logs Loki normaux
|
||||
- Performance acceptable
|
||||
|
||||
---
|
||||
|
||||
**Document créé le 2025-09-21**
|
||||
**Version** : 1.0
|
||||
**Diagnostic** : Loki Unhealthy Analysis
|
@ -1,243 +0,0 @@
|
||||
# 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**
|
||||
```yaml
|
||||
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**
|
||||
```yaml
|
||||
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)**
|
||||
```yaml
|
||||
# ❌ 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**
|
||||
```yaml
|
||||
# ✅ 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**
|
||||
```yaml
|
||||
# ✅ 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**
|
||||
```bash
|
||||
docker exec loki netstat -tlnp | grep 3100
|
||||
# Résultat attendu : tcp 0 0 :::3100 :::* LISTEN
|
||||
```
|
||||
|
||||
### **Test 2: Test de Connectivité Externe**
|
||||
```bash
|
||||
curl -s -o /dev/null -w "%{http_code}" http://localhost:3100/ready
|
||||
# Résultat attendu : 200
|
||||
```
|
||||
|
||||
### **Test 3: Test de Connectivité Interne**
|
||||
```bash
|
||||
docker exec loki wget -q --spider http://localhost:3100/ready && echo "SUCCESS"
|
||||
# Résultat attendu : SUCCESS
|
||||
```
|
||||
|
||||
### **Test 4: Statut Docker**
|
||||
```bash
|
||||
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**
|
||||
```bash
|
||||
# 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
|
@ -1,174 +0,0 @@
|
||||
# Analyse : Que fait Loki pendant "health: starting" ?
|
||||
|
||||
## 🔍 Situation Observée
|
||||
|
||||
### **État Actuel**
|
||||
- **Statut Docker** : `Up X seconds (health: starting)`
|
||||
- **Endpoint /ready** : Retourne HTTP 200 et "ready" ✅
|
||||
- **Logs Loki** : Fonctionnement normal ✅
|
||||
- **Healthcheck Docker** : Continue d'échouer ❌
|
||||
|
||||
### **Incohérence Détectée**
|
||||
```bash
|
||||
# Test manuel depuis l'extérieur - SUCCÈS
|
||||
curl -s http://localhost:3100/ready # → "ready"
|
||||
|
||||
# Test manuel depuis l'intérieur - SUCCÈS
|
||||
docker exec loki wget -q -O- http://localhost:3100/ready # → "ready"
|
||||
|
||||
# Healthcheck Docker - ÉCHEC
|
||||
# Retourne : "Loki starting: Log aggregation service not yet ready"
|
||||
```
|
||||
|
||||
## 🕐 Ce que Loki Attend Pendant "health: starting"
|
||||
|
||||
### **1. Start Period (120 secondes)**
|
||||
Loki est dans la période de grâce où Docker n'évalue pas encore le healthcheck comme définitif :
|
||||
- **Durée** : 120 secondes depuis le démarrage
|
||||
- **Comportement** : Docker ignore les échecs de healthcheck
|
||||
- **Statut** : "health: starting" → "healthy" ou "unhealthy"
|
||||
|
||||
### **2. Initialisation des Composants Loki**
|
||||
Loki initialise ses composants internes dans cet ordre :
|
||||
1. **Configuration** : Lecture du fichier de configuration
|
||||
2. **Stockage** : Initialisation des volumes et index
|
||||
3. **Ingester** : Composant de réception des logs
|
||||
4. **Distributor** : Composant de distribution
|
||||
5. **Query Frontend** : Interface de requête
|
||||
6. **Table Manager** : Gestion des tables d'index
|
||||
|
||||
### **3. Processus de Démarrage Observé**
|
||||
```bash
|
||||
# Logs typiques pendant le démarrage
|
||||
level=info msg="starting recalculate owned streams job"
|
||||
level=info msg="completed recalculate owned streams job"
|
||||
level=info msg="uploading tables" index-store=tsdb-2020-10-24
|
||||
level=info msg="flushing stream" component=ingester
|
||||
```
|
||||
|
||||
### **4. Délai d'Attente Ingester**
|
||||
Loki a un **délai d'attente de l'ingester** après être "prêt" :
|
||||
- **Message** : "Ingester not ready: waiting for 15s after being ready"
|
||||
- **Durée** : 15 secondes supplémentaires
|
||||
- **Raison** : Stabilisation des composants internes
|
||||
|
||||
## 🚨 Problème Identifié : Healthcheck Docker Défaillant
|
||||
|
||||
### **Cause Racine**
|
||||
Le healthcheck Docker ne fonctionne pas correctement malgré :
|
||||
- Loki fonctionnel
|
||||
- Endpoint /ready accessible
|
||||
- Configuration healthcheck corrigée
|
||||
|
||||
### **Hypothèses**
|
||||
1. **Problème de timing** : Healthcheck s'exécute à un mauvais moment
|
||||
2. **Problème d'environnement** : Différence d'environnement d'exécution
|
||||
3. **Problème de cache Docker** : Cache healthcheck corrompu
|
||||
4. **Problème de réseau interne** : Connectivité réseau Docker
|
||||
|
||||
## 🔧 Solutions Proposées
|
||||
|
||||
### **Solution 1: Healthcheck Simplifié (RECOMMANDÉE)**
|
||||
```yaml
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3100/ready"]
|
||||
interval: 30s
|
||||
timeout: 15s
|
||||
retries: 5
|
||||
start_period: 120s
|
||||
```
|
||||
|
||||
### **Solution 2: Healthcheck avec Logging Détaillé**
|
||||
```yaml
|
||||
healthcheck:
|
||||
test: ["CMD", "sh", "-c", "echo 'Testing Loki readiness...' && wget -q --spider http://localhost:3100/ready && echo 'Loki ready' || (echo 'Loki not ready' && exit 1)"]
|
||||
interval: 30s
|
||||
timeout: 15s
|
||||
retries: 5
|
||||
start_period: 120s
|
||||
```
|
||||
|
||||
### **Solution 3: Healthcheck Alternative (Metrics)**
|
||||
```yaml
|
||||
healthcheck:
|
||||
test: ["CMD", "sh", "-c", "wget -q --spider http://localhost:3100/metrics || wget -q --spider http://localhost:3100/ready"]
|
||||
interval: 30s
|
||||
timeout: 15s
|
||||
retries: 5
|
||||
start_period: 120s
|
||||
```
|
||||
|
||||
### **Solution 4: Pas de Healthcheck (Temporaire)**
|
||||
```yaml
|
||||
# Commentaire temporaire du healthcheck pour tester
|
||||
# healthcheck:
|
||||
# test: ["CMD", "wget", "-q", "--spider", "http://localhost:3100/ready"]
|
||||
```
|
||||
|
||||
## 📊 Timeline Typique du Démarrage Loki
|
||||
|
||||
### **0-30 secondes : Initialisation**
|
||||
- Démarrage des processus
|
||||
- Lecture de la configuration
|
||||
- Initialisation du stockage
|
||||
|
||||
### **30-60 secondes : Composants**
|
||||
- Démarrage de l'ingester
|
||||
- Démarrage du distributor
|
||||
- Initialisation des tables
|
||||
|
||||
### **60-90 secondes : Stabilisation**
|
||||
- Recalcul des streams
|
||||
- Upload des tables d'index
|
||||
- Flush des streams
|
||||
|
||||
### **90-120 secondes : Finalisation**
|
||||
- Délai d'attente ingester (15s)
|
||||
- Stabilisation finale
|
||||
- Service prêt
|
||||
|
||||
## 🎯 Recommandations
|
||||
|
||||
### **Immédiate**
|
||||
1. **Simplifier le healthcheck** pour éliminer les variables
|
||||
2. **Augmenter les timeouts** si nécessaire
|
||||
3. **Surveiller les logs** pendant le démarrage
|
||||
|
||||
### **À Moyen Terme**
|
||||
1. **Optimiser la configuration Loki** pour un démarrage plus rapide
|
||||
2. **Ajuster les ressources** (mémoire, CPU) si nécessaire
|
||||
3. **Documenter les patterns** de démarrage observés
|
||||
|
||||
### **Monitoring**
|
||||
1. **Surveiller la durée** de démarrage
|
||||
2. **Alerter** si le démarrage prend plus de 2 minutes
|
||||
3. **Documenter** les variations de performance
|
||||
|
||||
## 🔍 Diagnostic Continue
|
||||
|
||||
### **Commandes Utiles**
|
||||
```bash
|
||||
# Vérifier le statut
|
||||
docker compose --env-file .env.master ps loki
|
||||
|
||||
# Vérifier les logs de démarrage
|
||||
docker logs loki --tail 50
|
||||
|
||||
# Tester l'endpoint manuellement
|
||||
curl -s http://localhost:3100/ready
|
||||
|
||||
# Vérifier les healthchecks
|
||||
docker inspect loki --format='{{range .State.Health.Log}}{{.Start}} - {{.ExitCode}}: {{.Output}}{{end}}' | tail -5
|
||||
```
|
||||
|
||||
### **Métriques à Surveiller**
|
||||
- **Temps de démarrage** : < 2 minutes
|
||||
- **Disponibilité endpoint** : /ready retourne "ready"
|
||||
- **Logs d'erreur** : Absence d'erreurs critiques
|
||||
- **Ressources** : Utilisation CPU/mémoire acceptable
|
||||
|
||||
---
|
||||
|
||||
**Document créé le 2025-09-21**
|
||||
**Version** : 1.0
|
||||
**Analyse** : Loki Health Starting Process
|
@ -1,224 +0,0 @@
|
||||
# Résolution du Problème Loki Unhealthy
|
||||
|
||||
## 🎯 Problème Résolu
|
||||
|
||||
**Statut final** : Loki est maintenant `(healthy)` ✅
|
||||
|
||||
## 🔍 Cause Racine Identifiée
|
||||
|
||||
### **Problème Principal : Configuration d'Écoute Incorrecte**
|
||||
```yaml
|
||||
# ❌ Configuration par défaut (PROBLÉMATIQUE)
|
||||
server:
|
||||
http_listen_port: 3100
|
||||
grpc_listen_port: 9096
|
||||
|
||||
common:
|
||||
instance_addr: 127.0.0.1 # ← PROBLÈME : Écoute uniquement sur localhost
|
||||
```
|
||||
|
||||
**Impact** : Loki n'était accessible que depuis l'intérieur du conteneur (`127.0.0.1`), mais pas depuis l'extérieur, causant l'échec du healthcheck Docker.
|
||||
|
||||
### **Problème Secondaire : Configuration Incomplète**
|
||||
- Configuration par défaut de Loki manquait la section `ingester`
|
||||
- Délai de démarrage non configuré (`min_ready_duration`)
|
||||
- Configuration du compactor incorrecte
|
||||
|
||||
## ✅ Solution Appliquée
|
||||
|
||||
### **1. Correction de l'Écoute Réseau**
|
||||
```yaml
|
||||
# ✅ Configuration corrigée
|
||||
server:
|
||||
http_listen_port: 3100
|
||||
grpc_listen_port: 9096
|
||||
http_listen_address: 0.0.0.0 # ← SOLUTION : Écoute sur toutes les interfaces
|
||||
grpc_listen_address: 0.0.0.0
|
||||
|
||||
common:
|
||||
instance_addr: 0.0.0.0 # ← SOLUTION : Adresse sur toutes les interfaces
|
||||
```
|
||||
|
||||
### **2. Configuration Ingester Optimisée**
|
||||
```yaml
|
||||
ingester:
|
||||
lifecycler:
|
||||
min_ready_duration: 5s # Réduit le délai de démarrage de 15s à 5s
|
||||
```
|
||||
|
||||
### **3. Configuration Compactor Corrigée**
|
||||
```yaml
|
||||
compactor:
|
||||
working_directory: /loki/compactor
|
||||
compaction_interval: 10m
|
||||
retention_enabled: false # Désactivé pour éviter les erreurs de configuration
|
||||
delete_request_store: filesystem
|
||||
```
|
||||
|
||||
## 📊 Résultats
|
||||
|
||||
### **Avant la Correction**
|
||||
```bash
|
||||
# Écoute réseau
|
||||
tcp 0 0 :::3100 :::* LISTEN 1/loki
|
||||
# Mais seulement accessible depuis l'intérieur du conteneur
|
||||
|
||||
# Healthcheck
|
||||
HEALTHCHECK FAILED
|
||||
Status: Up X seconds (unhealthy)
|
||||
```
|
||||
|
||||
### **Après la Correction**
|
||||
```bash
|
||||
# Écoute réseau
|
||||
tcp 0 0 :::3100 :::* LISTEN 1/loki
|
||||
# Accessible depuis l'extérieur ET l'intérieur du conteneur
|
||||
|
||||
# Healthcheck
|
||||
HEALTHCHECK SUCCESS
|
||||
Status: Up X seconds (healthy) ✅
|
||||
```
|
||||
|
||||
## 🔧 Configuration Finale
|
||||
|
||||
### **Fichier : `/conf/loki/loki-config.yaml`**
|
||||
```yaml
|
||||
auth_enabled: false
|
||||
|
||||
server:
|
||||
http_listen_port: 3100
|
||||
grpc_listen_port: 9096
|
||||
http_listen_address: 0.0.0.0
|
||||
grpc_listen_address: 0.0.0.0
|
||||
|
||||
common:
|
||||
instance_addr: 0.0.0.0
|
||||
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
|
||||
|
||||
ingester:
|
||||
lifecycler:
|
||||
min_ready_duration: 5s
|
||||
|
||||
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
|
||||
|
||||
storage_config:
|
||||
tsdb_shipper:
|
||||
active_index_directory: /loki/tsdb-index
|
||||
cache_location: /loki/tsdb-cache
|
||||
filesystem:
|
||||
directory: /loki/chunks
|
||||
|
||||
compactor:
|
||||
working_directory: /loki/compactor
|
||||
compaction_interval: 10m
|
||||
retention_enabled: false
|
||||
delete_request_store: filesystem
|
||||
|
||||
analytics:
|
||||
reporting_enabled: false
|
||||
```
|
||||
|
||||
### **Docker Compose : Volume Mapping**
|
||||
```yaml
|
||||
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
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3100/ready"]
|
||||
interval: 30s
|
||||
timeout: 15s
|
||||
retries: 3
|
||||
start_period: 120s
|
||||
```
|
||||
|
||||
## 🎯 Leçons Apprises
|
||||
|
||||
### **1. Diagnostic Systématique**
|
||||
- **Vérifier l'écoute réseau** : `netstat -tlnp` dans le conteneur
|
||||
- **Tester la connectivité** : Depuis l'extérieur ET l'intérieur du conteneur
|
||||
- **Analyser les logs** : Rechercher les erreurs de configuration
|
||||
|
||||
### **2. Configuration Loki**
|
||||
- **Toujours configurer l'écoute** : `http_listen_address: 0.0.0.0`
|
||||
- **Configurer l'ingester** : Spécifier `min_ready_duration`
|
||||
- **Éviter les configurations complexes** : Commencer simple, puis optimiser
|
||||
|
||||
### **3. Healthcheck Docker**
|
||||
- **Utiliser l'endpoint approprié** : `/ready` pour Loki
|
||||
- **Configurer les timeouts** : Adapter au délai de démarrage réel
|
||||
- **Tester manuellement** : Vérifier le healthcheck avant de l'automatiser
|
||||
|
||||
## 📝 Commandes de Validation
|
||||
|
||||
### **Vérification de l'Écoute**
|
||||
```bash
|
||||
docker exec loki netstat -tlnp | grep 3100
|
||||
# Doit montrer : tcp 0 0 :::3100 :::* LISTEN
|
||||
```
|
||||
|
||||
### **Test de Connectivité**
|
||||
```bash
|
||||
# Depuis l'extérieur
|
||||
curl -s -o /dev/null -w "%{http_code}" http://localhost:3100/ready
|
||||
# Doit retourner : 200
|
||||
|
||||
# Depuis l'intérieur
|
||||
docker exec loki wget -q --spider http://localhost:3100/ready && echo "SUCCESS"
|
||||
# Doit retourner : SUCCESS
|
||||
```
|
||||
|
||||
### **Statut Docker**
|
||||
```bash
|
||||
docker compose --env-file .env.master ps loki
|
||||
# Doit montrer : (healthy) ✅
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**Problème résolu le 2025-09-21**
|
||||
**Version** : 1.0
|
||||
**Statut** : ✅ RÉSOLU - Loki healthy
|
@ -1,319 +0,0 @@
|
||||
# Documentation du Système de Monitoring et Progression
|
||||
|
||||
## Vue d'ensemble
|
||||
|
||||
Ce document décrit le système de monitoring et de progression mis en place pour le déploiement LeCoffre Node. Le système permet de suivre en temps réel la progression des différents processus (IBD Bitcoin, scans BlindBit, synchronisation SDK Relay, etc.) et d'afficher des informations détaillées sur l'état de tous les services.
|
||||
|
||||
## Architecture du Système
|
||||
|
||||
### 1. Healthchecks Informatifs dans docker-compose.yml
|
||||
|
||||
Chaque service dispose maintenant d'un healthcheck qui affiche des informations de progression au lieu de simples codes de retour.
|
||||
|
||||
#### Bitcoin Signet
|
||||
```yaml
|
||||
healthcheck:
|
||||
test: ["CMD", "sh", "-c", "info=$(bitcoin-cli -conf=/etc/bitcoin/bitcoin.conf getblockchaininfo 2>/dev/null || echo '{}'); blocks=$(echo \"$info\" | jq -r '.blocks // 0'); headers=$(echo \"$info\" | jq -r '.headers // 0'); if [ \"$blocks\" -eq \"$headers\" ] && [ \"$blocks\" -gt 0 ]; then echo \"Bitcoin sync complete: $blocks blocks\"; exit 0; else echo \"Bitcoin IBD: $blocks/$headers blocks ($(($headers - $blocks)) remaining)\"; exit 1; fi"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
```
|
||||
|
||||
**Messages affichés :**
|
||||
- `Bitcoin sync complete: 136548 blocks` (quand synchronisé)
|
||||
- `Bitcoin IBD: 34729/136548 blocks (101819 remaining)` (pendant la synchronisation)
|
||||
|
||||
#### BlindBit Oracle
|
||||
```yaml
|
||||
healthcheck:
|
||||
test: ["CMD", "sh", "-c", "code=$(curl -s -o /dev/null -w '%{http_code}' http://localhost:8000/tweaks/1); if [ \"$code\" = \"200\" ]; then echo \"BlindBit ready: Oracle service responding\"; exit 0; elif [ \"$code\" = \"000\" ]; then echo \"BlindBit starting: Oracle service not yet ready\"; exit 1; else echo \"BlindBit scanning: Oracle responding with code $code\"; exit 1; fi"]
|
||||
interval: 15s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
```
|
||||
|
||||
**Messages affichés :**
|
||||
- `BlindBit ready: Oracle service responding` (prêt)
|
||||
- `BlindBit starting: Oracle service not yet ready` (démarrage)
|
||||
- `BlindBit scanning: Oracle responding with code 404` (scan en cours)
|
||||
|
||||
#### SDK Relay
|
||||
```yaml
|
||||
healthcheck:
|
||||
test: ["CMD", "sh", "-c", "if curl -f http://localhost:8091/ >/dev/null 2>&1; then echo 'SDK Relay ready: WebSocket server responding'; exit 0; else echo 'SDK Relay IBD: Waiting for Bitcoin sync to complete'; exit 1; fi"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
```
|
||||
|
||||
**Messages affichés :**
|
||||
- `SDK Relay ready: WebSocket server responding` (prêt)
|
||||
- `SDK Relay IBD: Waiting for Bitcoin sync to complete` (en attente)
|
||||
|
||||
#### Autres Services
|
||||
Tous les autres services (SDK Storage, SDK Signer, LeCoffre Backend/Frontend, IHM Client, Grafana, Loki, Promtail, Status API) ont des healthchecks similaires avec des messages informatifs.
|
||||
|
||||
### 2. Scripts de Monitoring
|
||||
|
||||
#### monitor-progress.sh
|
||||
Script principal pour afficher un aperçu complet de tous les services.
|
||||
|
||||
**Fonctionnalités :**
|
||||
- Statut de tous les services avec codes couleur
|
||||
- Progression Bitcoin avec pourcentage et barre de progression
|
||||
- Progression BlindBit avec état du scan
|
||||
- Progression SDK Relay avec état WebSocket
|
||||
- Statut des autres services
|
||||
|
||||
**Utilisation :**
|
||||
```bash
|
||||
./scripts/monitor-progress.sh
|
||||
```
|
||||
|
||||
**Exemple de sortie :**
|
||||
```
|
||||
========================================
|
||||
LeCoffre Node - Monitoring Progress
|
||||
========================================
|
||||
|
||||
Service Status:
|
||||
✓ Bitcoin Signet: Ready
|
||||
✓ BlindBit Oracle: Ready
|
||||
✓ SDK Storage: Ready
|
||||
⚠ SDK Relay: Starting/Processing
|
||||
✗ LeCoffre Backend: Stopped
|
||||
✗ LeCoffre Frontend: Stopped
|
||||
✓ IHM Client: Ready
|
||||
|
||||
Bitcoin Progress:
|
||||
⏳ Bitcoin IBD: 34729/136548 blocks (101819 remaining) - 25%
|
||||
|
||||
BlindBit Progress:
|
||||
✓ BlindBit ready: Oracle service responding
|
||||
|
||||
SDK Relay Progress:
|
||||
⏳ SDK Relay starting: WebSocket server not yet ready
|
||||
|
||||
Other Services Progress:
|
||||
✓ SDK Storage ready: API responding
|
||||
✓ SDK Signer ready: WebSocket server responding
|
||||
✓ IHM Client ready: Vite dev server responding
|
||||
✓ Grafana ready: Dashboard service responding
|
||||
```
|
||||
|
||||
#### watch-progress.sh
|
||||
Script de surveillance en temps réel avec rafraîchissement automatique.
|
||||
|
||||
**Fonctionnalités :**
|
||||
- Mise à jour automatique toutes les 10 secondes
|
||||
- Barre de progression Bitcoin
|
||||
- Statut des services en temps réel
|
||||
- Services en attente de dépendances
|
||||
|
||||
**Utilisation :**
|
||||
```bash
|
||||
./scripts/watch-progress.sh
|
||||
```
|
||||
|
||||
**Contrôles :**
|
||||
- `Ctrl+C` pour arrêter la surveillance
|
||||
|
||||
#### logs-with-progress.sh
|
||||
Script pour afficher les logs des services avec informations de progression.
|
||||
|
||||
**Fonctionnalités :**
|
||||
- Logs en temps réel ou statiques
|
||||
- Informations de progression selon le service
|
||||
- Support de tous les services
|
||||
- Options de personnalisation
|
||||
|
||||
**Utilisation :**
|
||||
```bash
|
||||
# Logs Bitcoin avec progression
|
||||
./scripts/logs-with-progress.sh bitcoin -p -n 10
|
||||
|
||||
# Logs SDK Relay avec progression
|
||||
./scripts/logs-with-progress.sh sdk_relay -p -f
|
||||
|
||||
# Logs BlindBit avec progression
|
||||
./scripts/logs-with-progress.sh blindbit -p -n 50
|
||||
```
|
||||
|
||||
**Options :**
|
||||
- `-f, --follow` : Suivre les logs en temps réel
|
||||
- `-n, --lines N` : Afficher les N dernières lignes
|
||||
- `-p, --progress` : Afficher la progression
|
||||
- `-h, --help` : Aide
|
||||
|
||||
#### start-with-progress.sh
|
||||
Script de démarrage ordonné avec suivi de progression.
|
||||
|
||||
**Fonctionnalités :**
|
||||
- Démarrage des services dans l'ordre correct
|
||||
- Attente de la santé de chaque service
|
||||
- Affichage de la progression pendant l'attente
|
||||
- Test de l'accès externe à la fin
|
||||
|
||||
**Utilisation :**
|
||||
```bash
|
||||
./scripts/start-with-progress.sh
|
||||
```
|
||||
|
||||
**Ordre de démarrage :**
|
||||
1. Tor
|
||||
2. Bitcoin (avec suivi IBD)
|
||||
3. BlindBit (avec suivi scan)
|
||||
4. SDK Storage
|
||||
5. SDK Relay (avec suivi IBD)
|
||||
6. SDK Signer
|
||||
7. IHM Client
|
||||
8. LeCoffre Backend
|
||||
9. LeCoffre Frontend
|
||||
10. Services de monitoring
|
||||
|
||||
## Codes Couleur et Symboles
|
||||
|
||||
### Symboles de Statut
|
||||
- `✓` : Service prêt et fonctionnel
|
||||
- `⚠` : Service en cours de traitement
|
||||
- `⏳` : Service en cours de démarrage
|
||||
- `✗` : Service arrêté ou en erreur
|
||||
- `ℹ` : Service en cours d'exécution (pas de healthcheck)
|
||||
|
||||
### Codes Couleur
|
||||
- **Vert** : Service prêt et fonctionnel
|
||||
- **Jaune** : Service en cours de traitement/démarrage
|
||||
- **Rouge** : Service arrêté ou en erreur
|
||||
- **Bleu** : Informations générales
|
||||
- **Cyan** : Progression spécifique
|
||||
- **Violet** : En-têtes de sections
|
||||
|
||||
## Progression des Services
|
||||
|
||||
### Bitcoin IBD (Initial Block Download)
|
||||
- **Affichage** : `Bitcoin IBD: 34729/136548 blocks (101819 remaining) - 25%`
|
||||
- **Barre de progression** : `[████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 25%`
|
||||
- **Condition de santé** : `blocks == headers && blocks > 0`
|
||||
|
||||
### BlindBit Oracle
|
||||
- **États** : Starting → Scanning → Ready
|
||||
- **Codes HTTP** : 000 (non prêt), 404 (scan), 200 (prêt)
|
||||
- **Messages** : État du scan et réponse du service
|
||||
|
||||
### SDK Relay
|
||||
- **Dépendance** : Bitcoin synchronisé
|
||||
- **États** : IBD → WebSocket Ready
|
||||
- **Messages** : Progression du scan et état WebSocket
|
||||
|
||||
## Intégration avec Docker Compose
|
||||
|
||||
### Variables d'Environnement
|
||||
Le système utilise les variables du fichier `.env.master` :
|
||||
- `SDK_RELAY_*` : Configuration du service relay
|
||||
- `SIGNER_*` : Configuration du service signer
|
||||
- `VITE_*` : Configuration des applications frontend
|
||||
|
||||
### Commandes Docker Compose
|
||||
```bash
|
||||
# Démarrage avec variables centralisées
|
||||
docker compose --env-file .env.master up -d
|
||||
|
||||
# Redémarrage d'un service
|
||||
docker compose --env-file .env.master restart bitcoin
|
||||
|
||||
# Arrêt de tous les services
|
||||
docker compose --env-file .env.master down
|
||||
```
|
||||
|
||||
## Surveillance et Maintenance
|
||||
|
||||
### Vérification de l'État
|
||||
```bash
|
||||
# Statut de tous les services
|
||||
docker compose --env-file .env.master ps
|
||||
|
||||
# Logs d'un service spécifique
|
||||
docker logs bitcoin-signet --tail 50
|
||||
|
||||
# Healthcheck d'un service
|
||||
docker inspect --format='{{.State.Health.Status}}' bitcoin-signet
|
||||
```
|
||||
|
||||
### Dépannage
|
||||
1. **Service en état "unhealthy"** : Vérifier les logs avec `docker logs <service>`
|
||||
2. **Progression bloquée** : Vérifier la connectivité réseau et les dépendances
|
||||
3. **Services en attente** : Vérifier que les services de dépendance sont "healthy"
|
||||
|
||||
## Exemples d'Utilisation
|
||||
|
||||
### Surveillance Continue
|
||||
```bash
|
||||
# Démarrer la surveillance en temps réel
|
||||
./scripts/watch-progress.sh
|
||||
|
||||
# Dans un autre terminal, afficher les logs
|
||||
./scripts/logs-with-progress.sh bitcoin -p -f
|
||||
```
|
||||
|
||||
### Démarrage Complet
|
||||
```bash
|
||||
# Arrêter tous les services
|
||||
docker compose --env-file .env.master down
|
||||
|
||||
# ✅ Démarrage services applicatifs avec phases
|
||||
./scripts/start-with-progress.sh
|
||||
|
||||
# ✅ Démarrage monitoring indépendant
|
||||
./scripts/start-monitoring.sh
|
||||
|
||||
# ❌ JAMAIS utiliser directement
|
||||
# docker compose --env-file .env.master up -d
|
||||
```
|
||||
|
||||
### Vérification Rapide
|
||||
```bash
|
||||
# Aperçu rapide de tous les services
|
||||
./scripts/monitor-progress.sh
|
||||
|
||||
# Logs récents avec progression
|
||||
./scripts/logs-with-progress.sh sdk_relay -p -n 20
|
||||
```
|
||||
|
||||
## Personnalisation
|
||||
|
||||
### Ajout de Nouveaux Services
|
||||
1. Ajouter le healthcheck dans `docker-compose.yml`
|
||||
2. Mettre à jour `monitor-progress.sh` avec le nouveau service
|
||||
3. Ajouter la logique de progression dans `logs-with-progress.sh`
|
||||
|
||||
### Modification des Intervalles
|
||||
- **Healthchecks** : Modifier `interval` dans `docker-compose.yml`
|
||||
- **Surveillance** : Modifier le `sleep` dans `watch-progress.sh`
|
||||
- **Logs** : Utiliser l'option `-n` pour le nombre de lignes
|
||||
|
||||
## Bonnes Pratiques
|
||||
|
||||
1. **Utiliser les scripts** plutôt que les commandes Docker directes
|
||||
2. **Surveiller la progression** pendant les déploiements
|
||||
3. **Vérifier les dépendances** avant de démarrer les services
|
||||
4. **Consulter les logs** en cas de problème
|
||||
5. **Utiliser les variables centralisées** du fichier `.env.master`
|
||||
|
||||
## Dépannage Courant
|
||||
|
||||
### Bitcoin IBD Lent
|
||||
- Vérifier la connectivité réseau
|
||||
- Vérifier l'espace disque disponible
|
||||
- Consulter les logs pour les erreurs de connexion
|
||||
|
||||
### Services en Attente
|
||||
- Vérifier que les services de dépendance sont "healthy"
|
||||
- Consulter les logs des services de dépendance
|
||||
- Vérifier la configuration des dépendances dans `docker-compose.yml`
|
||||
|
||||
### Healthchecks Échoués
|
||||
- Vérifier que les ports sont accessibles
|
||||
- Consulter les logs du service
|
||||
- Vérifier la configuration du healthcheck
|
||||
|
||||
Ce système de monitoring et de progression permet une surveillance complète et en temps réel du déploiement LeCoffre Node, facilitant le diagnostic et la maintenance des services.
|
@ -1,261 +0,0 @@
|
||||
# Guide de Référence Rapide - Monitoring LeCoffre Node
|
||||
|
||||
## Commandes Essentielles
|
||||
|
||||
### Surveillance Générale
|
||||
```bash
|
||||
# Aperçu complet de tous les services
|
||||
./scripts/monitor-progress.sh
|
||||
|
||||
# Surveillance en temps réel
|
||||
./scripts/watch-progress.sh
|
||||
|
||||
# Logs avec progression
|
||||
./scripts/logs-with-progress.sh <service> -p
|
||||
```
|
||||
|
||||
### Démarrage et Arrêt
|
||||
```bash
|
||||
# ✅ Démarrage complet avec phases (OBLIGATOIRE)
|
||||
./scripts/start-with-progress.sh
|
||||
|
||||
# ✅ Démarrage monitoring indépendant (OBLIGATOIRE)
|
||||
./scripts/start-monitoring.sh
|
||||
|
||||
# ❌ JAMAIS utiliser directement
|
||||
# docker compose --env-file .env.master up -d
|
||||
# docker compose --env-file .env.master down
|
||||
|
||||
# Arrêt de tous les services
|
||||
docker compose --env-file .env.master down
|
||||
|
||||
# Redémarrage d'un service
|
||||
docker compose --env-file .env.master restart <service>
|
||||
```
|
||||
|
||||
### Vérification de l'État
|
||||
```bash
|
||||
# Statut de tous les services
|
||||
docker compose --env-file .env.master ps
|
||||
|
||||
# Logs d'un service
|
||||
docker logs <service> --tail 50
|
||||
|
||||
# Healthcheck d'un service
|
||||
docker inspect --format='{{.State.Health.Status}}' <service>
|
||||
```
|
||||
|
||||
## Services et Leurs Noms
|
||||
|
||||
| Service | Nom du Conteneur | Port | Description |
|
||||
|---------|------------------|------|-------------|
|
||||
| Tor | tor-proxy | 9050 | Proxy SOCKS |
|
||||
| Bitcoin | bitcoin-signet | 8332 | Nœud Bitcoin Signet |
|
||||
| BlindBit | blindbit-oracle | 8000 | Oracle BlindBit |
|
||||
| SDK Storage | sdk_storage | 8081 | Stockage SDK |
|
||||
| SDK Relay | sdk_relay | 8090-8091 | Relay WebSocket |
|
||||
| SDK Signer | sdk_signer | 3001 | Service de signature |
|
||||
| LeCoffre Backend | lecoffre-back | 8080 | API Backend |
|
||||
| LeCoffre Frontend | lecoffre-front | 3000 | Interface utilisateur |
|
||||
| IHM Client | ihm_client | 3003 | Client IHM |
|
||||
| Grafana | grafana | 3005 | Dashboard |
|
||||
| Loki | loki | 3100 | Agrégation de logs (config: 0.0.0.0) |
|
||||
| Promtail | promtail | 9080 | Collection de logs |
|
||||
| Status API | status-api | 3006 | API de statut |
|
||||
|
||||
## Codes de Statut
|
||||
|
||||
### Symboles
|
||||
- `✓` : Service prêt et fonctionnel
|
||||
- `⚠` : Service en cours de traitement
|
||||
- `⏳` : Service en cours de démarrage
|
||||
- `✗` : Service arrêté ou en erreur
|
||||
- `ℹ` : Service en cours d'exécution
|
||||
|
||||
### États de Healthcheck
|
||||
- `healthy` : Service prêt
|
||||
- `unhealthy` : Service en cours de traitement
|
||||
- `starting` : Service en cours de démarrage
|
||||
- `no-healthcheck` : Pas de healthcheck défini
|
||||
|
||||
## Progression des Services
|
||||
|
||||
### Bitcoin IBD
|
||||
- **Message** : `Bitcoin IBD: 34729/136548 blocks (101819 remaining) - 25%`
|
||||
- **Condition de santé** : `blocks == headers && blocks > 0`
|
||||
- **Temps estimé** : Variable selon la vitesse de téléchargement
|
||||
|
||||
### BlindBit Oracle
|
||||
- **États** : Starting → Scanning → Ready
|
||||
- **Codes HTTP** : 000 (non prêt), 404 (scan), 200 (prêt)
|
||||
- **Message de santé** : `BlindBit ready: Oracle service responding`
|
||||
|
||||
### SDK Relay
|
||||
- **Dépendance** : Bitcoin synchronisé
|
||||
- **États** : IBD → WebSocket Ready
|
||||
- **Message de santé** : `SDK Relay ready: WebSocket server responding`
|
||||
|
||||
## Architecture de Déploiement par Phases
|
||||
|
||||
### **Phase 1: Services de Base (Parallèle)**
|
||||
1. **Tor** → 2. **SDK Storage** → 3. **SDK Signer** → 4. **Status API**
|
||||
|
||||
### **Phase 2: Services Blockchain (Séquentiel)**
|
||||
5. **Bitcoin** → 6. **BlindBit** → 7. **SDK Relay**
|
||||
|
||||
### **Phase 3: Services Applicatifs (Séquentiel)**
|
||||
8. **LeCoffre Backend** → 9. **LeCoffre Frontend** → 10. **IHM Client**
|
||||
|
||||
### **Phase 4: Services de Monitoring (Séquentiel, Indépendant)**
|
||||
11. **Loki** → 12. **Promtail** → 13. **Grafana**
|
||||
|
||||
### **Phase 5: Services Utilitaires**
|
||||
14. **Watchtower**
|
||||
|
||||
### **Scripts par Phase**
|
||||
- **Phases 1, 2, 3, 5** : `./scripts/start-with-progress.sh`
|
||||
- **Phase 4** : `./scripts/start-monitoring.sh`
|
||||
|
||||
## URLs de Test
|
||||
|
||||
### Services Locaux
|
||||
- Bitcoin RPC : `http://localhost:8332`
|
||||
- BlindBit : `http://localhost:8000`
|
||||
- SDK Storage : `http://localhost:8081`
|
||||
- SDK Relay : `http://localhost:8091`
|
||||
- SDK Signer : `http://localhost:3001`
|
||||
- IHM Client : `http://localhost:3003`
|
||||
- Grafana : `http://localhost:3005`
|
||||
- Loki : `http://localhost:3100`
|
||||
- Status API : `http://localhost:3006`
|
||||
|
||||
### Services Externes
|
||||
- Page de statut : `https://dev4.4nkweb.com/status/`
|
||||
- API de statut : `https://dev4.4nkweb.com/status/api`
|
||||
- Grafana : `https://dev4.4nkweb.com/grafana/`
|
||||
- IHM Client : `https://dev4.4nkweb.com/`
|
||||
- Application LeCoffre : `https://dev4.4nkweb.com/lecoffre/`
|
||||
- WebSocket Relay : `https://dev4.4nkweb.com/ws/`
|
||||
|
||||
## Dépannage Rapide
|
||||
|
||||
### Service en État "unhealthy"
|
||||
```bash
|
||||
# Vérifier les logs
|
||||
docker logs <service> --tail 50
|
||||
|
||||
# Vérifier le healthcheck
|
||||
docker inspect --format='{{.State.Health.Status}}' <service>
|
||||
```
|
||||
|
||||
### Progression Bitcoin Bloquée
|
||||
```bash
|
||||
# Vérifier la connectivité
|
||||
docker exec bitcoin-signet bitcoin-cli -conf=/etc/bitcoin/bitcoin.conf getblockchaininfo
|
||||
|
||||
# Vérifier les logs
|
||||
docker logs bitcoin-signet --tail 20
|
||||
```
|
||||
|
||||
### Services en Attente
|
||||
```bash
|
||||
# Vérifier les dépendances
|
||||
docker compose --env-file .env.master ps
|
||||
|
||||
# Vérifier les logs des services de dépendance
|
||||
docker logs <service-dependance> --tail 20
|
||||
```
|
||||
|
||||
### Erreurs de Connexion
|
||||
```bash
|
||||
# Vérifier la connectivité réseau
|
||||
docker network ls
|
||||
docker network inspect lecoffre_node_btcnet
|
||||
|
||||
# Vérifier les ports
|
||||
netstat -tlnp | grep <port>
|
||||
```
|
||||
|
||||
## Variables d'Environnement Importantes
|
||||
|
||||
### Fichier .env.master
|
||||
- `SDK_RELAY_*` : Configuration du service relay
|
||||
- `SIGNER_*` : Configuration du service signer
|
||||
- `VITE_*` : Configuration des applications frontend
|
||||
- `IDNOT_*` : Configuration des APIs notaires
|
||||
- `STRIPE_*` : Configuration des paiements
|
||||
- `MAILCHIMP_*` : Configuration des emails
|
||||
- `OVH_*` : Configuration des SMS
|
||||
|
||||
### Utilisation
|
||||
```bash
|
||||
# Toujours utiliser le fichier .env.master
|
||||
docker compose --env-file .env.master up -d
|
||||
```
|
||||
|
||||
## Scripts de Monitoring
|
||||
|
||||
### monitor-progress.sh
|
||||
- Aperçu complet de tous les services
|
||||
- Progression Bitcoin avec pourcentage
|
||||
- Statut des services avec codes couleur
|
||||
- Progression BlindBit et SDK Relay
|
||||
|
||||
### watch-progress.sh
|
||||
- Surveillance en temps réel
|
||||
- Mise à jour automatique toutes les 10 secondes
|
||||
- Barre de progression Bitcoin
|
||||
- Services en attente de dépendances
|
||||
|
||||
### logs-with-progress.sh
|
||||
- Logs avec informations de progression
|
||||
- Support de tous les services
|
||||
- Options de personnalisation
|
||||
- Suivi en temps réel
|
||||
|
||||
### start-with-progress.sh
|
||||
- Démarrage ordonné des services
|
||||
- Attente de la santé de chaque service
|
||||
- Affichage de la progression
|
||||
- Test de l'accès externe
|
||||
|
||||
## Bonnes Pratiques
|
||||
|
||||
1. **Utiliser les scripts** plutôt que les commandes Docker directes
|
||||
2. **Surveiller la progression** pendant les déploiements
|
||||
3. **Vérifier les dépendances** avant de démarrer les services
|
||||
4. **Consulter les logs** en cas de problème
|
||||
5. **Utiliser les variables centralisées** du fichier `.env.master`
|
||||
6. **Tester l'accès externe** après le déploiement
|
||||
7. **Vérifier la santé des services** régulièrement
|
||||
|
||||
## Exemples d'Utilisation
|
||||
|
||||
### Démarrage Complet
|
||||
```bash
|
||||
# Arrêter tous les services
|
||||
docker compose --env-file .env.master down
|
||||
|
||||
# Démarrer avec suivi de progression
|
||||
./scripts/start-with-progress.sh
|
||||
```
|
||||
|
||||
### Surveillance Continue
|
||||
```bash
|
||||
# Démarrer la surveillance en temps réel
|
||||
./scripts/watch-progress.sh
|
||||
|
||||
# Dans un autre terminal, afficher les logs
|
||||
./scripts/logs-with-progress.sh bitcoin -p -f
|
||||
```
|
||||
|
||||
### Vérification Rapide
|
||||
```bash
|
||||
# Aperçu rapide de tous les services
|
||||
./scripts/monitor-progress.sh
|
||||
|
||||
# Logs récents avec progression
|
||||
./scripts/logs-with-progress.sh sdk_relay -p -n 20
|
||||
```
|
||||
|
||||
Ce guide de référence rapide permet aux agents IA d'utiliser efficacement le système de monitoring et de progression du déploiement LeCoffre Node.
|
@ -1,304 +0,0 @@
|
||||
# Scripts Avancés LeCoffre Node
|
||||
|
||||
## 🚀 Vue d'ensemble
|
||||
|
||||
LeCoffre Node dispose maintenant d'un ensemble complet de scripts pour la gestion, le monitoring et la maintenance de l'architecture complète.
|
||||
|
||||
## 📋 Scripts Principaux
|
||||
|
||||
### `start.sh` - Démarrage Séquentiel Intelligent
|
||||
|
||||
**Fonctionnalités** :
|
||||
- Démarrage des services dans l'ordre logique optimal
|
||||
- Affichage de la progression détaillée en temps réel
|
||||
- Compatibilité complète avec Bitcoin Signet
|
||||
- Gestion des timeouts adaptatifs
|
||||
- Monitoring des healthchecks intégrés
|
||||
|
||||
**Utilisation** :
|
||||
```bash
|
||||
./scripts/start.sh
|
||||
```
|
||||
|
||||
**Progression affichée** :
|
||||
- Tor Bootstrap (0-100%)
|
||||
- Bitcoin IBD (blocs synchronisés, pourcentage de vérification)
|
||||
- BlindBit Oracle (scan des blocs, tweaks détectés)
|
||||
- SDK Relay (synchronisation, connexions WebSocket)
|
||||
- SDK Signer (état de connexion, clés disponibles)
|
||||
- URLs publiques (accessibilité HTTPS/WebSocket)
|
||||
|
||||
### `validate-deployment.sh` - Validation Complète
|
||||
|
||||
**Fonctionnalités** :
|
||||
- Vérification des volumes Docker (persistance des données)
|
||||
- Validation des services et healthchecks
|
||||
- Tests des URLs publiques et WebSockets
|
||||
- Vérification des scripts et permissions
|
||||
- Rapport détaillé avec compteurs
|
||||
|
||||
**Utilisation** :
|
||||
```bash
|
||||
./scripts/validate-deployment.sh
|
||||
```
|
||||
|
||||
**Vérifications effectuées** :
|
||||
- ✅ Volumes Docker (Bitcoin, BlindBit, SDK Storage, SDK Signer, Grafana, Loki)
|
||||
- ✅ Services (Tor, Bitcoin, BlindBit, SDK Relay, SDK Signer, LeCoffre, IHM, Grafana)
|
||||
- ✅ URLs publiques (Status, Grafana, Main Site, LeCoffre App)
|
||||
- ✅ WebSockets (Bootstrap Relay, Signer Service)
|
||||
- ✅ Scripts (disponibilité et permissions)
|
||||
|
||||
### `maintenance.sh` - Menu Interactif
|
||||
|
||||
**Fonctionnalités** :
|
||||
- Menu interactif pour toutes les tâches de maintenance
|
||||
- Validation complète du déploiement
|
||||
- Sauvegarde et restauration des données
|
||||
- Nettoyage des logs et images Docker
|
||||
- Vérification de l'espace disque
|
||||
- Redémarrage et mise à jour des services
|
||||
|
||||
**Utilisation** :
|
||||
```bash
|
||||
./scripts/maintenance.sh
|
||||
```
|
||||
|
||||
**Options disponibles** :
|
||||
1. Validation complète du déploiement
|
||||
2. Sauvegarde des données
|
||||
3. Nettoyage des logs anciens
|
||||
4. Nettoyage des images Docker inutilisées
|
||||
5. Vérification de l'espace disque
|
||||
6. Redémarrage des services
|
||||
7. Mise à jour des images
|
||||
8. Collecte des logs
|
||||
9. Vérification de la santé des services
|
||||
|
||||
## 🛡️ Protection des Données
|
||||
|
||||
### `backup-data.sh` - Sauvegarde Automatique
|
||||
|
||||
**Fonctionnalités** :
|
||||
- Sauvegarde de tous les volumes Docker critiques
|
||||
- Création d'archives compressées avec timestamps
|
||||
- Gestion des permissions et erreurs
|
||||
- Support des volumes Bitcoin, BlindBit, SDK Storage, SDK Signer
|
||||
|
||||
**Utilisation** :
|
||||
```bash
|
||||
./scripts/backup-data.sh
|
||||
```
|
||||
|
||||
**Volumes sauvegardés** :
|
||||
- `4nk_node_bitcoin_data` : Données Bitcoin Signet
|
||||
- `4nk_node_blindbit_data` : Données BlindBit Oracle
|
||||
- `4nk_node_sdk_data` : Données SDK Relay
|
||||
- `4nk_node_sdk_signer_data` : Données SDK Signer
|
||||
- `4nk_node_sdk_storage_data` : Données SDK Storage
|
||||
- `4nk_node_grafana_data` : Données Grafana
|
||||
- `4nk_node_loki_data` : Données Loki
|
||||
|
||||
### `restore-data.sh` - Restauration
|
||||
|
||||
**Fonctionnalités** :
|
||||
- Restauration depuis une sauvegarde spécifiée
|
||||
- Arrêt sécurisé des services avant restauration
|
||||
- Remplacement complet des données existantes
|
||||
- Gestion des permissions et erreurs
|
||||
|
||||
**Utilisation** :
|
||||
```bash
|
||||
./scripts/restore-data.sh <backup_file.tar.gz>
|
||||
```
|
||||
|
||||
### `update-images.sh` - Mise à Jour Sécurisée
|
||||
|
||||
**Fonctionnalités** :
|
||||
- Sauvegarde automatique avant mise à jour
|
||||
- Téléchargement des nouvelles images Docker
|
||||
- Redémarrage des services avec les nouvelles images
|
||||
- Protection complète des données
|
||||
|
||||
**Utilisation** :
|
||||
```bash
|
||||
./scripts/update-images.sh
|
||||
```
|
||||
|
||||
## 📊 Monitoring et Logs
|
||||
|
||||
### `collect-logs.sh` - Collecte des Logs
|
||||
|
||||
**Fonctionnalités** :
|
||||
- Collecte automatique ou par service spécifique
|
||||
- Organisation par répertoires avec timestamps
|
||||
- Support de tous les services LeCoffre Node
|
||||
|
||||
**Utilisation** :
|
||||
```bash
|
||||
# Tous les services
|
||||
./scripts/collect-logs.sh
|
||||
|
||||
# Service spécifique
|
||||
./scripts/collect-logs.sh bitcoin-signet
|
||||
```
|
||||
|
||||
**Services supportés** :
|
||||
- Tor Proxy, Bitcoin Signet, BlindBit Oracle
|
||||
- SDK Relay, SDK Signer, SDK Storage
|
||||
- LeCoffre Backend, LeCoffre Frontend, IHM Client
|
||||
- Grafana, Loki, Promtail, Status API, Signet Miner
|
||||
|
||||
### `test-monitoring.sh` - Tests de Monitoring
|
||||
|
||||
**Fonctionnalités** :
|
||||
- Vérification des services Grafana, Loki, Promtail
|
||||
- Tests de connectivité et API
|
||||
- Validation des dashboards
|
||||
|
||||
### `test-dashboards.sh` - Tests des Dashboards
|
||||
|
||||
**Fonctionnalités** :
|
||||
- Vérification des dashboards Grafana
|
||||
- Tests des sources de données
|
||||
- Validation des métriques
|
||||
|
||||
## 🔧 Scripts de Configuration
|
||||
|
||||
### `sync-configs.sh` - Synchronisation
|
||||
|
||||
**Fonctionnalités** :
|
||||
- Copie des configurations vers les conteneurs
|
||||
- Mise à jour des paramètres
|
||||
- Redémarrage des services
|
||||
|
||||
### `sync-monitoring-config.sh` - Configuration Monitoring
|
||||
|
||||
**Fonctionnalités** :
|
||||
- Configuration Grafana
|
||||
- Configuration Loki/Promtail
|
||||
- Déploiement des dashboards
|
||||
|
||||
### `setup-logs.sh` - Configuration des Logs
|
||||
|
||||
**Fonctionnalités** :
|
||||
- Création des répertoires de logs
|
||||
- Configuration des permissions
|
||||
- Setup des rotations
|
||||
|
||||
## 🛠️ Scripts de Maintenance
|
||||
|
||||
### `fix_relay_funds.sh` - Correction des Fonds
|
||||
|
||||
**Fonctionnalités** :
|
||||
- Vérification des fonds du relay
|
||||
- Correction des problèmes
|
||||
- Tests de connectivité
|
||||
|
||||
### `optimize-relay-startup.sh` - Optimisation Relay
|
||||
|
||||
**Fonctionnalités** :
|
||||
- Optimisation des paramètres
|
||||
- Amélioration des performances
|
||||
- Tests de stabilité
|
||||
|
||||
### `verify_mining_fix.sh` - Vérification Minage
|
||||
|
||||
**Fonctionnalités** :
|
||||
- Tests du minage Signet
|
||||
- Vérification des blocs
|
||||
- Validation des transactions
|
||||
|
||||
## 🔒 Scripts de Sécurité
|
||||
|
||||
### `generate-ssl-certs.sh` - Certificats SSL
|
||||
|
||||
**Fonctionnalités** :
|
||||
- Création des certificats
|
||||
- Configuration HTTPS
|
||||
- Sécurisation des communications
|
||||
|
||||
### `uninstall-host-nginx.sh` - Désinstallation Nginx
|
||||
|
||||
**Fonctionnalités** :
|
||||
- Nettoyage de Nginx
|
||||
- Suppression des configurations
|
||||
- Libération des ports
|
||||
|
||||
## 📁 Structure des Volumes
|
||||
|
||||
Les données sont persistées dans les volumes Docker suivants :
|
||||
|
||||
| Volume | Service | Description |
|
||||
|--------|---------|-------------|
|
||||
| `4nk_node_bitcoin_data` | Bitcoin Signet | Blockchain, wallet, configuration |
|
||||
| `4nk_node_blindbit_data` | BlindBit Oracle | Cache des scans, tweaks détectés |
|
||||
| `4nk_node_sdk_data` | SDK Relay | Messages, transactions, cache |
|
||||
| `4nk_node_sdk_signer_data` | SDK Signer | Clés privées, signatures, profils |
|
||||
| `4nk_node_sdk_storage_data` | SDK Storage | Données temporaires, cache |
|
||||
| `4nk_node_grafana_data` | Grafana | Dashboards, configurations, utilisateurs |
|
||||
| `4nk_node_loki_data` | Loki | Logs centralisés, index |
|
||||
|
||||
## 🔄 Workflows Recommandés
|
||||
|
||||
### Déploiement Initial
|
||||
```bash
|
||||
# 1. Démarrage complet
|
||||
./scripts/start.sh
|
||||
|
||||
# 2. Validation
|
||||
./scripts/validate-deployment.sh
|
||||
|
||||
# 3. Tests de monitoring
|
||||
./scripts/test-monitoring.sh
|
||||
```
|
||||
|
||||
### Maintenance Régulière
|
||||
```bash
|
||||
# 1. Menu de maintenance
|
||||
./scripts/maintenance.sh
|
||||
|
||||
# 2. Sauvegarde manuelle si nécessaire
|
||||
./scripts/backup-data.sh
|
||||
|
||||
# 3. Collecte des logs
|
||||
./scripts/collect-logs.sh
|
||||
```
|
||||
|
||||
### Mise à Jour
|
||||
```bash
|
||||
# 1. Mise à jour sécurisée (sauvegarde automatique)
|
||||
./scripts/update-images.sh
|
||||
|
||||
# 2. Validation post-mise à jour
|
||||
./scripts/validate-deployment.sh
|
||||
```
|
||||
|
||||
### Récupération d'Urgence
|
||||
```bash
|
||||
# 1. Arrêt des services
|
||||
docker compose down
|
||||
|
||||
# 2. Restauration
|
||||
./scripts/restore-data.sh <backup_file>
|
||||
|
||||
# 3. Redémarrage
|
||||
./scripts/start.sh
|
||||
```
|
||||
|
||||
## ⚠️ Notes Importantes
|
||||
|
||||
- **Persistance des données** : Tous les scripts préservent les données importantes
|
||||
- **Sauvegardes automatiques** : Les mises à jour incluent une sauvegarde automatique
|
||||
- **Bitcoin Signet** : Tous les scripts sont compatibles avec le réseau de test
|
||||
- **Volumes Docker** : Garantissent la persistance des données entre redémarrages
|
||||
- **Monitoring intégré** : Healthchecks et progression en temps réel
|
||||
- **Sécurité** : Aucune clé privée ou secret n'est exposé dans les scripts
|
||||
|
||||
## 📝 Logs et Debugging
|
||||
|
||||
- **Logs des services** : `./logs/<service>/`
|
||||
- **Collecte des logs** : `./scripts/collect-logs.sh`
|
||||
- **Monitoring** : Grafana sur port 3005
|
||||
- **Status API** : Port 3006
|
||||
- **Validation** : `./scripts/validate-deployment.sh`
|
@ -1,14 +1,5 @@
|
||||
# TODO - Améliorations et optimisations LeCoffre
|
||||
|
||||
|
||||
### Validation des builds CI
|
||||
- [ ] Vérifier le succès des builds CI pour tous les services
|
||||
- [ ] Tester le déploiement des nouvelles images optimisées
|
||||
- [ ] Valider le fonctionnement des services avec les nouvelles images
|
||||
- [ ] Vérifier que les dashboards Grafana fonctionnent correctement
|
||||
|
||||
## 📋 Tâches à faire
|
||||
|
||||
### Monitoring et observabilité
|
||||
- [ ] Mettre en place des alertes sur la taille des images Docker
|
||||
- [ ] Créer des métriques de performance des builds CI
|
||||
|
@ -1,372 +0,0 @@
|
||||
# Guide de Dépannage - Monitoring LeCoffre Node
|
||||
|
||||
## Problèmes Courants et Solutions
|
||||
|
||||
### 1. Services en État "unhealthy"
|
||||
|
||||
#### Symptômes
|
||||
- Service affiché comme "unhealthy" dans `docker compose ps`
|
||||
- Healthcheck échoue constamment
|
||||
- Service ne répond pas aux requêtes
|
||||
|
||||
#### Diagnostic
|
||||
```bash
|
||||
# Vérifier le statut du healthcheck
|
||||
docker inspect --format='{{.State.Health.Status}}' <service>
|
||||
|
||||
# Vérifier les logs du healthcheck
|
||||
docker inspect --format='{{range .State.Health.Log}}{{.Output}}{{end}}' <service>
|
||||
|
||||
# Vérifier les logs du service
|
||||
docker logs <service> --tail 50
|
||||
```
|
||||
|
||||
#### Solutions
|
||||
1. **Vérifier la connectivité réseau**
|
||||
```bash
|
||||
# Vérifier que le service écoute sur le bon port
|
||||
docker exec <service> netstat -tlnp
|
||||
|
||||
# Vérifier la connectivité depuis l'extérieur
|
||||
curl -f http://localhost:<port>/health
|
||||
```
|
||||
|
||||
2. **Vérifier les dépendances**
|
||||
```bash
|
||||
# Vérifier que les services de dépendance sont "healthy"
|
||||
docker compose --env-file .env.master ps
|
||||
```
|
||||
|
||||
3. **Redémarrer le service**
|
||||
```bash
|
||||
docker compose --env-file .env.master restart <service>
|
||||
```
|
||||
|
||||
### 2. Progression Bitcoin Bloquée
|
||||
|
||||
#### Symptômes
|
||||
- Bitcoin IBD reste à un pourcentage fixe
|
||||
- Pas de nouveaux blocs téléchargés
|
||||
- Messages d'erreur dans les logs
|
||||
|
||||
#### Diagnostic
|
||||
```bash
|
||||
# Vérifier l'état de la blockchain
|
||||
docker exec bitcoin-signet bitcoin-cli -conf=/etc/bitcoin/bitcoin.conf getblockchaininfo
|
||||
|
||||
# Vérifier les connexions
|
||||
docker exec bitcoin-signet bitcoin-cli -conf=/etc/bitcoin/bitcoin.conf getpeerinfo
|
||||
|
||||
# Vérifier les logs
|
||||
docker logs bitcoin-signet --tail 100 | grep -E "(ERROR|error|Error|WARN|warn|Warn)"
|
||||
```
|
||||
|
||||
#### Solutions
|
||||
1. **Vérifier la connectivité réseau**
|
||||
```bash
|
||||
# Vérifier que Tor fonctionne
|
||||
docker logs tor-proxy --tail 20
|
||||
|
||||
# Vérifier la connectivité Bitcoin
|
||||
docker exec bitcoin-signet bitcoin-cli -conf=/etc/bitcoin/bitcoin.conf getnetworkinfo
|
||||
```
|
||||
|
||||
2. **Vérifier l'espace disque**
|
||||
```bash
|
||||
# Vérifier l'espace disponible
|
||||
df -h
|
||||
|
||||
# Vérifier la taille du volume Bitcoin
|
||||
docker volume inspect 4nk_node_bitcoin_data
|
||||
```
|
||||
|
||||
3. **Redémarrer Bitcoin**
|
||||
```bash
|
||||
docker compose --env-file .env.master restart bitcoin
|
||||
```
|
||||
|
||||
### 3. Services en Attente de Dépendances
|
||||
|
||||
#### Symptômes
|
||||
- Services affichés comme "Stopped"
|
||||
- Messages "dependency failed to start"
|
||||
- Services ne démarrent pas
|
||||
|
||||
#### Diagnostic
|
||||
```bash
|
||||
# Vérifier les dépendances dans docker-compose.yml
|
||||
grep -A 5 -B 5 "depends_on" docker-compose.yml
|
||||
|
||||
# Vérifier le statut des services de dépendance
|
||||
docker compose --env-file .env.master ps
|
||||
```
|
||||
|
||||
#### Solutions
|
||||
1. **Démarrer les services dans l'ordre correct**
|
||||
```bash
|
||||
# Utiliser le script de démarrage ordonné
|
||||
./scripts/start-with-progress.sh
|
||||
```
|
||||
|
||||
2. **Vérifier les conditions de dépendance**
|
||||
```bash
|
||||
# Vérifier que les services de dépendance sont "healthy"
|
||||
docker inspect --format='{{.State.Health.Status}}' <service-dependance>
|
||||
```
|
||||
|
||||
3. **Modifier temporairement les dépendances**
|
||||
```bash
|
||||
# Changer condition: service_healthy en condition: service_started
|
||||
# (Attention : à remettre en place après résolution)
|
||||
```
|
||||
|
||||
### 4. Erreurs de Connexion WebSocket
|
||||
|
||||
#### Symptômes
|
||||
- SDK Relay ne répond pas sur le port 8091
|
||||
- Erreurs 502 Bad Gateway pour les WebSockets
|
||||
- Messages "TLS support not compiled in"
|
||||
|
||||
#### Diagnostic
|
||||
```bash
|
||||
# Vérifier que le service écoute sur le bon port
|
||||
docker exec sdk_relay netstat -tlnp
|
||||
|
||||
# Vérifier les logs du service
|
||||
docker logs sdk_relay --tail 50
|
||||
|
||||
# Tester la connectivité locale
|
||||
curl -f http://localhost:8091/
|
||||
```
|
||||
|
||||
#### Solutions
|
||||
1. **Vérifier la configuration Nginx**
|
||||
```bash
|
||||
# Vérifier la configuration WebSocket
|
||||
sudo grep -A 10 -B 5 "ws/" /etc/nginx/sites-enabled/dev4.4nkweb.com-https.conf
|
||||
|
||||
# Tester la configuration Nginx
|
||||
sudo nginx -t
|
||||
```
|
||||
|
||||
2. **Vérifier les variables d'environnement**
|
||||
```bash
|
||||
# Vérifier la configuration du SDK Relay
|
||||
docker exec sdk_relay env | grep SDK_RELAY
|
||||
```
|
||||
|
||||
3. **Redémarrer le service**
|
||||
```bash
|
||||
docker compose --env-file .env.master restart sdk_relay
|
||||
```
|
||||
|
||||
### 5. Problèmes de Permissions
|
||||
|
||||
#### Symptômes
|
||||
- Erreurs "Permission denied"
|
||||
- Services ne peuvent pas écrire dans les volumes
|
||||
- Erreurs de montage de volumes
|
||||
|
||||
#### Diagnostic
|
||||
```bash
|
||||
# Vérifier les permissions des volumes
|
||||
docker volume inspect <volume-name>
|
||||
|
||||
# Vérifier les permissions des dossiers locaux
|
||||
ls -la logs/
|
||||
ls -la conf/
|
||||
```
|
||||
|
||||
#### Solutions
|
||||
1. **Corriger les permissions des volumes**
|
||||
```bash
|
||||
# Corriger les permissions des logs
|
||||
sudo chown -R 1000:1000 logs/
|
||||
sudo chmod -R 755 logs/
|
||||
```
|
||||
|
||||
2. **Vérifier la configuration des volumes**
|
||||
```bash
|
||||
# Vérifier la configuration dans docker-compose.yml
|
||||
grep -A 5 -B 5 "volumes:" docker-compose.yml
|
||||
```
|
||||
|
||||
3. **Redémarrer les services**
|
||||
```bash
|
||||
docker compose --env-file .env.master down
|
||||
docker compose --env-file .env.master up -d
|
||||
```
|
||||
|
||||
### 6. Problèmes de Configuration
|
||||
|
||||
#### Symptômes
|
||||
- Services ne démarrent pas
|
||||
- Erreurs de configuration dans les logs
|
||||
- Variables d'environnement manquantes
|
||||
|
||||
#### Diagnostic
|
||||
```bash
|
||||
# Vérifier la configuration Docker Compose
|
||||
docker compose --env-file .env.master config
|
||||
|
||||
# Vérifier les variables d'environnement
|
||||
docker exec <service> env | grep <VARIABLE>
|
||||
|
||||
# Vérifier les fichiers de configuration
|
||||
cat .env.master | grep <VARIABLE>
|
||||
```
|
||||
|
||||
#### Solutions
|
||||
1. **Vérifier le fichier .env.master**
|
||||
```bash
|
||||
# Vérifier que toutes les variables sont définies
|
||||
docker compose --env-file .env.master config --services
|
||||
```
|
||||
|
||||
2. **Corriger les variables manquantes**
|
||||
```bash
|
||||
# Ajouter les variables manquantes dans .env.master
|
||||
echo "VARIABLE=valeur" >> .env.master
|
||||
```
|
||||
|
||||
3. **Redémarrer les services**
|
||||
```bash
|
||||
docker compose --env-file .env.master down
|
||||
docker compose --env-file .env.master up -d
|
||||
```
|
||||
|
||||
## Outils de Diagnostic
|
||||
|
||||
### Scripts de Diagnostic
|
||||
```bash
|
||||
# Diagnostic complet
|
||||
./scripts/monitor-progress.sh
|
||||
|
||||
# Logs avec progression
|
||||
./scripts/logs-with-progress.sh <service> -p -n 100
|
||||
|
||||
# Surveillance en temps réel
|
||||
./scripts/watch-progress.sh
|
||||
```
|
||||
|
||||
### Commandes Docker Utiles
|
||||
```bash
|
||||
# Informations détaillées sur un service
|
||||
docker inspect <service>
|
||||
|
||||
# Logs en temps réel
|
||||
docker logs -f <service>
|
||||
|
||||
# Exécuter une commande dans un conteneur
|
||||
docker exec -it <service> /bin/bash
|
||||
|
||||
# Vérifier l'utilisation des ressources
|
||||
docker stats <service>
|
||||
```
|
||||
|
||||
### Commandes Système
|
||||
```bash
|
||||
# Vérifier l'espace disque
|
||||
df -h
|
||||
|
||||
# Vérifier la mémoire
|
||||
free -h
|
||||
|
||||
# Vérifier les processus
|
||||
ps aux | grep docker
|
||||
|
||||
# Vérifier les ports
|
||||
netstat -tlnp | grep <port>
|
||||
```
|
||||
|
||||
## Procédures de Récupération
|
||||
|
||||
### Récupération Complète
|
||||
```bash
|
||||
# Arrêter tous les services
|
||||
docker compose --env-file .env.master down
|
||||
|
||||
# Nettoyer le système Docker
|
||||
docker system prune -af --volumes
|
||||
|
||||
# Redémarrer avec le script de progression
|
||||
./scripts/start-with-progress.sh
|
||||
```
|
||||
|
||||
### Récupération d'un Service
|
||||
```bash
|
||||
# Arrêter le service
|
||||
docker compose --env-file .env.master stop <service>
|
||||
|
||||
# Supprimer le conteneur
|
||||
docker compose --env-file .env.master rm <service>
|
||||
|
||||
# Redémarrer le service
|
||||
docker compose --env-file .env.master up -d <service>
|
||||
```
|
||||
|
||||
### Récupération des Volumes
|
||||
```bash
|
||||
# Arrêter tous les services
|
||||
docker compose --env-file .env.master down
|
||||
|
||||
# Supprimer les volumes
|
||||
docker volume rm <volume-name>
|
||||
|
||||
# Redémarrer les services
|
||||
docker compose --env-file .env.master up -d
|
||||
```
|
||||
|
||||
## Logs et Monitoring
|
||||
|
||||
### Logs Importants
|
||||
```bash
|
||||
# Logs Bitcoin
|
||||
docker logs bitcoin-signet --tail 100
|
||||
|
||||
# Logs SDK Relay
|
||||
docker logs sdk_relay --tail 100
|
||||
|
||||
# Logs BlindBit
|
||||
docker logs blindbit-oracle --tail 100
|
||||
|
||||
# Logs Nginx
|
||||
sudo tail -f /var/log/nginx/error.log
|
||||
```
|
||||
|
||||
### Monitoring des Ressources
|
||||
```bash
|
||||
# Utilisation des ressources
|
||||
docker stats
|
||||
|
||||
# Espace disque
|
||||
df -h
|
||||
|
||||
# Mémoire
|
||||
free -h
|
||||
|
||||
# CPU
|
||||
top
|
||||
```
|
||||
|
||||
## Prévention des Problèmes
|
||||
|
||||
### Vérifications Régulières
|
||||
1. **Vérifier l'espace disque** : `df -h`
|
||||
2. **Vérifier la mémoire** : `free -h`
|
||||
3. **Vérifier les logs** : `./scripts/monitor-progress.sh`
|
||||
4. **Vérifier la connectivité** : Tester les URLs externes
|
||||
|
||||
### Maintenance Préventive
|
||||
1. **Nettoyer les logs** : `docker system prune -f`
|
||||
2. **Vérifier les mises à jour** : `docker images`
|
||||
3. **Sauvegarder les configurations** : Copier `.env.master`
|
||||
4. **Tester les sauvegardes** : Vérifier les volumes
|
||||
|
||||
### Surveillance Continue
|
||||
1. **Utiliser les scripts de monitoring** : `./scripts/watch-progress.sh`
|
||||
2. **Configurer des alertes** : Surveiller les logs d'erreur
|
||||
3. **Vérifier les performances** : `docker stats`
|
||||
4. **Tester la connectivité** : Vérifier les URLs externes
|
||||
|
||||
Ce guide de dépannage permet aux agents IA de diagnostiquer et résoudre rapidement les problèmes courants du système de monitoring LeCoffre Node.
|
Loading…
x
Reference in New Issue
Block a user