UNPKG

xcraft-core-probe

Version:
181 lines (125 loc) ‱ 6.65 kB
# 📘 Documentation du module xcraft-core-probe ## Aperçu Le module `xcraft-core-probe` fournit des utilitaires de profilage et de mesure de performance pour l'Ă©cosystĂšme Xcraft. Il permet d'enregistrer des Ă©vĂ©nements temporels avec leurs mĂ©tadonnĂ©es dans une base de donnĂ©es SQLite, offrant ainsi un mĂ©canisme de monitoring et d'analyse des performances des applications Xcraft. ## Sommaire - [Structure du module](#structure-du-module) - [Fonctionnement global](#fonctionnement-global) - [Exemples d'utilisation](#exemples-dutilisation) - [Interactions avec d'autres modules](#interactions-avec-dautres-modules) - [Variables d'environnement](#variables-denvironnement) - [DĂ©tails des sources](#dĂ©tails-des-sources) ## Structure du module Le module est organisĂ© autour de trois composants principaux : - **`lib/probe.js`** : Classe principale `Probe` qui gĂšre la base de donnĂ©es SQLite et les mesures de performance - **`lib/index.js`** : Point d'entrĂ©e conditionnel qui charge le module seulement si `xcraft-core-book` est disponible - **`probe.js`** : Commandes Xcraft pour activer/dĂ©sactiver le profilage via le bus de commandes ## Fonctionnement global Le systĂšme de probes fonctionne selon le principe suivant : 1. **Initialisation conditionnelle** : Le module ne s'active que si `xcraft-core-book` (SQLite) est disponible et si la variable d'environnement `XCRAFT_PROBE` est dĂ©finie 2. **Base de donnĂ©es dĂ©diĂ©e** : Chaque tribu Xcraft possĂšde sa propre base de donnĂ©es de probes (`probe-{tribe}`) 3. **Enregistrement par lots** : Les Ă©vĂ©nements sont enregistrĂ©s par transactions de 10 000 entrĂ©es pour optimiser les performances 4. **Mesure de delta** : Chaque probe peut mesurer le temps Ă©coulĂ© entre son dĂ©clenchement et sa finalisation La structure de donnĂ©es stockĂ©e comprend : - `timestamp` : Horodatage de l'Ă©vĂ©nement en millisecondes - `delta` : Temps Ă©coulĂ© en nanosecondes (optionnel) - `topic` : Identifiant du type d'Ă©vĂ©nement - `payload` : DonnĂ©es JSON associĂ©es Ă  l'Ă©vĂ©nement ## Exemples d'utilisation ### Activation via commandes Xcraft ```javascript // Activer le profilage await this.quest.cmd('probe.enable'); // DĂ©sactiver le profilage await this.quest.cmd('probe.disable'); ``` ### Utilisation programmatique ```javascript const xProbe = require('xcraft-core-probe'); // Enregistrer un Ă©vĂ©nement simple if (xProbe) { xProbe.push('user.login', {userId: 123, method: 'oauth'}); } // Mesurer le temps d'exĂ©cution d'une opĂ©ration if (xProbe) { const endProbe = xProbe.push('database.query', { table: 'users', operation: 'select', }); // ... exĂ©cution de la requĂȘte ... endProbe(); // Enregistre le delta de temps } ``` ### Exemple avec gestion d'erreur ```javascript const xProbe = require('xcraft-core-probe'); async function processData(data) { const endProbe = xProbe?.push('data.processing', { size: data.length, type: data.type, }) || (() => {}); try { // Traitement des donnĂ©es const result = await heavyProcessing(data); return result; } finally { endProbe(); // Mesure le temps mĂȘme en cas d'erreur } } ``` ## Interactions avec d'autres modules Le module interagit avec plusieurs composants de l'Ă©cosystĂšme Xcraft : - **[xcraft-core-book]** : Fournit l'interface SQLite pour la persistance des donnĂ©es de profilage - **[xcraft-core-etc]** : Gestion de la configuration pour dĂ©terminer l'emplacement de stockage - **[xcraft-core-host]** : RĂ©cupĂ©ration des arguments d'application (notamment la tribu) - **[xcraft-core-bus]** : Exposition des commandes d'activation/dĂ©sactivation sur le bus ## Variables d'environnement | Variable | Description | Exemple | Valeur par dĂ©faut | | -------------- | --------------------------------------------------------- | ---------------- | ----------------------- | | `XCRAFT_PROBE` | Active le systĂšme de probes si dĂ©finie et diffĂ©rente de 0 | `XCRAFT_PROBE=1` | Non dĂ©finie (dĂ©sactivĂ©) | ## DĂ©tails des sources ### `lib/index.js` Point d'entrĂ©e conditionnel qui vĂ©rifie la disponibilitĂ© de `xcraft-core-book`. Si le module SQLite n'est pas disponible, retourne `null` pour dĂ©sactiver gracieusement le systĂšme de probes. ### `lib/probe.js` #### Classe Probe La classe `Probe` Ă©tend `SQLite` de `xcraft-core-book` et implĂ©mente le systĂšme de profilage. **CaractĂ©ristiques principales :** - Gestion automatique des transactions par lots (10 000 entrĂ©es) - Base de donnĂ©es dĂ©diĂ©e par tribu - Mode WAL (Write-Ahead Logging) pour optimiser les performances - Fermeture automatique lors de l'arrĂȘt du processus #### État et modĂšle de donnĂ©es La classe maintient un Ă©tat interne avec : - `_pushCounter` : Compteur d'entrĂ©es pour la gestion des transactions - `_disabled` : État d'activation du systĂšme - `_dbName` : Nom de la base de donnĂ©es (format : `probe-{tribe}`) Structure de la table `data` : ```sql CREATE TABLE data ( timestamp TEXT, delta TEXT, topic TEXT, payload JSON ); ``` Index créés pour optimiser les requĂȘtes : - Index sur `timestamp` pour les recherches temporelles - Index sur `topic` pour filtrer par type d'Ă©vĂ©nement #### MĂ©thodes publiques - **`setEnable(enabled)`** — Active ou dĂ©sactive le systĂšme de probes. Retourne l'Ă©tat de disponibilitĂ© aprĂšs l'opĂ©ration. - **`push(topic, payload)`** — Enregistre un nouvel Ă©vĂ©nement dans la base de donnĂ©es. Retourne une fonction de callback pour mesurer le delta de temps. - **`isAvailable()`** — VĂ©rifie si le systĂšme de probes est disponible et activĂ©. - **`open()`** — Ouvre la base de donnĂ©es et initialise les tables et requĂȘtes prĂ©parĂ©es. - **`close()`** — Ferme la base de donnĂ©es aprĂšs avoir committĂ© la transaction en cours. ### `probe.js` Expose les commandes Xcraft pour contrĂŽler le systĂšme de probes via le bus de commandes. #### Commandes disponibles - **`probe.enable`** — Active le systĂšme de probes et affiche l'emplacement de la base de donnĂ©es - **`probe.disable`** — DĂ©sactive le systĂšme de probes Ces commandes sont configurĂ©es pour s'exĂ©cuter en parallĂšle et gĂšrent les cas d'erreur lorsque le module n'est pas disponible. --- _Ce document a Ă©tĂ© mis Ă  jour pour reflĂ©ter l'Ă©tat actuel du code source._ [xcraft-core-book]: https://github.com/Xcraft-Inc/xcraft-core-book [xcraft-core-etc]: https://github.com/Xcraft-Inc/xcraft-core-etc [xcraft-core-host]: https://github.com/Xcraft-Inc/xcraft-core-host [xcraft-core-bus]: https://github.com/Xcraft-Inc/xcraft-core-bus