Restauration JIL

Sauvegarde

La sauvegarde est réalisée quotidiennement par une boite ’’’Extract’’’, cette boite contient 2 types de traitements :

  • ExtractStatus qui contient les statuts des traitement au moment de la sauvegarde
  • ExtractJIL qui contient le code JIL des traitements

Il existe un binôme global nommé ALL (autorep -J %) et un binôme pour chaque application. Ces traitements génèrent un fichier pour chaque jour de la semaine (ex : ALL_Thursday.jil et ALL_Thursday.status) ce qui permet de conserver une semaine de rétention. Ces fichiers sont sauvegardés dans le répertoire /home/autosys/test/.

Le résultat de la sauvegarde pour le Jeudi 28 Février est le suivant :

-rwxr-xr-x 1 autosys autosys 3806585 févr. 28 17:28 /home/autosys/test/ALL_Thursday.jil
-rwxr-xr-x 1 autosys autosys  816992 févr. 28 17:28 /home/autosys/test/ALL_Thursday.status
-rwxr-xr-x 1 autosys autosys  711971 févr. 28 17:28 /home/autosys/test/AP_Thursday.jil
-rwxr-xr-x 1 autosys autosys  153544 févr. 28 17:28 /home/autosys/test/AP_Thursday.status
-rwxr-xr-x 1 autosys autosys  622012 févr. 28 17:28 /home/autosys/test/AT_Thursday.jil
-rwxr-xr-x 1 autosys autosys  133605 févr. 28 17:28 /home/autosys/test/AT_Thursday.status
-rwxr-xr-x 1 autosys autosys  171800 févr. 28 17:28 /home/autosys/test/FP_Thursday.jil
-rwxr-xr-x 1 autosys autosys   36069 févr. 28 17:28 /home/autosys/test/FP_Thursday.status
-rwxr-xr-x 1 autosys autosys   82923 févr. 28 17:29 /home/autosys/test/FT_Thursday.jil
-rwxr-xr-x 1 autosys autosys   18162 févr. 28 17:29 /home/autosys/test/FT_Thursday.status
-rwxr-xr-x 1 autosys autosys  425616 févr. 28 17:29 /home/autosys/test/GP_Thursday.jil
-rwxr-xr-x 1 autosys autosys   89663 févr. 28 17:29 /home/autosys/test/GP_Thursday.status
-rwxr-xr-x 1 autosys autosys  336555 févr. 28 17:29 /home/autosys/test/GT_Thursday.jil
-rwxr-xr-x 1 autosys autosys   69851 févr. 28 17:29 /home/autosys/test/GT_Thursday.status
-rwxr-xr-x 1 autosys autosys   49028 févr. 28 17:29 /home/autosys/test/VM_Thursday.jil
-rwxr-xr-x 1 autosys autosys   11812 févr. 28 17:29 /home/autosys/test/VM_Thursday.status
-rwxr-xr-x 1 autosys autosys  213455 févr. 28 17:29 /home/autosys/test/SE_Thursday.jil
-rwxr-xr-x 1 autosys autosys   45086 févr. 28 17:29 /home/autosys/test/SE_Thursday.status

Restauration

La restauration se fait par le script restore.pl actuellement dans le répertoire ’’’$AUTOSYS/restore’’’ du serveur Autosys.

Le script demande 4 arguments :

  • J : Le périmètre des jobs (généralement une application)
  • F : Le fichier contenant les traitements sauvegardés au format JIL
  • S : Les statuts des traitements au moment de la sauvegarde
  • T : La date et l’heure de la restauration

Il génère un Jil sur la sortie standard et éventuellement un script, contenant les commandes à appliquer, sur la sortie d’erreur. ’’Le script peut être exécuté autant de fois que l’on voit, les modifications sont réalisées par l’utilisation des fichiers générés.’’

Heure courante

Il est 18h, je prends ma dernière sauvegarde en indiquant l’heure actuelle : perl restore.pl -J SE% -B SE.jil -S SE.status -T "2013/02/28 18:00:00"

Le résultat sera assez similaire à cela :

/***********************************************************
* SAUVEGARDE                                               *
*----------------------------------------------------------*
* Sauvegarde:  2013/02/27 16:33:14
* Statuts:     SE.status
* Definitions: SE.jil
* Objets:      176
*==========================================================*
* AUDIT                                                    *
*----------------------------------------------------------*
* Commande: autotrack -v -J SE% -F "2013/02/27 16:33:14"
* Changements: 45
* Evenements:  11
*==========================================================*
* ETAT ACTUEL                                              *
*----------------------------------------------------------*
* Objets:      176
*==========================================================*
* JIL                                                      *
*----------------------------------------------------------*/

La sauvegarde date du 27 Février 2013 à laquelle on a appliqué toutes les modifications conservées dans l’audit (45 changements et 11 évènements), le résultat est strictement équivalent à l’état actuel, il n’y a donc rien à modifier.

Remontée dans le temps

Le problème a eu lieu vers 16:20, je remonte le temps vers cette heure là :

perl restore.pl -J SE% -B SE.jil -S SE.status -T "2013/02/28 16:20:00"

/* SE.ADMN.JOB.ExtractStatusSE (SU)
  2013/02/27 16:33:14  |+ Sauvegarde (statut SU)
--2013/02/28 16:20:12--|- Modifications (audit)
                       |  * command: [autorep -J SE% > $EXPIMP/SE.status] -> [autorep -J SE% > $EXPIMP/SE_`date +%A`.status]
                       |  * condition: [s(SE.ADMN.JOB.ExtractJilSE)] -> [1]
--2013/02/28 16:26:07--|- Evenement (audit)
                       |   >> sendevent "-E" "FORCE_STARTJOB" "-J" "SE.ADMN.JOB.ExtractStatusSE"
  2013/02/28 18:09:11  |+ Statut actuel SU
                       |    command : autorep -J SE% > $EXPIMP/SE_`date +%A`.status
*/
update_job: SE.ADMN.JOB.ExtractStatusSE
command: autorep -J SE% > $EXPIMP/SE.status

On obtient le chronogramme des modifications à partir de ma sauvegarde du 2013/02/27 16:33:14. Une modification a été exécutée à 16:20:12, comme je souhaite revenir à la photo de 16h20, je ne prends pas en compte tout ce qui s’est passé après. Le changement proposé est de revenir en arrière pour remettre la bonne commande.

’’Note : Le champ command indiquant [1] est un bug d’affichage de l’autotrack, il n’est pas pris en compte.’’

Déplacement du curseur

On voit des évènement qui ont été exécutés vers 16:25, on va revenir vers cette heure pour identifier d’autres changements :

perl restore.pl -J SE% -B SE.jil -S SE.status -T "2013/02/28 16:25:00"

/* SE.ADMN.JOB.ExtractJilHP (OI)
  2013/02/27 16:33:14  |+ Sauvegarde (statut OI)
  2013/02/28 16:20:10  |+ Modifications (audit)
                       |  * command: [autorep -J HP% -q > $EXPIMP/HP.jil] -> [autorep -J HP% -q > $EXPIMP/HP_`date +%A`.jil]
                       |  * condition: [s(SE.ADMN.JOB.ExtractJilST)] -> [1]
                       |  * condition: [1] -> [s(SE.ADMN.JOB.ExtractJilST)]
--2013/02/28 16:25:30--|- Evenement (audit)
                       |   >> sendevent "-J" "SE.ADMN.JOB.ExtractJilHP" "-E" "JOB_OFF_ICE" "-C" "ixpAdmin:"
  2013/02/28 18:17:16  |+ Statut actuel SU
>> Changement de status SU -> OI
*/

sendevent -J SE.ADMN.JOB.ExtractJilHP -E JOB_ON_ICE

Un JOB_OFF_ICE a ete exécuté à 16:25:30, si je veux retrouver l’état de 16:25, un JOB_ON_ICE est proposé pour retrouver le statut à l’heure de la sauvegarde.

Traitements temporaire

Certains traitements sont créés à la volée et immédiatement supprimés (Ex : cas des traitements auto_delete). Il n’apparaitront ni à la sauvegarde, ni dans l’état en cours. Il est tout de même possible de les retrouver si on connaît l’heure de suppression. Exemple avec les traitements parallèles :

autorep -J AT%Resume%

Job Name                                                         Last Start           Last End             ST Run/Ntry Pri/Xit
________________________________________________________________ ____________________ ____________________ __ ________ _______
AT.ERIC.BOX.Resume                                               2013/02/28 10:42:03  2013/02/28 11:17:14  SU 107354/2 0
 AT.ERIC.JOB.ResumePrepa                                         2013/02/28 10:42:04  2013/02/28 10:42:27  SU 107354/2 0
 AT.ERIC.JOB.ResumeRepartition                                   2013/02/28 11:00:33  2013/02/28 11:00:35  SU 107354/3 0
 AT.ERIC.BOX.ResumeParallel                                      2013/02/28 11:00:36  2013/02/28 11:17:08  SU 107354/2 0
  AT.ERIC.JOB.Resume_Modele                                      -----                2013/02/28 11:17:09  SU 0/0      0
 AT.ERIC.JOB.ResumeNet2oyage                                     2013/02/28 11:17:08  2013/02/28 11:17:09  SU 107354/2 0
 AT.ERIC.JOB.ResumeNettoyage                                     2013/02/28 11:17:09  2013/02/28 11:17:13  SU 107354/2 0
 AT.ERIC.JOB.ResumeConcatenate                                   2013/02/28 11:17:13  2013/02/28 11:17:14  SU 107354/2 0

Les traitements ont certainement été présent pendant l’exécution de la boite AT.ERIC.BOX.ResumeParallel, donc entre 11:00 et 11:17. On exécute la commande en utilisant les fichiers de sauvegarde AT : perl restore.pl -J AT% -B /home/autosys/test/AT.jil -S /home/autosys/test/AT.status -T "2013/02/28 11:10:00"

On retrouve les modifications des boites et la création des traitements parallèles :

/***********************************************************
* SAUVEGARDE                                               *
*----------------------------------------------------------*
* Sauvegarde:  2013/02/28 06:04:23
* Statuts:     /home/autosys/test/AT.status
* Definitions: /home/autosys/test/AT.jil
* Objets:      1050
*==========================================================*
* AUDIT                                                    *
*----------------------------------------------------------*
* Commande: autotrack -v -J AT% -F "2013/02/28 06:04:23"
* Changements: 3
* Evenements:  5
*==========================================================*
* ETAT ACTUEL                                              *
*----------------------------------------------------------*
* Objets:      1050
*==========================================================*
* JIL                                                      *
*----------------------------------------------------------*/

/* AT.ERIC.JOB.Resum__TEST_1_1 ()
  2013/02/28 11:00:35  |+ Modifications (audit)
                       |    job_type: [CMD]
                       |    alarm_if_fail: [1]
                       |    box_name: [AT.ERIC.BOX.ResumeParallel]
                       |    command: [echo test]
                       |    date_conditions: [0]
                       |    job_load: [5]
                       |    machine: [TEST]
                       |    n_retrys: [1]
                       |    owner: [autobatch]
                       |    permission: [gx,wx,mx]
                       |    priority: [0]
                       |    profile: [MONTEST]
                       |    std_err_file: [c\:\temp\%AUTO_JOB_NAME%_%AUTORUN%.err]
                       |    std_out_file: [c\:\temp\%AUTO_JOB_NAME%_%AUTORUN%.out]
  2013/02/28 11:00:35  |+ Evenement (audit)
                       |   >> /opt/CA/WorkloadAutomationAE/autosys/bin/sendevent "-E" "STARTJOB" "-J" "AT.ERIC.JOB.Resum__TEST_1_1"
--2013/02/28 11:17:09--|- Suppression (audit)
*/
insert_job: AT.ERIC.JOB.Resum__TEST_1_1
alarm_if_fail: 1
box_name: AT.ERIC.BOX.ResumeParallel
command: echo test
date_conditions: 0
job_load: 5
job_type: CMD
machine: TEST
n_retrys: 1
owner: autobatch
permission: gx,wx,mx
priority: 0
profile: MONTEST
std_err_file: c\:\temp\%AUTO_JOB_NAME%_%AUTORUN%.err
std_out_file: c\:\temp\%AUTO_JOB_NAME%_%AUTORUN%.out

/* AT.ERIC.JOB.Resume_Modele (SU)
  2013/02/28 06:04:23  |+ Sauvegarde (statut SU)
  2013/02/28 11:00:34  |+ Suppression (audit)
--2013/02/28 11:17:09--|- Modifications (audit)
                       |    job_type: [CMD]
                       |    alarm_if_fail: [1]
                       |    box_name: [AT.ERIC.BOX.ResumeParallel]
                       |    command: [echo test]
                       |    date_conditions: [0]
                       |    job_load: [5]
                       |    machine: [TEST]
                       |    n_retrys: [1]
                       |    owner: [autobatch]
                       |    permission: [gx,wx,mx]
                       |    priority: [0]
                       |    profile: [MONTEST]
                       |    std_err_file: [%CTRT%\log\%AUTO_JOB_NAME%_%AUTORUN%.err]
                       |    std_out_file: [%CTRT%\log\%AUTO_JOB_NAME%_%AUTORUN%.out]
--2013/02/28 11:17:09--|- Evenement (audit)
                       |   >> /opt/CA/WorkloadAutomationAE/autosys/bin/sendevent "-E" "CHANGE_STATUS" "-J" "AT.ERIC.JOB.Resume_Modele" "-s" "SUCCESS"
  2013/02/28 18:33:23  |+ Statut actuel SU
                       |    job_type : CMD
                       |    box_name : AT.ERIC.BOX.ResumeParallel
                       |    command : echo test
                       |    machine : TEST
                       |    owner : autobatch
                       |    permission : gx,wx,mx
                       |    date_conditions : 0
                       |    n_retrys : 1
                       |    std_out_file : %CTRT%\log\%AUTO_JOB_NAME%_%AUTORUN%.out
                       |    std_err_file : %CTRT%\log\%AUTO_JOB_NAME%_%AUTORUN%.err
                       |    alarm_if_fail : 1
                       |    profile : MONTEST
                       |    job_load : 5
*/
update_job: AT.ERIC.JOB.Resume_Modele
alarm_if_fail:
box_name:
command:
date_conditions:
job_load:
job_type:
machine:
n_retrys:
owner:
permission:
profile:
std_err_file:
std_out_file:

/* AT.ERIC.JOB.Resum__TEST_2_1 ()
  2013/02/28 11:00:35  |+ Modifications (audit)
                       |    job_type: [CMD]
                       |    alarm_if_fail: [1]
                       |    box_name: [AT.ERIC.BOX.Resum eParallel]
                       |    command: [echo test]
                       |    date_conditions: [0]
                       |    job_load: [5]
                       |    machine: [TEST]
                       |    n_retrys: [1]
                       |    owner: [autobatch]
                       |    permission: [gx,wx,mx]
                       |    priority: [0]
                       |    profile: [MONTEST]
                       |    std_err_file: [c\:\temp\%AUTO_JOB_NAME%_%AUTORUN%.err]
                       |    std_out_file: [c\:\temp\%AUTO_JOB_NAME%_%AUTORUN%.out]
  2013/02/28 11:00:35  |+ Evenement (audit)
                       |   >> /opt/CA/WorkloadAutomationAE/autosys/bin/sendevent "-E" "STARTJOB" "-J" "AT.ERIC.JOB.Resum__TEST_2_1"
--2013/02/28 11:17:09--|- Suppression (audit)
*/
insert_job: AT.ERIC.JOB.Resum__TEST_2_1
alarm_if_fail: 1
box_name: AT.ERIC.BOX.ResumeParallel
command: echo test
date_conditions: 0
job_load: 5
job_type: CMD
machine: TEST
n_retrys: 1
owner: autobatch
permission: gx,wx,mx
priority: 0
profile: MONTEST
std_err_file: c\:\temp\%AUTO_JOB_NAME%_%AUTORUN%.err
std_out_file: c\:\temp\%AUTO_JOB_NAME%_%AUTORUN%.out

Article

> Ordonnanceurs > Les incontournables > Autosys > Développement

Il peut être utile de comparer l’état des traitements avec une situation antérieure afin de corriger une situation. Pour cela, il faut disposer d’une sauvegarde correspondant à l’état que l’on considère stable afin de la comparer à l’état courant. Suivant la date de sauvegarde, l’état des traitements peut être beaucoup plus anciens, il est alors utile de pouvoir rejouer les changements jusqu’à une heure plus proche du problème. Plus cette heure sera proche et moins il sera nécessaire d’effectuer des changements, ce qui réduira d’autant l’impact de la correction.

Mise à jour :6 juin 2013
Visites : 2122
Auteur : E. Angenault
Site : Angenault.net

Liens commerciaux

Accès rapide

Article d’actualité publié en première page du site.

CA rachète PGTI
PGTI édite iXp une interface web pour Autosys ainsi qu’iDash, un tableau de bord. Cette acquisition permet à CA d’ajouter une interface de plus à la dernière édition d’Autosys.
Changement de propriétaire
Webmaster d’ordonnancement.org depuis plus de 8 ans et consultant en ordonnancement depuis bien plus longtemps, il était temps que je change de rôle pour me consacrer à un produit unique. Je serai désormais un simple contributeur au même titre (...)
Critères d’un choix d’ordonnanceur
Choix d’ordonnanceur a été mis en ligne en Octobre 2010 et depuis cette date ce sont plus de 500 études qui ont été réalisées et qui ont permis d’identifier les critères récurrents. L’idée n’est pas de dégager les tendances ou (...)
Evolutions de l’ordonnancement par Gartner Research
Le Gartner offre un panorama des offres d’automatisation à travers son fameux Magic Quadrant qui classe les éditeurs suivant 2 axes : sa capacité opérationnelle et sa vision d’ensemble.
Production Open Source
Malgré une offre open source riche en France et de nombreuses sociétés compétentes dans ce domaine, l’ordonnancement et plus généralement faisait office de parent pauvre. Une société propose aujourd’hui des solutions open source pour la (...)

Autosys

Anciennement Platinum, Autosys est l’ordonnanceur de CA (anciennement Computer Associates).