Gestion des données

Ce document explique comment gérer les différents types de données et de bases de données associées au client de lʼAPI WhatsApp Business.

Volumes

Les volumes constituent le mécanisme favori pour la persistance des données générées et utilisées par les conteneurs Docker. Le client de l’API WhatsApp Business nécessite un volume Docker pour le contenu multimédia. Ce volume est créé automatiquement lors de l’exécution des commandes docker-compose pendant lʼinstallation.

Les volumes Docker prennent en charge le stockage de volumes sur des hôtes distants ou des fournisseurs cloud. Vous pouvez configurer le volume média sur n’importe quelle solution de partage de fichiers de data center existante. Assurez-vous que tous les conteneurs Webapp et Coreapp y ont accès en lecture/écriture. Pour afficher ou modifier le chemin d’accès au volume, modifiez le fichier docker-compose.yml.

NomDescription

Volume média

  • Stocke les fichiers multimédia entrants et sortants.
  • S’installe dans les conteneurs par défaut, sous /usr/local/wamedia/.

Variables d’environnement

Le client de l’API WhatsApp Business peut utiliser MySQL ou PostgreSQL pour stocker les données.

Vous pouvez configurer les paramètres de la base de données en définissant les variables d’environnement suivantes dans le fichier db.env lors de l’installation du client de l’API WhatsApp Business. Ces variables d’environnement seront utilisées par le Coreapp et le Webapp lors de la connexion à la base de données.

Paramètres de la base de données Variable d’environnement

database_engine

WA_DB_ENGINE

hostname

WA_DB_HOSTNAME

port

WA_DB_PORT

username

WA_DB_USERNAME

password

WA_DB_PASSWORD

database_name_prefix

WA_DB_NAME_PREFIX

connection_idle_timeout

WA_DB_CONNECTION_IDLE_TIMEOUT

  • WA_DB_NAME_PREFIX peut être utilisé pour préfixer toutes les bases de données créées lorsque le client de l’API WhatsApp Business est installé. Il permet d’exécuter plusieurs ensembles de bases de données de l’API WhatsApp Business sur le même hôte de base de données.
  • WA_DB_CONNECTION_IDLE_TIMEOUT (uniquement compatible avec MySQL) : en définissant cette variable d’environnement (en millisecondes) au démarrage du Coreapp, vous pouvez définir le délai d’expiration de votre base de données MySQL. Le serveur MySQL fermera alors toutes les connexions à la base de données qui sont inactives pendant la durée fixée.

Gestion de la base de données

Sur cette page, vous trouverez des recommandations pour gérer la base de données associée à votre client de l'API WhatsApp Business.

ProblèmeRecommandations

Mise à jour avec une grande base de données

Une grande base de données comprend plus de 2 millions de lignes dans la table messages.
Appliquez les recommandations ci-dessous lorsque vous utilisez le point de terminaison /services/message/gc pour une mise à jour afin de garantir la stabilité de la base de données.

À compter de la version v2.29.1, le paramètre pass_through est défini par défaut sur false, ce qui peut augmenter l'espace de stockage de la base de données pour la table messages.

Utilisez le paramètre de collecte automatique des déchets pour assurer un fonctionnement stable à votre base de données, en la nettoyant de façon périodique. Pour en savoir plus sur les paramètres pass_through et db_garbagecollector_enable, consultez la documentation sur les paramètres de l'application.

Configuration de la collecte automatique des déchets

  • Activé pour les entreprises qui effectuent la mise à jour avec le paramètre pass_through activé.
  • Désactivé pour les entreprises qui effectuent la mise à jour avec le paramètre pass_through désactivé.
    • Si le paramètre pass_through a été activé avant la mise à jour, nous vous recommandons d'activer la collecte automatique des déchets après la mise à jour à l'aide du paramètre db_garbagecollector_enable dans les paramètres de l'application.
  • Nous recommandons aux entreprises dont le trafic est supérieur à 120 requêtes par seconde de collecter les déchets par appels d'API avec le point de terminaison /services/message/gc.

Collecte des déchets par appels d'API

  • Cette technique rend le nettoyage de la base de données dépendant de l'intégration et est, idéalement, à éviter pour la plupart des entreprises.
  • Nous invitons les entreprises qui utilisent l'API WhatsApp Business pour collecter les déchets de la base de données à observer les recommandations suivantes :
    • Marquer les messages comme lus avant d'effectuer la demande d'API pour permettre un nettoyage agressif.
    • Utiliser le point de terminaison /service/message/gc une fois toutes les 24 heures lors d'une interruption (c'est-à-dire lorsque le volume de messages sortants est faible).
    • Pour une table messages comptant plus de 10 millions de lignes, vous devrez peut-être exécuter la demande d'API plusieurs fois pour vous assurer que les notifications de rappel ne renvoient aucune erreur.

Pour plus d’informations, consultez la documentation des Services.

Rotation des journaux

Un script de rotation des journaux est empaqueté dans les conteneurs Coreapp et Webapp.

Webapp

Le script de rotation des journaux du conteneur Webapp :

  • se sert de l’utilitaire logrotate ;
  • conserve les 30 derniers fichiers des journaux web, d’accès et d’erreurs ;
  • effectue une rotation uniquement si la taille est supérieure à 20 Mo ;
  • compresse les fichiers journaux ayant subi la rotation ;
  • archive les anciens fichiers journaux dans /var/log/whatsapp/archive.

Coreapp

Le script de rotation des journaux du conteneur Coreapp :

  • se sert d’un script interne ;
  • conserve les 30 derniers fichiers ;
  • effectue une rotation automatique si la taille est supérieure à 15 Mo ;
  • compresse les fichiers journaux ayant subi la rotation ;
  • archive les anciens fichiers journaux dans /var/log/whatsapp/archive.

Dans Coreapp, un nouveau fichier journal n’est créé que lorsque la taille du fichier journal précédent dépasse 15 Mo. Les anciens fichiers journaux ne sont pas supprimés automatiquement.

Recommandation de script de nettoyage

Nous vous recommandons d’exécuter périodiquement (quotidiennement, par exemple) le script de nettoyage ci-dessous pour effectuer la rotation des journaux sur tous les conteneurs Webapp, Coreapp et Maître (dans le cas d’une configuration Multiconnect). Il est préférable de configurer une tâche cronjob sur votre hôte pour qu’elle fonctionne sur tous les conteneurs de l’API WhatsApp Business et s’exécute durant les heures creuses. L’appel régulier du script de nettoyage permet de garder sous contrôle l’espace disque consommé par les fichiers journaux.

docker exec your-container-name /opt/whatsapp/bin/cleanup.sh