MVS JobLog Doctor V2 â Analyseur intelligent JES2 / JESMSGLG / JESYSMSG
Installer, tester et exploiter mvs_joblog_doctor_v2.py, un utilitaire autonome qui analyse les listings de jobs MVS/zOS, détecte les ABEND, les return codes, les messages critiques et produit une synthÚse exploitable.
Le bouton principal pointe explicitement vers /static/toolbox/mvs_joblog_doctor_v2.py. DĂ©pose ce script dans static/toolbox/ pour lâexposer depuis IDEO-Lab.
Les joblogs JES2/JES3, les sorties JESMSGLG, JESYSMSG, JESJCL, SYSOUT, SYSPRINT ou SYSABEND sont extrĂȘmement riches mais souvent difficiles Ă lire rapidement. Cette V2 transforme un listing texte en diagnostic structurĂ© : statut du job, steps, ABEND, root-cause candidates, timeline, score de risque, recommandations et exports.
Ce que le moteur analyse
| Domaine | Signaux analysés | Diagnostic produit |
|---|---|---|
| Job identity | JOBNAME, JOBID, $HASP373, $HASP395 | Début/fin du job, statut global, contexte JES. |
| Step execution | EXEC PGM=, IEF142I, IEF450I, IEF472I | Steps détectés, RC, ABEND, completion code, step fautif. |
| ABEND | S0C7, S0C4, S806, S913, SB37, U4038 | Cause probable, domaine technique, recommandations. |
| Datasets | DSN=, IEC, IGD, B37/D37/E37 | ProblĂšmes dâallocation, espace, catalogage, volumes. |
| Sécurité | ICH, RACF, access denied, S913 | AccÚs refusé, profil RACF, permission dataset ou programme. |
| Exploitation | Messages warning/error, familles de messages, timeline | Résumé humain, score de risque, evidence lines, root cause. |
Téléchargement des fichiers
Cette page doit fournir des liens explicites vers lâutilitaire Python, les fichiers de test et les rapports de dĂ©monstration. Pour IDEO-Lab, les fichiers doivent ĂȘtre placĂ©s sous /static/toolbox/.
Script autonome Python, sans dépendance externe, à lancer depuis Windows, Linux, macOS ou serveur batch.
Data exception COBOL / packed decimal / input layout mismatch.
Dataset space problem, allocation failure, volume or SPACE issue.
Security/RACF problem, access denied, protected dataset.
Arborescence static recommandée
static/
toolbox/
mvs_joblog_doctor_v2.py
sample_joblog_v2_s0c7.txt
sample_joblog_v2_sb37.txt
sample_joblog_v2_s913.txt
mvs_joblog_doctor_v2_guide.htmlInstallation de MVS JobLog Doctor V2
Le script est autonome et ne nĂ©cessite aucune base de donnĂ©es. Il suffit dâavoir Python disponible et un fichier texte reprĂ©sentant un joblog exportĂ© depuis JES/SDSF ou un sample synthĂ©tique.
1. Arborescence locale recommandée
mvs_joblog_lab/
bin/
mvs_joblog_doctor_v2.py
input/
sample_joblog_v2_s0c7.txt
sample_joblog_v2_sb37.txt
sample_joblog_v2_s913.txt
output/
reports/
csv/
json/Ce bouton pointe explicitement vers /static/toolbox/mvs_joblog_doctor_v2.py.
2. Installation Linux / macOS
mkdir -p mvs_joblog_lab/bin mvs_joblog_lab/input mvs_joblog_lab/output/reports mvs_joblog_lab/output/csv mvs_joblog_lab/output/json
cp mvs_joblog_doctor_v2.py mvs_joblog_lab/bin/
cp sample_joblog_v2_*.txt mvs_joblog_lab/input/
cd mvs_joblog_lab
python3 bin/mvs_joblog_doctor_v2.py --demo3. Installation Windows PowerShell
New-Item -ItemType Directory -Force mvs_joblog_lab\bin, mvs_joblog_lab\input, mvs_joblog_lab\output\reports, mvs_joblog_lab\output\csv, mvs_joblog_lab\output\json
Copy-Item .\mvs_joblog_doctor_v2.py .\mvs_joblog_lab\bin\
Copy-Item .\sample_joblog_v2_*.txt .\mvs_joblog_lab\input\
Set-Location .\mvs_joblog_lab
python .\bin\mvs_joblog_doctor_v2.py --demo4. Test de validation
python bin/mvs_joblog_doctor_v2.py input/sample_joblog_v2_s0c7.txt \
--html output/reports/sample_s0c7_report.html \
--json output/json/sample_s0c7_analysis.json \
--csv-issues output/csv/sample_s0c7_issues.csv \
--csv-steps output/csv/sample_s0c7_steps.csv \
--csv-messages output/csv/sample_s0c7_messages.csvFichiers input attendus
MVS JobLog Doctor V2 attend un fichier texte brut représentant un joblog ou une sortie associée. Les extensions possibles sont .txt, .log, .jes, .lst ou équivalent.
TĂ©lĂ©charger dâabord le script Python, puis lancer lâanalyse sur un fichier JES/JOBLOG.
1. Types de fichiers acceptés
| Source | Contenu typique | Usage |
|---|---|---|
JESMSGLG | Messages de début/fin job, informations JES/HASP. | Détecter start/end, jobname, jobid, statut global. |
JESYSMSG | Messages systÚme IEF/IEC/ICH/IGD/CEE liés aux steps. | Détecter RC, ABEND, dataset error, sécurité, allocation. |
JESJCL | JCL expandé, EXEC, DD, PROC, paramÚtres. | Identifier les steps, programmes et datasets. |
SYSOUT/SYSPRINT | Sorties applicatives, compiler, utilities, messages internes. | Compléter la root cause avec messages applicatifs. |
SYSABEND/SYSUDUMP/CEEDUMP | Dump ou informations Language Environment. | Contexte avancé pour ABEND ou U4038. |
2. Exemple minimal de JOBLOG
1 //PAYROLL1 JOB (ACCT),'PAYROLL NIGHTLY',CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID
$HASP373 PAYROLL1 STARTED - INIT 1 - CLASS A - SYS ZOS1
IEF403I PAYROLL1 - STARTED - TIME=22.15.02
IEF142I PAYROLL1 STEP010 - STEP WAS EXECUTED - COND CODE 0000
IEF142I PAYROLL1 STEP020 - STEP WAS EXECUTED - COND CODE 0004
IEF450I PAYROLL1 STEP030 PAYLOAD - ABEND=S0C7 U0000 REASON=00000000
CEE3207S The system detected a data exception.
$HASP395 PAYROLL1 ENDED - RC=00123. Samples disponibles
ContrĂŽle numeric fields, copybook, packed decimal, feed applicatif.
ContrĂŽle SPACE, volumes, SMS, allocation et dataset full.
ContrÎle RACF, permission dataset, accÚs refusé, profil sécurité.
--redact avant de partager un rapport.Utilisation quotidienne
1. Mode démo intégré
Trois modes dĂ©mo permettent de tester lâoutil sans fichier externe.
python mvs_joblog_doctor_v2.py --demo
python mvs_joblog_doctor_v2.py --demo-space
python mvs_joblog_doctor_v2.py --demo-security2. Analyse simple dâun joblog
python mvs_joblog_doctor_v2.py input/sample_joblog_v2_s0c7.txt3. Analyse avec tous les exports
python mvs_joblog_doctor_v2.py input/sample_joblog_v2_s0c7.txt \
--json output/json/sample_s0c7_analysis.json \
--csv-issues output/csv/sample_s0c7_issues.csv \
--csv-steps output/csv/sample_s0c7_steps.csv \
--csv-messages output/csv/sample_s0c7_messages.csv \
--html output/reports/sample_s0c7_report.html4. Mode anonymisé
Le paramÚtre --redact masque les noms de datasets dans les sorties pour éviter de diffuser des informations sensibles.
python mvs_joblog_doctor_v2.py input/production_joblog.txt \
--redact \
--html output/reports/production_joblog_redacted.html \
--json output/json/production_joblog_redacted.json5. Mode batch strict
python mvs_joblog_doctor_v2.py input/nightly_joblog.txt \
--html output/reports/nightly_joblog_report.html \
--csv-issues output/csv/nightly_joblog_issues.csv \
--fail-on-criticalParamĂštres de ligne de commande
1. ParamĂštres dâentrĂ©e et de sortie
| ParamĂštre | Description | Exemple |
|---|---|---|
input_file | Fichier joblog/JES texte Ă analyser. | input/joblog.txt |
--demo | Lance le scénario intégré S0C7. | --demo |
--demo-space | Lance le scénario intégré SB37 / space abend. | --demo-space |
--demo-security | Lance le scénario intégré S913 / sécurité. | --demo-security |
--json | Exporte lâanalyse complĂšte en JSON. | --json output/analysis.json |
--csv-issues | Exporte les anomalies détectées. | --csv-issues output/issues.csv |
--csv-steps | Exporte les steps détectés, RC, ABEND et programmes. | --csv-steps output/steps.csv |
--csv-messages | Exporte les messages classifiés par famille. | --csv-messages output/messages.csv |
--html | GénÚre le rapport HTML. | --html output/report.html |
2. ParamĂštres dâanalyse et de gouvernance
| ParamÚtre | Effet | Usage recommandé |
|---|---|---|
--profile | Profil dâanalyse : production, batch, compiler, security, training. | DiffĂ©rencier un job applicatif, compilateur, audit sĂ©curitĂ© ou formation. |
--redact | Masque les noms de datasets dans les sorties. | Partage externe, ticket support, rapport anonymisé. |
--fail-on-critical | Retourne un code erreur si une issue critique existe. | Batch, CI, supervision, contrĂŽle nocturne. |
--fail-on-error | Retourne un code erreur si une issue error ou critical existe. | ContrÎle plus strict, pipeline qualité. |
--rc-warning | Seuil warning pour les return codes. | Par défaut 4. |
--rc-error | Seuil error pour les return codes. | Par défaut 8. |
--rc-critical | Seuil critical pour les return codes. | Par défaut 12. |
--evidence-limit | Nombre de lignes dâĂ©vidence affichĂ©es en console par root cause. | RĂ©duire le bruit dans les sorties batch. |
3. Exemple avec seuils personnalisés
python mvs_joblog_doctor_v2.py input/compiler_joblog.txt \
--profile compiler \
--rc-warning 4 \
--rc-error 8 \
--rc-critical 12 \
--html output/reports/compiler_joblog_report.htmlExemples dâutilisation
ScĂ©nario 1 â Incident S0C7 sur batch applicatif
Cas classique COBOL : data exception, mismatch entre copybook et fichier, champ packed/zoned decimal invalide.
python mvs_joblog_doctor_v2.py input/sample_joblog_v2_s0c7.txt \
--profile production \
--html output/reports/s0c7_report.html \
--csv-issues output/csv/s0c7_issues.csvScĂ©nario 2 â SB37 / problĂšme dâespace dataset
Cas exploitation : dataset plein, mauvaise allocation SPACE, volume saturé, SMS storage class à vérifier.
python mvs_joblog_doctor_v2.py input/sample_joblog_v2_sb37.txt \
--profile batch \
--html output/reports/sb37_report.html \
--csv-issues output/csv/sb37_issues.csvScĂ©nario 3 â S913 / problĂšme RACF
Cas sécurité : accÚs refusé à un dataset, permission RACF manquante, profil protégé ou user non autorisé.
python mvs_joblog_doctor_v2.py input/sample_joblog_v2_s913.txt \
--profile security \
--redact \
--html output/reports/s913_redacted_report.html \
--json output/json/s913_redacted_analysis.jsonScĂ©nario 4 â ExĂ©cution nocturne automatisĂ©e
0 5 * * * /opt/mvs-joblog/bin/python /opt/mvs-joblog/mvs_joblog_doctor_v2.py \
/data/joblogs/nightly_joblog.txt \
--html /var/www/reports/mvs/nightly_joblog_report.html \
--csv-issues /var/log/mvs/nightly_joblog_issues.csv \
--json /var/log/mvs/nightly_joblog_analysis.json \
--fail-on-critical >> /var/log/mvs/mvs_joblog_doctor.log 2>&1ABEND catalog â Lecture opĂ©rationnelle
La V2 embarque un dictionnaire dâABEND pour transformer un code brut en explication opĂ©rationnelle. Cette table prĂ©sente les cas prioritaires couverts par le moteur.
| Code | Lecture rapide | Zone probable | Action recommandée |
|---|---|---|---|
S0C7 | Data exception | Données numériques COBOL | ContrÎler copybook, packed decimal, feed amont, record fautif. |
S0C4 | Protection exception | Adressage mémoire | ContrÎler pointeurs, linkage section, bounds, dump registers. |
S806 | Load module not found | STEPLIB/JOBLIB/LNKLST | Vérifier EXEC PGM, bibliothÚques, module load, APF si nécessaire. |
S913 | Security violation | RACF / dataset access | Vérifier user, dataset profile, access list, classe RACF. |
SB37 | Dataset space exhausted | Allocation disque | ContrĂŽler SPACE, volume, secondary allocation, SMS storage class. |
SD37 | No secondary extent | Allocation dataset | Augmenter allocation ou définir secondary quantity. |
SE37 | Extent/volume limit | Volume/dataset growth | Réviser allocation, multi-volume, SMS policies. |
S322 | CPU time limit exceeded | Runtime / boucle / volumĂ©trie | ContrĂŽler TIME, boucle applicative, explosion volume, requĂȘtes DB2. |
U4038 | Language Environment user abend | COBOL/LE runtime | Lire messages CEE, SYSOUT applicatif et cause précédente. |
Exports et exploitation des résultats
Vue lisible : statut, score, root causes, issues, steps, messages, datasets et evidence lines.
Format complet pour API, ingestion SQL, archivage ou comparaison automatique.
Une ligne par anomalie, avec sévérité, code, contexte et recommandation.
Une ligne par step, avec programme, RC, ABEND et statut.
Messages classifiés par famille : HASP, IEF, IEC, ICH, CEE, IDC, DFH, DSN, etc.
Mode batch strict via --fail-on-critical ou --fail-on-error.
Exemple de synthĂšse console
MVS JobLog Doctor V2
Status : FAILED
Highest severity : CRITICAL
Risk score : 100/100
Max RC : 12
Abends : S0C7
Steps : 3
Issues : 8
Datasets : 6
ROOT CAUSE CANDIDATE
S0C7 - Data exception
Area: Data quality / COBOL numeric fields
Recommendation: Validate input file layout against the COBOL copybook.Idée de table SQL pour historisation
CREATE TABLE mvs_joblog_run (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
job_name VARCHAR(32),
job_id VARCHAR(32),
status VARCHAR(32),
highest_severity VARCHAR(16),
risk_score INTEGER,
max_rc INTEGER,
abend_codes VARCHAR(255),
issue_count INTEGER,
dataset_count INTEGER,
report_path VARCHAR(500),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);Dépannage et bonnes pratiques
1. Le script ne détecte pas le job ou les steps
| Cause possible | Correction |
|---|---|
| Le fichier nâest pas un texte brut. | Exporter depuis SDSF/JES en format texte, pas en PDF image. |
| Les lignes ont été tronquées ou reformattées. | Conserver la largeur fixe et éviter Word/Excel avant parsing. |
Le joblog ne contient pas JESMSGLG ou JESYSMSG. | Récupérer les sorties JES complÚtes du job. |
| Format site spécifique ou messages custom. | Ajouter une rÚgle dédiée dans le parser V2 ou enrichir le dictionnaire de patterns. |
2. Trop dâissues remontĂ©es
Certains joblogs contiennent beaucoup de warnings applicatifs. Utiliser --profile, ajuster les seuils de RC, et exploiter le CSV issues pour filtrer les messages réellement critiques.
python mvs_joblog_doctor_v2.py input/joblog.txt \
--profile training \
--rc-warning 8 \
--rc-error 12 \
--rc-critical 16 \
--html output/reports/joblog_training_report.html3. Check-list avant partage dâun vrai joblog
- Utiliser
--redactpour masquer les datasets dans les rapports. - Supprimer ou anonymiser user IDs, jobnames sensibles, applications, volumes et environnements.
- Conserver une copie brute interne pour vérifier la fidélité du parsing.
- Garder le contexte : date, fenĂȘtre batch, scheduler, application, incident utilisateur.
- Ne jamais conclure uniquement sur lâABEND final : lire les messages prĂ©cĂ©dents.
