Aller au contenu principal

Dépannage On-Premise

Ce guide fournit des étapes de diagnostic de niveau 1 (L1) pour le dépannage des problèmes dans les déploiements EKB On-Premise. Ces étapes aident à identifier les problèmes courants liés aux conteneurs, aux bases de données, aux services et aux ressources système.

attention

Prérequis : Vous devez avoir accès SSH à la VM/serveur du client où EKB est déployé, ainsi que les autorisations appropriées pour exécuter des commandes Docker et accéder aux journaux des conteneurs.

Vérifications de l'État des Conteneurs​

Vérifier l'État de Tous les Conteneurs​

Commencez par vérifier quels conteneurs sont en cours d'exécution et leur état de santé :

# Vérifier l'état de tous les conteneurs
docker ps -a

# Vérifier les conteneurs avec l'état de santé
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Health}}"

# Vérifier l'état d'un conteneur spécifique
docker ps -a | grep <container_name>

Conteneurs Attendus :

  • web - Application frontend
  • api ou fastapi_backend - Serveur API backend
  • worker ou celery_worker - Worker(s) Celery
  • redis - Cache Redis
  • rabbitmq - File d'attente de messages RabbitMQ
  • supabase-studio - Supabase Studio
  • supabase-kong - Passerelle API Kong
  • supabase-auth - Service d'authentification
  • supabase-db ou postgres - Base de données PostgreSQL
  • Autres services Supabase (stockage, métadonnées, etc.)

Éléments à Vérifier :

  • Tous les conteneurs doivent être à l'état « Up »
  • Aucun conteneur ne doit être à l'état « Restarting » ou « Exited »
  • Les contrôles de santé doivent afficher « healthy » le cas échéant

Redémarrer les Conteneurs Défaillants​

Si les conteneurs sont arrêtés ou redémarrent :

# Redémarrer un conteneur spécifique
docker restart <container_name>

# Redémarrer tous les conteneurs
docker compose restart

# Redémarrer un service spécifique
docker compose restart <service_name>

Journaux des Conteneurs Backend​

Vérifier les Journaux du Conteneur API​

Les journaux du conteneur API backend contiennent des informations critiques sur les erreurs, les connexions de base de données et les problèmes de service :

# Afficher les journaux récents (100 dernières lignes)
docker logs --tail 100 api

# Ou pour fastapi_backend
docker logs --tail 100 fastapi_backend

# Suivre les journaux en temps réel
docker logs -f api

# Afficher les journaux avec horodatage
docker logs -t api

# Afficher les journaux à partir d'une heure spécifique
docker logs --since 30m api

# Afficher les journaux entre deux horodatages
docker logs --since "2024-01-01T00:00:00" --until "2024-01-01T23:59:59" api

Éléments à Rechercher :

  • Erreurs de connexion à la base de données
  • Échecs de connexion à Redis
  • Problèmes de connexion à RabbitMQ
  • Erreurs d'authentification
  • Erreurs des points de terminaison API (500, 503, etc.)
  • Erreurs d'import/export
  • Erreurs de traitement de la Knowledge Base
  • Défaillances des tâches de worker

Vérifier les Journaux du Conteneur Worker​

Les conteneurs worker gèrent les tâches en arrière-plan (traitement KB, embeddings, etc.) :

# Vérifier les journaux du worker
docker logs --tail 100 worker

# Ou pour celery_worker
docker logs --tail 100 celery_worker

# Vérifier toutes les instances de worker
docker ps | grep worker
docker logs <worker_container_name>

Éléments à Rechercher :

  • Erreurs d'exécution de tâches
  • Problèmes de mémoire
  • Erreurs de délai d'expiration
  • Erreurs de connexion à la base de données dans les workers
  • Défaillances de synchronisation de la Knowledge Base
  • Erreurs de génération d'embeddings

Vérifier les Journaux du Conteneur Web​

Les journaux du conteneur frontend peuvent révéler des problèmes de connexion à l'interface utilisateur et à l'API :

# Vérifier les journaux du conteneur web
docker logs --tail 100 web

# Suivre les journaux
docker logs -f web

Éléments à Rechercher :

  • Erreurs de compilation
  • Défaillances de connexion à l'API
  • Problèmes de variables d'environnement
  • Erreurs de liaison de port

État de la Base de Données​

Vérifier l'État de la Base de Données PostgreSQL/Supabase​

# Vérifier l'état du conteneur de base de données
docker ps | grep -E "(db|postgres|supabase-db)"

# Vérifier les journaux du conteneur de base de données
docker logs --tail 100 supabase-db

# Ou pour le conteneur postgres
docker logs --tail 100 postgres

# Se connecter à la base de données (si psql est disponible)
docker exec -it supabase-db psql -U postgres

# Vérifier les connexions à la base de données
docker exec supabase-db psql -U postgres -c "SELECT count(*) FROM pg_stat_activity;"

# Vérifier la taille de la base de données
docker exec supabase-db psql -U postgres -c "SELECT pg_size_pretty(pg_database_size('postgres'));"

Éléments à Vérifier :

  • Le conteneur de base de données est en cours d'exécution
  • Aucune erreur de connexion dans les journaux
  • La base de données n'est pas pleine (vérifier l'espace disque)
  • Les connexions actives sont dans les limites
  • Aucune requête longue bloquant les opérations

Vérifier la Connectivité de la Base de Données à partir de l'API​

# Tester la connexion à la base de données à partir du conteneur API
docker exec api python -c "
import os
from sqlalchemy import create_engine
try:
engine = create_engine(os.environ.get('DATABASE_URL'))
conn = engine.connect()
print('Database connection successful')
conn.close()
except Exception as e:
print(f'Database connection failed: {e}')
"

Vérifier les Migrations de Base de Données​

# Vérifier que les migrations sont à jour
docker exec api alembic current

# Vérifier l'historique des migrations
docker exec api alembic history

# Afficher les migrations en attente
docker exec api alembic heads

État de Redis​

Vérifier le Conteneur Redis​

# Vérifier l'état du conteneur Redis
docker ps | grep redis

# Vérifier les journaux de Redis
docker logs --tail 100 redis

# Tester la connexion à Redis
docker exec redis redis-cli ping

# Doit retourner : PONG

# Vérifier les informations de Redis
docker exec redis redis-cli info

# Vérifier l'utilisation de la mémoire de Redis
docker exec redis redis-cli info memory

# Vérifier les clients connectés
docker exec redis redis-cli info clients

Éléments à Vérifier :

  • Redis répond à la requête ping
  • L'utilisation de la mémoire est dans les limites
  • Aucune erreur de connexion
  • Aucune erreur d'éviction (mémoire pleine)

Tester Redis à partir du Conteneur API​

# Tester la connexion à Redis à partir de l'API
docker exec api python -c "
import redis
import os
try:
r = redis.Redis(host='redis', port=6379, decode_responses=True)
r.ping()
print('Redis connection successful')
except Exception as e:
print(f'Redis connection failed: {e}')
"

État de RabbitMQ​

Vérifier le Conteneur RabbitMQ​

# Vérifier l'état du conteneur RabbitMQ
docker ps | grep rabbitmq

# Vérifier les journaux de RabbitMQ
docker logs --tail 100 rabbitmq

# Vérifier la gestion RabbitMQ (si accessible)
# Accès : http://<server-ip>:15672
# Identifiants par défaut : user/password

Éléments à Vérifier :

  • Le conteneur est en cours d'exécution
  • Aucune erreur de connexion
  • Les files d'attente traitent les messages
  • Aucun arriéré de messages

Vérifier RabbitMQ à partir de l'API​

# Tester la connexion à RabbitMQ
docker exec api python -c "
import pika
try:
connection = pika.BlockingConnection(
pika.ConnectionParameters('rabbitmq', 5672, '/',
pika.PlainCredentials('user', 'password'))
)
print('RabbitMQ connection successful')
connection.close()
except Exception as e:
print(f'RabbitMQ connection failed: {e}')
"

Ressources Système​

Vérifier l'Espace Disque​

Un espace disque faible peut causer des problèmes de base de données, de stockage et de conteneurs :

# Vérifier l'utilisation globale du disque
df -h

# Vérifier l'utilisation du disque pour les volumes Docker
docker system df

# Vérifier l'utilisation d'un volume spécifique
docker volume inspect <volume_name>

# Vérifier les tailles des répertoires
du -sh /var/lib/docker/volumes/*
du -sh ./supabase/docker/volumes/*

# Vérifier l'utilisation du disque dans le conteneur (pour la base de données)
docker exec supabase-db df -h

Éléments à Vérifier :

  • La partition racine a suffisamment d'espace (>20% d'espace libre recommandé)
  • Les volumes Docker ne sont pas pleins
  • Le répertoire des données de la base de données a de l'espace
  • Le stockage Supabase a de l'espace

Vérifier l'Utilisation de la Mémoire​

# Vérifier la mémoire du système
free -h

# Vérifier l'utilisation de la mémoire des conteneurs
docker stats --no-stream

# Vérifier la mémoire d'un conteneur spécifique
docker stats <container_name> --no-stream

Éléments à Vérifier :

  • Le système dispose de mémoire disponible
  • Les conteneurs ne dépassent pas les limites de mémoire
  • Aucune suppression OOM (Out of Memory) dans les journaux

Vérifier l'Utilisation du Processeur​

# Vérifier l'utilisation du processeur
top
# ou
htop

# Vérifier l'utilisation du processeur des conteneurs
docker stats --no-stream

Connectivité Réseau​

Vérifier le Réseau du Conteneur​

# Vérifier le réseau Docker
docker network ls

# Inspecter la configuration du réseau
docker network inspect <network_name>

# Vérifier si les conteneurs peuvent communiquer
docker exec api ping -c 3 redis
docker exec api ping -c 3 rabbitmq
docker exec api ping -c 3 supabase-db

Vérifier la Disponibilité des Ports​

# Vérifier si les ports sont utilisés
netstat -tulpn | grep -E "(3001|8001|6379|5672|5432|8000)"

# Ou utilisant ss
ss -tulpn | grep -E "(3001|8001|6379|5672|5432|8000)"

# Vérifier le port à partir du conteneur
docker exec api curl -I http://localhost:8001/health

Variables d'Environnement​

Vérifier la Configuration de l'Environnement​

# Vérifier les variables d'environnement pour un conteneur
docker exec api env | grep -E "(DATABASE|REDIS|RABBITMQ|API)"

# Vérifier les fichiers .env (s'ils sont accessibles)
cat ./env/.env.server | grep -v "PASSWORD\|SECRET\|KEY" # Exclure les données sensibles
cat ./env/.env.web | grep -v "PASSWORD\|SECRET\|KEY"

# Vérifier l'environnement depuis docker-compose
docker compose config

Éléments à Vérifier :

  • Les chaînes de connexion à la base de données sont correctes
  • Les noms d'hôtes Redis et RabbitMQ sont corrects
  • Les URL de l'API sont correctement configurées
  • Les variables d'environnement requises sont définies
  • Aucune faute de frappe dans les noms de variables

Permissions des Fichiers​

Vérifier les Permissions des Fichiers et Répertoires​

# Vérifier les permissions sur les répertoires clés
ls -la ./alignment-project-server
ls -la ./ai-content-creator
ls -la ./supabase/docker/volumes

# Vérifier les permissions de la socket Docker
ls -la /var/run/docker.sock

# Vérifier les fichiers de certificats (si vous utilisez HTTPS)
ls -la ./certs/

Éléments à Vérifier :

  • Les répertoires d'application sont lisibles
  • La socket Docker a les permissions correctes
  • Les montages de volumes ont les permissions appropriées
  • Les fichiers de certificats sont accessibles

Vérifications Spécifiques au Service​

Problèmes de Knowledge Base​

Si la Knowledge Base ne se met pas à jour ou ne traite pas :

# Vérifier les journaux du worker pour le traitement KB
docker logs --tail 200 worker | grep -i "knowledge\|kb\|embedding"

# Vérifier les problèmes de modèle d'embedding
docker logs api | grep -i "embedding\|model"

# Vérifier le stockage Supabase
docker logs supabase-storage

# Vérifier les limites de téléchargement de fichiers
docker exec supabase-db psql -U postgres -c "
SELECT name, file_size_limit
FROM storage.buckets;
"

Problèmes de Chat/Agent​

# Vérifier les journaux de l'API pour les erreurs d'agent
docker logs --tail 200 api | grep -i "agent\|chat\|llm"

# Vérifier les journaux du worker pour les tâches d'agent
docker logs --tail 200 worker | grep -i "agent\|chat"

Problèmes d'Authentification​

# Vérifier les journaux du service d'authentification
docker logs --tail 100 supabase-auth

# Vérifier la base de données pour les problèmes d'authentification
docker exec supabase-db psql -U postgres -c "
SELECT * FROM auth.users LIMIT 5;
"

Modèles d'Erreurs Courants​

Erreurs de Connexion à la Base de Données​

Symptômes :

  • Erreurs « Connection refused »
  • Erreurs « Too many connections »
  • Erreurs de délai d'expiration

Étapes de Diagnostic :

  1. Vérifier que le conteneur de base de données est en cours d'exécution : docker ps | grep db
  2. Vérifier les journaux de la base de données : docker logs supabase-db
  3. Vérifier les limites de connexion : docker exec supabase-db psql -U postgres -c "SHOW max_connections;"
  4. Vérifier les connexions actives : docker exec supabase-db psql -U postgres -c "SELECT count(*) FROM pg_stat_activity;"
  5. Vérifier la DATABASE_URL dans les variables d'environnement

Erreurs de Connexion à Redis​

Symptômes :

  • « Connection refused » vers Redis
  • Absences de cache
  • Problèmes de session

Étapes de Diagnostic :

  1. Vérifier le conteneur Redis : docker ps | grep redis
  2. Tester Redis : docker exec redis redis-cli ping
  3. Vérifier les journaux de Redis : docker logs redis
  4. Vérifier le nom d'hôte de Redis dans les variables d'environnement

Défaillances des Tâches de Worker​

Symptômes :

  • Les tâches ne se complètent pas
  • La Knowledge Base ne se synchronise pas
  • Les tâches en arrière-plan échouent

Étapes de Diagnostic :

  1. Vérifier les journaux du worker : docker logs worker
  2. Vérifier l'état du conteneur worker : docker ps | grep worker
  3. Vérifier les files d'attente RabbitMQ : Accéder à l'interface de gestion RabbitMQ
  4. Vérifier les problèmes de mémoire : docker stats worker

Problèmes de Stockage/Téléchargement de Fichiers​

Symptômes :

  • Défaillances du téléchargement de fichiers
  • Erreurs « File too large »
  • Quota de stockage dépassé

Étapes de Diagnostic :

  1. Vérifier l'espace disque : df -h
  2. Vérifier les journaux du stockage Supabase : docker logs supabase-storage
  3. Vérifier les limites de taille de fichier dans la configuration Supabase
  4. Vérifier la configuration du bucket de stockage

Script de Diagnostic Rapide​

Créez un script de diagnostic pour exécuter toutes les vérifications à la fois :

#!/bin/bash
echo "=== Diagnostics EKB On-Premise ==="
echo ""
echo "1. État des Conteneurs :"
docker ps --format "table {{.Names}}\t{{.Status}}"
echo ""
echo "2. Espace Disque :"
df -h | grep -E "(Filesystem|/dev/)"
echo ""
echo "3. Mémoire :"
free -h
echo ""
echo "4. Redis :"
docker exec redis redis-cli ping 2>/dev/null || echo "Redis not responding"
echo ""
echo "5. Base de Données :"
docker exec supabase-db psql -U postgres -c "SELECT version();" 2>/dev/null || echo "Database not responding"
echo ""
echo "6. Erreurs Récentes de l'API (20 dernières lignes) :"
docker logs --tail 20 api 2>/dev/null | grep -i error || echo "No recent errors"
echo ""
echo "=== Diagnostics Terminés ==="

Enregistrez sous diagnostics.sh, rendez exécutable : chmod +x diagnostics.sh, et exécutez : ./diagnostics.sh

Informations d'Escalade​

Lors de l'escalade au support L2, fournissez :

  1. État des Conteneurs : Résultat de docker ps -a
  2. Journaux Récents : Dernières 100-200 lignes des conteneurs pertinents
  3. Ressources Système : Résultat de df -h et free -h
  4. Messages d'Erreur : Messages d'erreur spécifiques des journaux
  5. Configuration : Noms des variables d'environnement (pas les valeurs) qui sont définies
  6. Chronologie : Quand le problème a commencé
  7. Impact : Quelles fonctionnalités sont affectées

Contacter le Support : support@automationanywhere.com

Ressources Supplémentaires​