Aller au contenu principal

Déploiement & Configuration

Cette page détaille comment déployer la pile de surveillance et configurer les services de vision pour exporter correctement les métriques.

📋 Prérequis

  • Docker & Docker Compose
  • Pilotes NVIDIA et NVIDIA Container Toolkit (pour les métriques GPU).

🛠 Composition Docker

La pile de surveillance s'exécute généralement dans son propre docker-compose.yml pour la découpler du cycle de vie de l'application principale. Idéalement, elle rejoint un réseau partagé (par ex., monitor-net) pour atteindre les conteneurs de l'application.

Configuration du service

Assurez-vous que votre docker-compose.yml monte les volumes suivants pour la persistance et la configuration :

services:
prometheus:
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
- prometheus-data:/prometheus

grafana:
volumes:
- grafana-data:/var/lib/grafana
- ./provisioning:/etc/grafana/provisioning
- ./dashboards:/var/lib/grafana/dashboards

Note : Nous utilisons le Provisioning Grafana pour charger automatiquement les tableaux de bord à partir de fichiers au démarrage, en les traitant comme de l'Infrastructure-as-Code.

🔌 Activation de l'accélération GPU & Métriques

Pour prendre en charge l'accélération matérielle (h264_cuvid) ET exporter les métriques, le service camera-manager nécessite une stratégie de construction spécifique pour éviter les conflits entre ultralytics et le OpenCV personnalisé compilé avec CUDA.

L'"Astuce des requirements"

Le paquet ultralytics installe automatiquement un opencv-python standard uniquement CPU, qui écrase notre version GPU personnalisée. Pour corriger cela, utilisez le modèle de Dockerfile suivant :

# 1. Copier les dépendances
COPY requirements.cuda.txt .

# 2. Installer les dépendances ET désinstaller immédiatement opencv-cpu
RUN pip install --no-cache-dir -r requirements.cuda.txt && \
pip uninstall -y opencv-python opencv-python-headless || true

# 3. Assurer que les variables d'environnement pointent vers les bibliothèques système
ENV PYTHONPATH=/app:/usr/local/lib/python3.11/site-packages
ENV LD_LIBRARY_PATH=/usr/local/lib:${LD_LIBRARY_PATH}

Cela force Python à se replier sur le OpenCV au niveau système dans /usr/local/lib/, qui prend entièrement en charge NVIDIA CUDA.

⚙️ Variables d'environnement

La pile de surveillance utilise les variables Dokploy/Env suivantes :

VariableDescription
GF_SERVER_ROOT_URLURL publique pour Grafana (par ex. https://monitor.firstbreath.fr).
GF_AUTH_GITHUB_CLIENT_IDPour la connexion OAuth.
GF_AUTH_GITHUB_ALLOWED_ORGANIZATIONSRestreindre la connexion à l'organisation FirstBreath.

🔄 Flux de provisionnement

  1. Datasources : Défini dans provisioning/datasources/datasource.yml. Configure l'URL Prometheus automatiquement.
  2. Tableaux de bord : Défini dans provisioning/dashboards/dashboard.yml. Charge les fichiers JSON depuis /var/lib/grafana/dashboards.

Important : Définissez allowUiUpdates: false dans dashboard.yml pour empêcher la base de données de mettre en cache d'anciennes versions de tableaux de bord, garantissant que les fichiers JSON sur le disque sont toujours la source de vérité.