Jusqu'à la version 2023.01
ETLAttention
À partir de la version 2023.1
, l'ETL est remplacé par le module Workers.
L'ETL du module Dashboard est responsable de l'extraction, de la transformation et du chargement des données dans la
base dashboard
dédiée au module.
Il est disponible sous forme d'une archive à installer sur un serveur, dédié ou non.
Prérequis
Logiciels
- php >= 8.1
l'ETL est une application Symfony et nécessite donc l'interpréteur PHP
- sqlite >= 3.34
l'ETL utilise une base de données
sqlite
pour gérer sa file de messages
- libpq-dev >= 13.10 et le driver pdo_pgsql
l'ETL doit pouvoir communiquer avec la base de données PostgreSQL dédiée au module
Télécharger et décompresser l'archive
Informations
- Cette étape doit être faite dans un projet AP4 initialisé.
- Si vous n'avez pas de projet AP4 initialisé, vous pouvez demander à votre intégrateur.
Installer le paquet @anakeen/dashboard-etl
à l'aide de la commande :
npx @anakeen/anakeen-platform install --flavour custom --cwd .
Décompressez l'archive qui nous intéresse node_modules/@anakeen/dashboard-etl/dashboard-etl-x.x.x.zip
dans le
répertoire voulu. Par la suite, nous ferons référence à ce répertoire à l'aide de la variable ETL_HOME
.
Configuration de l'ETL
Configurer les variables d'environnement
Il faut renseigner dans .env.local
les variables suivantes :
Obligatoires :
Variable | Description | Exemple |
---|---|---|
AP4_DOMAIN | URL du serveur AP4 | http://127.0.0.1:8080 |
AP4_TOKEN | Jeton d'accès HTTP fourni par AP4 | - |
PSQL_HOST | Nom d'hôte du serveur de base de données | 127.0.0.1 |
PSQL_PORT | Port du serveur de base de données | 5432 |
PSQL_DB | Nom de la base de données dédiée | dashboard |
PSQL_USER | Nom d'utilisateur de la base de données | anakeen |
PSQL_PASSWORD | Mot de passe de la base de données | password |
Informations
Le jeton d'accès doit être obtenu auprès d'AP4 :
./ank.php --script=generateETLToken
Optionnelles :
Variable | Défaut | Description |
---|---|---|
DELAY_BETWEEN_SYNC | 60 | Délai (en secondes) entre deux synchronisations avec AP4 |
MAX_DELAY_RETRY_UPDATE | 3600 | Délai maximum (en secondes) entre deux mises à jour échouées d'un élément, ce délai augmente avec le nombre d'essais sans pour autant dépasser MAX_DELAY_RETRY_UPDATE ($delay = 2 ** $retries ) |
La configuration peut être analysée à tout moment :
php bin/console etl:status
Informations
Cette commande vérifie la définition des variables et contrôle les connexions à AP4 ainsi qu'à la base de données.
Activer la synchronisation avec AP4
Pour activer la synchronisation avec AP4 :
php bin/console etl:entity:generate
php bin/console etl:schema:init
php bin/console etl:sync:start
La liste des commandes de l'ETL est disponible ici.
Lancement des services
L'ETL peut être lancé sous forme de service Supervisor ou sous forme de service systemd. Ces derniers vont superviser deux types de workers :
- un worker récupèrant à temps régulier la liste des Smart Elements modifiés ou insérés depuis la dernière synchronisation
x
workers évaluant les métriques pour chacun de ces Smart Elements et insèrant le résultat dans la base de données
supervisor
Lancement par supervisor
Enregistrement pour lancement par Copier le fichier de configuration
supervisor-etl.conf
dans le répertoire de configuration de Supervisor :- Sur Debian/Ubuntu :
# cp $ETL_HOME/utils/supervisor-etl.conf /etc/supervisor/conf.d/supervisor-etl.conf
- Sur RedHat/CentOS :
# cp $ETL_HOME/utils/supervisor-etl.conf /etc/supervisor.d/supervisor-etl.ini
Mettre à jour si nécessaire le chemin des directives
command
:
command=php $ETL_HOME/dashboard-etl/bin/console ...
(configuré par défaut pour ETL_HOME=""
)
Ajouter si nécessaire la directive
user
pour référencer l'utilisateur système sous lequel seront exécutés les services.Ajuster si nécessaire le nombre de workers dédiés à la mise à jour des éléments :
[program:etl-update]
...
numprocs=x
où
x
est le nombre de workers qui seront déployés pour traiter les messages de demande de mise à jour
- Activer les services :
supervisorctl reread
supervisorctl update
Démarrage/Arrêt des services de l'ETL
- Démarrer tous les services :
supervisorctl start etl-update:\* etl-sync:\*
- Arrêter tous les services :
supervisorctl stop etl-update:\* etl-sync:\*
- Redémarrer tous les services :
supervisorctl restart etl-update:\* etl-sync:\*
- Voir le statut des services :
supervisorctl status etl-update:\* etl-sync:\*
systemd
Lancement par systemd
Enregistrement pour lancement par - Copier les fichiers de description des services de l'ETL :
cp $ETL_HOME/dashboard-etl/utils/etl-sync.service /usr/lib/systemd/system/
cp $ETL_HOME/dashboard-etl/utils/etl-update@.service /usr/lib/systemd/system/
- Mettre à jour si nécessaire le chemin des directives
ExecStart
:
ExecStart=php $ETL_HOME/dashboard-etl/bin/console ...
(configuré par défaut pour ETL_HOME=""
)
Ajouter si nécessaire la directive
User
pour référencer l'utilisateur système sous lequel seront exécutés les services.Activer les services :
# worker de synchronisation
systemctl enable etl-sync.service
# worker(s) de mise à jour
systemctl enable etl-update@{1..x}.service
où
x
est le nombre de workers qui seront déployés pour traiter les messages de demande de mise à jour
Démarrage/Arrêt des services de l'ETL
- Démarrer tous les services :
systemctl start etl-sync.service etl-update@{1..x}.service
- Arrêter tous les services :
systemctl stop etl-sync.service etl-update@{1..x}.service
- Redémarrer tous les services :
systemctl restart etl-sync.service etl-update@{1..x}.service
- Voir le statut des services :
systemctl status etl-sync etl-update@{1..x}.service