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