Exploitation - Datachain Core
Cette page présente les opérations d’exploitation de la stack Datachain Core : démarrage et arrêt, logs, supervision et sauvegarde. Le paramétrage des modules est décrit dans Configuration - Datachain Core.
Démarrage et arrêt
La stack Datachain est démarrée en dernier, après Keycloak et, le cas échéant, le cluster Spark. Les scripts de démarrage, d’arrêt et de redémarrage sont décrits dans Exploitation - Généralités.
Au démarrage, le service de migration (pg_migration) s’exécute une fois et s’arrête : les patchs de la base de données doivent être passés avant d’utiliser l’application. Vérifier ses logs après chaque mise à jour.
| Dans le cas d’un cluster Spark, celui-ci doit être opérationnel avant le lancement de la stack Datachain, et la stack Datachain doit être redémarrée si le cluster est redémarré. |
Fichiers de configuration de la stack (dans le répertoire de la stack) :
Fichier |
Service concerné |
|---|---|
web_ui.env |
Module web : configuration |
backend.env |
Module backend : configuration |
spark.env |
Module Spark : configuration |
Accès et contrôle de l’état des services
| Module | Port | Url | Utilisation |
|---|---|---|---|
Web |
8080 |
/ |
Application Datachain |
Web |
9080 |
/stub_status |
Métriques Nginx |
Backend |
8089 |
/ |
API de l’application |
Backend |
9089 |
/actuator-backend/* |
Spring Actuator |
Spark |
8090 |
/ |
API du module de calcul |
Spark |
9090 |
/management/* |
Spring Actuator (préfixe par défaut, modifiable par |
Spark |
4040 |
/ |
Interface du driver Spark : analyse de l’exécution des jobs |
Logs
| Module | Emplacement |
|---|---|
Web |
Sortie standard du conteneur (logs d’accès Nginx) |
Backend |
|
Spark |
|
Migration |
Sortie standard du conteneur |
Les logs applicatifs sont renouvelés chaque jour (et par tranche de 200Mo), compressés, et conservés 30 jours, dans la limite de 10Go. Voir Configuration - Datachain Core pour le détail.
Supervision
L’ensemble des métriques est mis à disposition au format Prometheus et peut être intégré dans la plupart des outils de supervision.
Module |
Type de supervision |
|---|---|
Web |
Brique externe nginx-prometheus-exporter |
Backend |
Interne, via Spring Actuator |
Spark |
Interne, via Spring Actuator |
Les éléments à surveiller sont, comme pour la plupart des applications, les ressources système et les pools de connexions (afin de ne pas atteindre leur saturation).
Module Web
La supervision se fait par l’intermédiaire de l’image nginx-prometheus-exporter, via ajout dans le fichier de déploiement. Elle lit les métriques Nginx exposées sur le port 9080 (/stub_status).
version: "3.7"
services:
# Déclaration des autres services
# Other service declaration
nginx_exporter:
image: nginx/nginx-prometheus-exporter:${NGINX_PROMETHEUS_EXPORTER_VERSION}
networks:
# Disponible sur le réseau traefik, car disponible via le proxy traefik
traefik_network:
# Disponible sur le réseau dc_network, car interroge le module web_ui, dont un alias sur ce réseau est 'dc-web-ui'
dc_network:
deploy:
mode: replicated
replicas: 1
labels:
# Exposition via traefik
- "traefik.enable=true"
- "traefik.docker.network=traefik_network"
# disponible sur l'URL ADMIN_URL à l'uri /nginx-exporter (voir configuration ci-dessous)
- "traefik.http.routers.nginx_exporter.rule=Host(`${ADMIN_URL}`) && PathPrefix(`/nginx-exporter`)"
# URL traefik sécurisée
- "traefik.http.routers.nginx_exporter.entrypoints=websecure"
- "traefik.http.routers.nginx_exporter.tls=true"
- "traefik.http.routers.nginx_exporter.tls.certresolver=resolver1"
- "traefik.http.routers.nginx_exporter.service=nginx_exporter"
- "traefik.http.routers.nginx_exporter.middlewares=nginx_exporter-auth@docker"
- "traefik.http.services.nginx_exporter.loadbalancer.server.port=9113"
# Protection de l'url par un mot de passe traefik généré avec la commande : echo $(htpasswd -nbB adobis motdepasse) | sed -e s/\\$/\\$\\$/g
- "traefik.http.middlewares.nginx_exporter-auth.basicauth.users=adobis:$$2y$$05$$zMWiM6s1zgLJ8zBnTf3Dm.gxnEKhyt6.099nsOWkdyVon4tElSLIm"
- "traefik.http.middlewares.nginx_exporter-auth.basicauth.removeheader=true"
environment:
# récupération de l'information dans la page stub_status
# La la status est exposé sur le port 8080 à partir de la version 8.6
- SCRAPE_URI=http://dc-web-ui:8080/stub_status
- NGINX_RETRIES=20
# disponible sous /nginx-exporter
- TELEMETRY_PATH=/nginx-exporter
Module Backend
La supervision est native pour le composant, via Spring Actuator, avec activation et mise à disposition des métriques.
# Configuration prometheus
management.endpoints.web.base-path=/actuator-backend
management.server.address=0.0.0.0
management.metrics.export.prometheus.enabled=true
version: "3.7"
services:
# Déclaration des autres services
# Other service declaration
dc_backend:
image: ${HARBOR_REGISTRY}/dc/backend:${PRODUCT_VERSION}
networks:
# Disponible sur le réseau traefik, car disponible via le proxy traefik
traefik_network:
# Disponible sur le réseau dc_network
dc_network:
aliases:
- dc-backend
env_file: backend.env
deploy:
mode: replicated
replicas: 1
labels:
# Exposition via traefik
- "traefik.enable=true"
- "traefik.docker.network=traefik_network"
# disponible sur l'URL ADMIN_URL à l'uri /actuator-backend (voir configuration ci-dessous)
- "traefik.http.routers.dc_backend_actuator.rule=Host(`${ADMIN_URL}`) && PathPrefix(`/actuator-backend`)"
# URL traefik sécurisée
- "traefik.http.routers.dc_backend_actuator.entrypoints=websecure"
- "traefik.http.routers.dc_backend_actuator.tls=true"
- "traefik.http.routers.dc_backend_actuator.tls.certresolver=resolver1"
- "traefik.http.routers.dc_backend_actuator.service=dc_backend_actuator"
- "traefik.http.services.dc_backend_actuator.loadbalancer.server.port=9089"
- "traefik.http.routers.dc_backend_actuator.middlewares=dc_backend_actuator-auth@docker"
# Protection de l'url par un mot de passe traefik généré avec la commande : echo $(htpasswd -nbB adobis motdepasse) | sed -e s/\\$/\\$\\$/g
- "traefik.http.middlewares.dc_backend_actuator-auth.basicauth.users=adobis:$$2y$$05$$zMWiM6s1zgLJ8zBnTf3Dm.gxnEKhyt6.099nsOWkdyVon4tElSLIm"
- "traefik.http.middlewares.dc_backend_actuator-auth.basicauth.removeheader=true"
Module Spark
La supervision est native pour le composant, via Spring Actuator, avec activation et mise à disposition des métriques.
# Configuration prometheus
management.endpoints.web.base-path=/actuator-spark
management.server.address=0.0.0.0
management.prometheus.metrics.export.enabled=true
version: "3.7"
services:
# Déclaration des autres services
# Other service declaration
dc_spark:
image: ${HARBOR_REGISTRY}/dc/spark:${PRODUCT_VERSION}
networks:
# Disponible sur le réseau traefik, car disponible via le proxy traefik
traefik_network:
# Disponible sur le réseau dc_network
dc_network:
aliases:
- dc-spark
env_file: spark.env
deploy:
mode: replicated
replicas: 1
labels:
# Exposition via traefik
- "traefik.enable=true"
- "traefik.docker.network=traefik_network"
# disponible sur l'URL ADMIN_URL à l'uri /actuator-spark (voir configuration ci-dessous)
- "traefik.http.routers.dc_spark_actuator.rule=Host(`${ADMIN_URL}`) && PathPrefix(`/actuator-spark`)"
# URL traefik sécurisée
- "traefik.http.routers.dc_spark_actuator.entrypoints=websecure"
- "traefik.http.routers.dc_spark_actuator.tls=true"
- "traefik.http.routers.dc_spark_actuator.tls.certresolver=resolver1"
- "traefik.http.routers.dc_spark_actuator.service=dc_spark_actuator"
- "traefik.http.services.dc_spark_actuator.loadbalancer.server.port=9090"
- "traefik.http.routers.dc_spark_actuator.middlewares=dc_spark_actuator-auth@docker"
# Protection de l'url par un mot de passe traefik généré avec la commande : echo $(htpasswd -nbB adobis motdepasse) | sed -e s/\\$/\\$\\$/g
- "traefik.http.middlewares.dc_spark_actuator-auth.basicauth.users=adobis:$$2y$$05$$zMWiM6s1zgLJ8zBnTf3Dm.gxnEKhyt6.099nsOWkdyVon4tElSLIm"
- "traefik.http.middlewares.dc_spark_actuator-auth.basicauth.removeheader=true"
Sauvegarde et restauration
Nous conseillons d’effectuer des sauvegardes à froid, avec au préalable arrêt des services utilisant les éléments à sauvegarder. Pour Datachain Core, les éléments à sauvegarder sont :
-
la base de données
adobis(configuration, pipelines, tâches), et la baseexpose(données exposées) : voir Exploitation - Gestion des données ; -
le système de fichiers de Spark (répertoire monté sur
/data).
Sauvegarde et restauration du système de fichiers
Dans la version actuelle de Datachain, le système de fichier HDFS est divisé en deux répertoires input et output. Le répertoire output contient essentiellement les éléments produits par les pipelines de traitement, les publications, ainsi que le cache (persistances notamment). De fait, le répertoire output peut devenir très vite volumineux.
Hors backup logiciel, d’autres technologies (hors scope de cette documentation) permettent de faire des backups de système de fichiers (snapshot de vm, réplication de disques, …). Il peut être plus approprié d’adapter ce type de sauvegarde, plutôt que les sauvegardes proposées ci-dessous.
Sans cluster HDFS
Dans le cas de contexte spark sans cluster Spark/Hadoop, les fichiers sont directement accessibles dans le volume docker. Il suffit donc juste de procéder à la sauvegarde du répertoire.
dc_spark1:
image: ${HARBOR_REGISTRY}/dc/spark:${PRODUCT_VERSION}
# ...
volumes:
- /opt/adobis/data/datachain/hdfs:/data # Volume Standard
# ...
Dans le cas ci-dessus, il faudra donc procéder à une sauvegarde du répertoire /opt/adobis/data/datachain/hdfs, sur chaque machine sur lequel se trouve un contexte Spark.
Avec cluster HDFS
Dans le cas de contexte spark avec cluster Spark/Hadoop, Hadoop met nativement en œuvre un système de réplication de données sur tous les nœuds du cluster. Il parait peu opportun d’utiliser des techniques standard de sauvegarde.
En cas de besoin d’une mise en œuvre d’une procédure de sauvegarde logicielle, merci de suivre les préconisations Hadoop sur le sujet.
Dernière mise à jour le 2 novembre 2026 à 15:16