lecoffre_node/docs/MONITORING.md

7.8 KiB

📊 Monitoring LeCoffre Node

Vue d'ensemble

Le système de monitoring LeCoffre Node utilise Grafana, Loki et Promtail pour centraliser, analyser et visualiser les logs de tous les services.

🏗️ Architecture du Monitoring

Services → Logs Centralisés → Promtail → Loki → Grafana
    ↓           ↓              ↓         ↓        ↓
  Docker    logs/          Collecte   Stockage  Dashboard

Composants

Composant Port Description
Grafana 3000 Interface de visualisation et dashboards
Loki 3100 Base de données de logs
Promtail - Agent de collecte des logs
Nginx 80 Proxy pour accès externe

🚀 Déploiement

Démarrage Rapide

# 1. Synchroniser la configuration
./scripts/sync-monitoring-config.sh

# 2. Démarrer le monitoring
./scripts/deploy-grafana.sh start

# 3. Tester la connectivité
./scripts/test-monitoring.sh

Commandes de Gestion

# Démarrer
./scripts/deploy-grafana.sh start

# Arrêter
./scripts/deploy-grafana.sh stop

# Redémarrer
./scripts/deploy-grafana.sh restart

# Vérifier le statut
./scripts/deploy-grafana.sh status

# Voir les logs
./scripts/deploy-grafana.sh logs grafana
./scripts/deploy-grafana.sh logs loki
./scripts/deploy-grafana.sh logs promtail

🔗 Accès

URLs Principales

Service URL Description
Grafana https://dev4.4nkweb.com/grafana/ Interface principale
Loki API https://dev4.4nkweb.com/loki/ API de logs
Grafana Local http://localhost:3000 Accès local

Identifiants

  • Utilisateur : admin
  • Mot de passe : admin123

📊 Dashboards Disponibles

1. Vue d'ensemble LeCoffre

  • ID : lecoffre-overview
  • Description : Dashboard principal avec vue d'ensemble de tous les services
  • Métriques : Erreurs par service, volume de logs, logs d'erreur en temps réel

2. Bitcoin & Miner

  • ID : bitcoin-miner
  • Description : Monitoring spécialisé pour Bitcoin et le mineur
  • Métriques : Nouveaux blocs, blocs minés, erreurs blockchain

3. Services Applications

  • ID : services-overview
  • Description : Monitoring des services applicatifs
  • Métriques : Volume de logs par service, erreurs applications

📝 Collecte des Logs

Structure des Logs

logs/
├── bitcoin/          # Logs Bitcoin Signet
├── blindbit/         # Logs Oracle Blindbit
├── sdk_relay/        # Logs Relay WebSocket
├── sdk_signer/       # Logs Service de signature
├── sdk_storage/      # Logs Stockage temporaire
├── lecoffre-back/    # Logs Backend API
├── lecoffre-front/   # Logs Frontend
├── ihm_client/       # Logs Interface de gestion
├── tor/              # Logs Proxy Tor
├── miner/            # Logs Mineur Bitcoin
└── nginx/            # Logs Proxy Nginx

Scripts de Gestion

# Collecter les logs de tous les services
./scripts/collect-logs.sh

# Collecter les logs d'un service spécifique
./scripts/collect-logs.sh bitcoin-signet
./scripts/collect-logs.sh sdk_relay

# Configurer la centralisation des logs
./scripts/setup-logs.sh

🔧 Configuration

Fichiers de Configuration

Fichier Description
conf/grafana/grafana.ini Configuration Grafana
conf/grafana/provisioning/datasources/loki.yml Source de données Loki
conf/grafana/provisioning/dashboards/dashboards.yml Configuration des dashboards
conf/promtail/promtail.yml Configuration Promtail
conf/nginx/grafana.conf Configuration Nginx pour Grafana
conf/monitoring.conf Configuration centralisée

Variables d'Environnement

# Mot de passe admin Grafana
GRAFANA_ADMIN_PASSWORD=admin123

# Ports des services
GRAFANA_PORT=3000
LOKI_PORT=3100

🔍 Requêtes Logs Utiles

Recherche d'Erreurs

# Erreurs de tous les services
{job=~".*"} |= "error"

# Erreurs Bitcoin spécifiques
{job="bitcoin"} |= "error"

# Erreurs des services applicatifs
{job=~"lecoffre-back|lecoffre-front|ihm_client"} |= "error"

Métriques de Performance

# Volume de logs par service
sum by (service) (count_over_time({job=~".*"} [5m]))

# Erreurs par minute
sum by (service) (rate({job=~".*"} |= "error" [1m]))

Monitoring Bitcoin

# Nouveaux blocs
{job="bitcoin"} |= "block"

# Transactions
{job="bitcoin"} |= "tx"

# Blocs minés
{job="miner"} |= "mined"

🚨 Alertes

Configuration des Alertes

Les alertes sont configurées dans Grafana pour :

  • Erreurs critiques : > 10 erreurs en 5 minutes
  • Services arrêtés : Service non accessible
  • Problèmes Bitcoin : Blocs non minés
  • Problèmes de connectivité : Connexions WebSocket échouées

Canaux de Notification

  • Email : Configuration dans Grafana
  • Webhook : Intégration avec systèmes externes
  • Slack : Notifications en temps réel

🛠️ Maintenance

Rotation des Logs

# Configuration automatique avec logrotate
conf/logrotate/*.conf

# Rotation quotidienne, rétention 7 jours
# Compression automatique

Sauvegarde

# Sauvegarder les dashboards Grafana
docker exec grafana grafana-cli admin export-dashboard > dashboards-backup.json

# Sauvegarder la configuration
tar -czf monitoring-config-backup.tar.gz conf/grafana/ conf/promtail/

Mise à Jour

# Mise à jour des images Docker
docker compose pull grafana loki promtail

# Redémarrage avec nouvelles images
docker compose up -d grafana loki promtail

🔐 Sécurité

Authentification

  • Utilisateur unique : admin
  • Mot de passe fort : Configuré via variable d'environnement
  • Accès anonyme : Désactivé
  • HTTPS : Forcé via Nginx

Réseau

  • Isolation Docker : Services dans le réseau btcnet
  • Ports exposés : Uniquement en localhost
  • Proxy Nginx : Accès externe sécurisé

Données Sensibles

  • Aucun secret dans les logs
  • Rotation automatique des logs
  • Chiffrement des données au repos (optionnel)

📈 Métriques et KPIs

Disponibilité des Services

  • Uptime : Pourcentage de temps de fonctionnement
  • Healthchecks : Statut des services
  • Restarts : Nombre de redémarrages

Performance

  • Temps de réponse : Latence des API
  • Throughput : Requêtes par seconde
  • Erreurs : Taux d'erreur par service

Bitcoin

  • Blocs minés : Nombre de blocs par heure
  • Transactions : Volume de transactions
  • Fees : Frais de transaction moyens

🆘 Dépannage

Problèmes Courants

  1. Grafana non accessible

    # Vérifier le statut
    docker compose ps grafana
    
    # Vérifier les logs
    docker compose logs grafana
    
  2. Logs non collectés

    # Vérifier Promtail
    docker compose logs promtail
    
    # Vérifier Loki
    docker compose logs loki
    
  3. Dashboards vides

    # Vérifier la source de données
    # Aller dans Configuration > Data Sources > Loki
    

Commandes de Diagnostic

# Test de connectivité complet
./scripts/test-monitoring.sh

# Vérification des services
./scripts/deploy-grafana.sh status

# Logs en temps réel
./scripts/deploy-grafana.sh logs grafana

📚 Documentation Associée


💡 Conseil : Commencez par le dashboard "Vue d'ensemble LeCoffre" pour avoir une vision globale du système !