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 :
| Variable | Description |
|---|---|
GF_SERVER_ROOT_URL | URL publique pour Grafana (par ex. https://monitor.firstbreath.fr). |
GF_AUTH_GITHUB_CLIENT_ID | Pour la connexion OAuth. |
GF_AUTH_GITHUB_ALLOWED_ORGANIZATIONS | Restreindre la connexion à l'organisation FirstBreath. |
🔄 Flux de provisionnement
- Datasources : Défini dans
provisioning/datasources/datasource.yml. Configure l'URL Prometheus automatiquement. - Tableaux de bord : Défini dans
provisioning/dashboards/dashboard.yml. Charge les fichiers JSON depuis/var/lib/grafana/dashboards.
Important : Définissez
allowUiUpdates: falsedansdashboard.ymlpour 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é.