Aller au contenu principal

Cron Task distribuée

Abyss Monitor offre un moyen simple de déclencher des Cron Tasks distribuées. Chaque Cron Task est planifiée côté Abyss Monitor et appelle votre endpoint à l'horaire défini. Cela garantit le déclenchement et trace automatiquement chaque exécution.

Principe

Abyss Monitor maintient un planificateur centralisé. À chaque échéance, il appelle l'URL configurée sur votre serveur en signant la requête avec un secret. Votre serveur valide la signature, exécute la tâche, et peut renvoyer l'identifiant de requête du logger Abyss Monitor pour que les logs générés pendant l'exécution soient rattachés à la Cron Task.

Créer une Cron Task

  1. Ouvrez votre Application dans Abyss Monitor et allez sur l'onglet Cron Tasks.
  2. Cliquez sur Créer et renseignez :
    • Nom et description,
    • Expression cron (ex. 0 * * * * pour toutes les heures),
    • URL à appeler sur votre serveur,
    • Méthode HTTP et en-têtes optionnels.
  3. Validez. Une carte apparaît avec la Cron Task et son secret de signature : copiez-le côté serveur.

Authentifier une requête de Cron Task

Le secret sert à signer le corps de la requête en HMAC SHA-256. L'en-tête de signature est abyss-monitor-cron-task-signature.

import crypto from 'crypto';
import {
HEADER_CRON_TASK_SIGNATURE_NAME,
CRON_TASK_SIGNATURE_ALGORITHM,
} from '@abyss-project/monitor';

const headerSignature = req.headers[HEADER_CRON_TASK_SIGNATURE_NAME];

const hmac = crypto.createHmac(
CRON_TASK_SIGNATURE_ALGORITHM,
'my-secret-signature',
);
const signature = hmac.update(JSON.stringify(req.body)).digest('hex');

if (headerSignature !== signature) {
throw new Error('Invalid Signature');
}

// The signature is correct.
// Respond with the requestId of the AbyssMonitor logger to link
// the task's logs to this execution:
// res.status(200).json(getRequestContext().requestId);
info

Votre Cron Task peut produire des logs via le logger Abyss Monitor. En renvoyant l'identifiant de requête dans la réponse, ces logs sont liés à l'exécution et consultables depuis la Cron Task.

Historique d'exécution

Chaque exécution est consignée dans l'historique de la Cron Task : statut (succès / échec), durée, code HTTP renvoyé, logs liés. C'est l'endroit pour diagnostiquer rapidement une exécution qui n'aurait pas abouti.