Open Source Job Scheduler
Transcription
Open Source Job Scheduler
Open Source Job Scheduler Développement Pré-requis : oConception Développement Traitements Evènements Fonctions SOS-Paris Surveillance 2 Outils o Bibliothèque de traitements o Traitements fournis par SOS-Berlin o Interface de programmation o Fonctions internes en scripts (Perl, VB, Java) o Interactions avec le traitement o Exécution de fonctions en parallèle du traitement o Evènements o Echanges de messages entre moteurs SOS-Paris 3 Développement Traitements Evènements Fonctions SOS-Paris Surveillance 4 JS Integrated Library o Gestion interne o Evènements, Lancements, vérifications o Transferts o FTP, HTTP, SCP, SFTP o Traitements « gérés » o Base de données, Exécutions, Mail o Administration o Installation, Vérifications, Purges SOS-Paris 5 Orchestration o Fichiers o Existence, tests d’écriture o Exécution o SSH, Remote command o Messagerie o Envoi, Lecture de message o Transformation o CSV, XSL SOS-Paris 6 Synchronisation o 2 chaines parallèles mais job2 et jobC doivent démarrer en même temps job1 jobA job2 jobB job3 jobC SOS-Paris JobD 7 Solution o On ajoute un traitement de synchronisation job1 jobA SYNC jobB SYNC SOS-Paris job2 job3 jobC JobD 8 Assistant o Création d’un traitement de synchronisation o Traitement ordonné o JobSchedulerSynchronizeJobChains o finish SOS-Paris 9 Déroulement o Lancement des 2 chaines o Exécution des traitements job1 et jobA SOS-Paris 10 Attente de synchronisation o Job1 est terminé o Le traitement Synchro est suspendu SOS-Paris 11 Déroulement o JobA terminé o Job2 et JobB sont lancés SOS-Paris 12 Journal Task synchro/synchro:100047 - Protocol starts in C:/SOSPARIS/jobscheduler/scheduler/logs/task.synchro,synchro.log SCHEDULER-918 state=starting (at=never) synchronizing order [77, ] of job chain [/synchro/job_chainA] job chain [/synchro/job_chain1], state [synchro] requires 1 orders being present, 1 orders have been enqueued job chain [/synchro/job_chainA], state [synchro] requires 1 orders being present, 1 orders have been enqueued Synchits:0 synchronized job chain: /synchro/job_chainA, state [synchro], required orders: 1, pending orders: 1 synchronized job chain: /synchro/job_chain1, state [synchro], required orders: 1, pending orders: 1 no suspended or set back orders found in dependent job chain: /synchro/job_chainA signalling order [76] to be continued for job chain [/synchro/job_chain1] SOS-Paris 13 Développement Traitements Evènements Fonctions SOS-Paris Surveillance 14 Evènements o Ordonnancement statique o L’ordre est connu o Utilisation courante o Evénements dynamiques o Gère les traitements de manière globale o Utile dans le cas de dépendances multiples SOS-Paris 15 Mise en place o Différentes méthodes o Gestion des événements par JobEditor o Idéal pour les formules complexes o Déclenchement par scripts o Suivi plus simple o Synchronisation de traitements o Configuration minimum SOS-Paris 16 Synchronisation o jobE est exécuté à la fin de job3 et jobD job1 job2 job3 job jobA jobB jobC SOS-Paris JobD 17 Evénement par traitement Catégorie Valeur name JobSchedulerSubmitEventJob title Soumission d’événements order yes description Include jobs/JobSchedulerSubmitEventJob.xml language Java java_class sos.scheduler.job.JobSchedulerSubmitEventJob param Scheduler_event_class=myClass param Scheduler_event_id=myId SOS-Paris 18 Ajout des évènements o Nouveaux traitements « events » o Job_event par l’assistant o Job ordonné o JobSchedulerSubmitEventJob o Paramètres o Scheduler_event_class: jobD o Scheduler_event_id: job3 o finish SOS-Paris 19 Modification des chaines o Insertion des traitements d’évènements o Modifier les différentes chaines pour y intégrer les traitements d’envoi d’évènements SOS-Paris 20 Principe Superviseur o Traitements déclencheurs o Traitements en attente SOS-Paris 21 Principe Superviseur o Traitements déclencheurs o Evènements envoyés sur le référentiel SOS-Paris o Traitements en attente 22 Principe Superviseur o Traitements déclencheurs o Traitements en attente o Traités par le service d’évènements SOS-Paris 23 Principe Superviseur o Traitements déclencheurs o Déclenchement du traitement ou de la chaine SOS-Paris 24 Définition de la règle o Par le jobEditor o Action : JobD o Events o Group : JobD o Events Name : jobD o Matching attributes o Event class o Event id o Commands o Scheduler/port o Command start_job o Supprimer les évènements ! SOS-Paris 25 Test o Sur l’ordonnanceur local o Les chaines sont lancées o Les évènements partent sur le référentiel o Dans la base de données o La table scheduler_events stockent les évènements o Sur le gestionnaire d’évènement o sos/events/scheduler_event_service traite les évènements SOS-Paris 26 Ligne de commande o Jobscheduler_event jobscheduler_event.cmd -x 10 -e MyEvent2 -i id -j job -s localhost -r 4445 Job Scheduler response: OK o Visualiser la prise en compte o Sos/event/scheduler_event_service adding event: MyEvent2 id .. adding event ...: scheduler id=supervisor, event class=MyEvent2, event id=id, exit code=10, job chain=, order id=, job=job SCHEDULER-843 Task has ended processing of Order sos/events/scheduler_event_service:6, state=start, on Scheduler http://localhost:4445 Job sos/events/scheduler_event_service terminated. SOS-Paris 27 Attributs Nom Description event-id L’id d’événement, associé à la classe, doit être unique exit-code L’exit code du script du traitement (<script>) event-class Constuit l’identifiant unique quand il est utilisé avec l’event-id (par exemple pour supprimer les événements d’une classe) Paramètre obligatoire job-name Nom du traitement job-chain Nom de la séquence order-id Identifiant de l’ordre name Nom de l’événement creation-date Heure de création de l’événement (par défaut « now ») expiry-date Heure d’expiration (par défaut 24h) SOS-Paris 28 Développement Traitements Evènements Fonctions SOS-Paris Surveillance 29 API o Interface de programmation complète o JAVA o Javascript o Perl o VB SOS-Paris 30 Javascript o Hello World o Job name : javascript o Language : javascript o Source code : spooler_log.info("hello world"); SOS-Paris 31 Méthodes optionnelles Objet Appel Sortie spooler_init Chargement du script True: spooler_open False: spooler_exit spooler_open Début de la tâche spooler_process Exécution de la tâche spooler_close Fin de la tâche spooler_on_success Tâche bien terminée spooler_on_error Tâche en erreur spooler_exit Fin SOS-Paris True: spooler_process False: spooler_close 32 Interactions o Indiquer un message en cas de succés o Prédefined functions : spooler_on_success o Source code : spooler_log.info("hello world"); function spooler_on_success(){ spooler_job.state_text = "Tout va bien !"; } SOS-Paris 33 Séquence o spooler_init o spooler_open o spooler process (spooler_task.order=1) o spooler process (spooler_task.order=2) o spooler process (spooler_task.order=3) o spooler_close o spooler_on_success ou spooler_on_error o spooler_exit SOS-Paris 34 Développement Traitements Evènements Fonctions SOS-Paris Surveillance 35 Surveillance o Contrôle en parallèle du traitement o Définir des paramètres en amont de la tâche o Mettre en place des mécanismes avant et/ou après chaque traitement o Définir des actions en cas de succès ou d’erreur o Ajouter des commandes à tous les niveaux du traitements SOS-Paris 36 Système o Utilisation des APIs o Différents langages disponibles o Fonctions prédéfinies o Spooler_process_before o Spooler_process_after o Spooler_task_before o Spooler_task_after SOS-Paris 37 Méthodes Méthode Description spooler_task_before Avant le lancement de la tâche spooler_process_before Avant l’exécution du traitement spooler_process_after Après l’exécution du traitement spooler_task_after Après l’exécution de la tâche SOS-Paris 38 Calcul de date o Initialise une variable avec la date du jour function spooler_task_before() { var today = yy = mm = dd = ""; today = new Date(); yy = today.getYear() + 1900; mm = today.getMonth() + 1; dd = today.getDate(); if (parseInt(mm) < 10) mm = "0" + mm; if (parseInt(dd) < 10) dd = "0" + dd; spooler_task.params.set_var("ftp_file_path", "^test_" + yy + "-" + mm + "-" + dd + "\.csv$" ); return true; } SOS-Paris 39 Synchronisation o Evènement en postprocessing o A partir d’un traitement standard o Pre-Postprocessing o Favorites : create_event_monitor o Classname devient : sos.scheduler.job.JobSchedulerSubmitEventMonitor o Params o scheduler_event_id o scheduler_event_class SOS-Paris 40