Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

SMF Cost & Activity Analyzer V2 – Analyseur coĂ»ts, activitĂ© et chargeback mainframe

Objectif du guide

Installer, tester et exploiter smf_cost_activity_analyzer_v2.py, un utilitaire autonome qui analyse des exports SMF normalisĂ©s en CSV, JSON ou JSONL pour produire une synthĂšse activitĂ©, coĂ»ts, capacitĂ©, chargeback, comparaison baseline et dĂ©tection d’anomalies.

TĂ©lĂ©charger l’utilitaire SMF Cost & Activity Analyzer V2

Le bouton principal pointe explicitement vers /static/toolbox/smf_cost_activity_analyzer_v2.py. DĂ©pose ce script dans static/toolbox/ pour l’exposer depuis IDEO-Lab.

SMF est la matiĂšre premiĂšre historique de l’observabilitĂ© mainframe : activitĂ© jobs, accounting, CPU, zIIP, elapsed time, EXCP, DB2 getpages, API z/OS Connect, service classes, departments, chargeback et signaux d’incident. Cette V2 ne lit pas les records SMF binaires bruts : elle travaille sur des exports dĂ©jĂ  convertis et normalisĂ©s.

Normalize
Lecture CSV, JSON et JSONL avec alias de colonnes et modĂšle de record commun.
Analyze
Agrégations jobs, users, applications, departments, service classes et hourly buckets.
Chargeback
Estimation de coût configurable, baseline comparison et exports pour FinOps mainframe.

Ce que le moteur analyse

DomaineSignaux analysésDiagnostic produit
Accounting jobsrecord_type, job_name, user_id, account, departmentTop jobs, top users, top departments, chargeback par entité.
CPU / zIIPcpu_seconds, ziip_seconds, offload ratioJobs CPU-heavy, zIIP offload faible, coût CPU estimé.
I/O / EXCPexcp_count, elapsed/cpu ratio, workload typeCandidats I/O-heavy, wait-bound workloads, batch window pressure.
DB2db2_getpages, service class, elapsed timeJobs DB2 coûteux, getpages élevés, risque de régression SQL.
API / z/OS Connectapi_requests, api_avg_ms, transaction countLatence API, coût par application, croissance de trafic.
Baseline compare--compare-base, croissance CPU/coût/latenceDétection de dérive avant/aprÚs livraison ou changement batch.
Positionnement : cette V2 est pensée pour FinOps mainframe, capacity planning, audit batch, refacturation interne, tableaux de bord de production et analyse avant/aprÚs changement applicatif ou infrastructure.
Important : les fichiers input attendus sont des exports SMF dĂ©jĂ  convertis. Pour lire des records binaires SMF, il faut d’abord passer par un extracteur site, un outil vendor, un programme REXX/COBOL, ou un pipeline de conversion vers CSV/JSONL.

Téléchargement des fichiers

Cette page fournit des liens explicites vers l’utilitaire Python, les samples, le pack complet et les rapports de dĂ©monstration. Pour IDEO-Lab, les fichiers doivent ĂȘtre placĂ©s sous /static/toolbox/.

Utilitaire principal

Script autonome Python, sans dépendance externe, utilisable en mode démo, batch, export ou comparaison baseline.

Sample activity

Fichier courant pour analyse complĂšte : jobs, users, apps, departments, service classes.

Download activity CSV

Sample baseline

Baseline de comparaison pour détecter croissance CPU, coût et latence API.

Download baseline CSV

Pack ZIP

Script, samples, exports et rapports générés pour tests rapides.

Download ZIP

Arborescence static recommandée

static files
static/
  toolbox/
    smf_cost_activity_analyzer_v2.py
    smf_cost_activity_analyzer_v2_pack.zip
    sample_smf_v2_activity.csv
    sample_smf_v2_baseline.csv
    smf_cost_activity_analyzer_v2_guide.html
ContrĂŽle visuel : les boutons de tĂ©lĂ©chargement doivent ĂȘtre visibles en haut de la page, dans l’onglet TĂ©lĂ©chargement, dans l’onglet Installation et dans la section Fichiers input.

Installation de SMF Cost & Activity Analyzer V2

Le script est autonome et ne nĂ©cessite aucune base de donnĂ©es. Il suffit d’avoir Python disponible et un export SMF normalisĂ© en CSV, JSON ou JSONL.

1. Arborescence locale recommandée

Project tree
smf_cost_lab/
  bin/
    smf_cost_activity_analyzer_v2.py
  input/
    sample_smf_v2_activity.csv
    sample_smf_v2_baseline.csv
  output/
    reports/
    csv/
    json/
Lien direct du script Ă  installer

Ce bouton pointe explicitement vers /static/toolbox/smf_cost_activity_analyzer_v2.py.

2. Installation Linux / macOS

Linux / macOS setup
mkdir -p smf_cost_lab/bin smf_cost_lab/input smf_cost_lab/output/reports smf_cost_lab/output/csv smf_cost_lab/output/json
cp smf_cost_activity_analyzer_v2.py smf_cost_lab/bin/
cp sample_smf_v2_activity.csv smf_cost_lab/input/
cp sample_smf_v2_baseline.csv smf_cost_lab/input/
cd smf_cost_lab
python3 bin/smf_cost_activity_analyzer_v2.py --demo

3. Installation Windows PowerShell

Windows PowerShell setup
New-Item -ItemType Directory -Force smf_cost_lab\bin, smf_cost_lab\input, smf_cost_lab\output\reports, smf_cost_lab\output\csv, smf_cost_lab\output\json
Copy-Item .\smf_cost_activity_analyzer_v2.py .\smf_cost_lab\bin\
Copy-Item .\sample_smf_v2_activity.csv .\smf_cost_lab\input\
Copy-Item .\sample_smf_v2_baseline.csv .\smf_cost_lab\input\
Set-Location .\smf_cost_lab
python .\bin\smf_cost_activity_analyzer_v2.py --demo

4. Test de validation

Validation command
python bin/smf_cost_activity_analyzer_v2.py input/sample_smf_v2_activity.csv \
  --compare-base input/sample_smf_v2_baseline.csv \
  --html output/reports/sample_smf_report.html \
  --json output/json/sample_smf_analysis.json \
  --csv-jobs output/csv/sample_smf_jobs.csv \
  --csv-users output/csv/sample_smf_users.csv \
  --csv-apps output/csv/sample_smf_applications.csv \
  --csv-departments output/csv/sample_smf_departments.csv \
  --csv-service-classes output/csv/sample_smf_service_classes.csv \
  --csv-hourly output/csv/sample_smf_hourly.csv \
  --csv-findings output/csv/sample_smf_findings.csv \
  --csv-compare output/csv/sample_smf_compare.csv
Résultat attendu : le sample doit produire un rapport HTML, une estimation de coût, des top jobs/apps/users, des findings, une analyse horaire et une comparaison baseline/current.

Fichiers input attendus

SMF Cost & Activity Analyzer V2 accepte des exports CSV, JSON ou JSONL. Le format doit déjà contenir des champs normalisés ou des alias proches. Le script ne lit pas directement le binaire SMF produit par z/OS.

Utilitaire nécessaire pour analyser les inputs

TĂ©lĂ©charger d’abord le script Python, puis lancer l’analyse sur le fichier SMF normalisĂ©.

1. Colonnes principales recommandées

ColonneRĂŽleExemple
timestampDate/heure de l’activitĂ©.2026-05-22T02:00:00
record_typeType SMF ou famille logique.30, 72, 110, 123
job_name, job_idIdentification job / address space.PAYROLL1, JOB03197
user_id, account, departmentChargeback et refacturation interne.FINOPS, PAYROLL
application, service_classAgrégation métier et WLM.PAYMENTS, BATCHHI
cpu_seconds, ziip_secondsMesure CPU généraliste et zIIP.480.5, 95.0
elapsed_seconds, queue_time_secondsTemps elapsed et attente.3600, 180
excp_count, db2_getpagesI/O et activité DB2.1250000, 2500000
api_requests, api_avg_msMesure API / z/OS Connect.18000, 750
max_rc, abend_codeSignal incident ou batch failed.12, S0C7

2. Exemple minimal de CSV

sample_smf_v2_activity.csv
timestamp,record_type,system_id,lpar,job_name,job_id,user_id,department,application,service_class,workload_type,cpu_seconds,ziip_seconds,elapsed_seconds,excp_count,db2_getpages,api_requests,api_avg_ms,max_rc,abend_code,memory_mb,queue_time_seconds
2026-05-22T02:00:00,30,ZOS1,LPAR1,PAYROLL1,JOB03197,PAYUSR,FINANCE,PAYROLL,BATCHHI,BATCH,980.0,120.0,4200.0,1250000,2400000,0,0,12,S0C7,1024,90
2026-05-22T02:30:00,123,ZOS1,LPAR1,APIORD01,STC04412,APIUSR,DIGITAL,ORDER_API,ONLINEHI,API,120.0,380.0,900.0,45000,120000,18000,950,0,,768,25

3. Samples disponibles

Current activity

Export courant utilisé pour top jobs, top apps, chargeback et findings.

Download

Baseline

Export de référence pour calculer la croissance CPU, coût et latence.

Download

ZIP complet

Pack prĂȘt Ă  dĂ©poser dans un rĂ©pertoire de test ou dans static/toolbox.

Download

RÚgle de sécurité : un export SMF peut contenir user IDs, jobnames, departments, accounting data, noms applicatifs et informations de charge. Utiliser --redact avant partage externe.

Utilisation quotidienne

1. Mode démo intégré

Le mode démo permet de tester immédiatement le moteur sans input externe.

Demo mode
python smf_cost_activity_analyzer_v2.py --demo

2. Générer les fichiers samples

Write samples
python smf_cost_activity_analyzer_v2.py --write-sample-csv sample_smf_v2_activity.csv
python smf_cost_activity_analyzer_v2.py --write-baseline-csv sample_smf_v2_baseline.csv

3. Analyse simple d’un export SMF

Simple analysis
python smf_cost_activity_analyzer_v2.py input/sample_smf_v2_activity.csv

4. Analyse complĂšte avec baseline et exports

Full export analysis
python smf_cost_activity_analyzer_v2.py input/sample_smf_v2_activity.csv \
  --compare-base input/sample_smf_v2_baseline.csv \
  --json output/json/sample_smf_analysis.json \
  --html output/reports/sample_smf_report.html \
  --csv-jobs output/csv/sample_smf_jobs.csv \
  --csv-users output/csv/sample_smf_users.csv \
  --csv-apps output/csv/sample_smf_applications.csv \
  --csv-departments output/csv/sample_smf_departments.csv \
  --csv-service-classes output/csv/sample_smf_service_classes.csv \
  --csv-hourly output/csv/sample_smf_hourly.csv \
  --csv-findings output/csv/sample_smf_findings.csv \
  --csv-compare output/csv/sample_smf_compare.csv

5. Mode anonymisé

Redacted report
python smf_cost_activity_analyzer_v2.py input/production_smf_export.csv \
  --redact \
  --html output/reports/production_smf_redacted.html \
  --json output/json/production_smf_redacted.json

6. Mode batch strict

Batch strict mode
python smf_cost_activity_analyzer_v2.py input/production_smf_export.csv \
  --profile chargeback \
  --html output/reports/production_smf_report.html \
  --csv-findings output/csv/production_smf_findings.csv \
  --fail-on-critical
Lecture recommandĂ©e : ouvrir d’abord le rapport HTML, puis exploiter les CSV pour Excel, Power BI, SQL ou historisation dans un portail d’exploitation.

ParamĂštres de ligne de commande

1. ParamĂštres d’entrĂ©e et de sortie

ParamĂštreDescriptionExemple
input_fileExport SMF normalisé CSV/JSON/JSONL.input/smf_export.csv
--demoLance l’analyse avec records intĂ©grĂ©s.--demo
--write-sample-csvGénÚre le sample courant.--write-sample-csv sample.csv
--write-baseline-csvGénÚre un sample baseline.--write-baseline-csv baseline.csv
--compare-baseCompare current vs baseline.--compare-base baseline.csv
--profileProfil : production, batch, api, db2, capacity, chargeback, training.--profile chargeback
--redactAnonymise les valeurs identifiantes.--redact
--json, --htmlExports principaux.--html report.html
--csv-jobs, --csv-users, --csv-appsExports agrégés.--csv-jobs jobs.csv
--csv-departments, --csv-service-classesExports chargeback et WLM.--csv-departments departments.csv
--csv-hourlyExport par fenĂȘtre horaire.--csv-hourly hourly.csv
--csv-findings, --csv-compareAnomalies et comparaison baseline.--csv-compare compare.csv
--fail-on-critical, --fail-on-errorCodes retour stricts pour batch/supervision.--fail-on-error

2. ParamĂštres de seuils

ParamÚtreRÎleUsage recommandé
--job-cpu-warning, --job-cpu-criticalSeuils CPU job.Identifier les top jobs CPU-heavy.
--elapsed-warning, --elapsed-criticalSeuils elapsed.Repérer les jobs longs ou batch windows en tension.
--excp-warning, --excp-criticalSeuils EXCP.Détecter workloads I/O-heavy.
--db2-getpages-warning, --db2-getpages-criticalSeuils DB2.Détecter activité DB2 excessive.
--api-latency-warning, --api-latency-criticalSeuils API.Détecter z/OS Connect ou API lente.
--ziip-offload-warning-pct, --ziip-offload-critical-pctSeuils zIIP.Repérer un offload insuffisant.
--queue-time-warningSeuil attente queue.Repérer contention, scheduler, WLM ou ressources saturées.
--compare-cpu-growth-pct, --compare-cost-growth-pctSeuils baseline.Détecter dérive post-release.

3. Exemple avec seuils personnalisés

Custom thresholds
python smf_cost_activity_analyzer_v2.py input/production_smf_export.csv \
  --profile capacity \
  --job-cpu-warning 600 \
  --job-cpu-critical 1800 \
  --elapsed-warning 3600 \
  --elapsed-critical 14400 \
  --excp-warning 500000 \
  --excp-critical 2500000 \
  --html output/reports/production_capacity_report.html

Exemples d’utilisation

ScĂ©nario 1 – Audit chargeback mensuel

Objectif : produire les coûts estimés par application, user, department et service class.

Monthly chargeback
python smf_cost_activity_analyzer_v2.py input/monthly_smf_export.csv \
  --profile chargeback \
  --html output/reports/monthly_chargeback.html \
  --csv-apps output/csv/monthly_apps.csv \
  --csv-departments output/csv/monthly_departments.csv \
  --csv-users output/csv/monthly_users.csv

ScĂ©nario 2 – Comparaison avant/aprĂšs release

Objectif : détecter une dérive CPU, coût ou latence aprÚs livraison.

Before after release
python smf_cost_activity_analyzer_v2.py input/after_release_smf.csv \
  --compare-base input/before_release_smf.csv \
  --profile production \
  --html output/reports/release_compare.html \
  --csv-compare output/csv/release_compare.csv \
  --csv-findings output/csv/release_findings.csv

ScĂ©nario 3 – Analyse z/OS Connect / API

Objectif : repérer latence API, coût par application et croissance de trafic.

API analysis
python smf_cost_activity_analyzer_v2.py input/zos_connect_smf_123.csv \
  --profile api \
  --api-latency-warning 400 \
  --api-latency-critical 1200 \
  --html output/reports/api_activity.html \
  --csv-apps output/csv/api_apps.csv \
  --csv-findings output/csv/api_findings.csv

ScĂ©nario 4 – Analyse DB2 getpages

Objectif : isoler les jobs ou applications dont les lectures DB2 explosent.

DB2 analysis
python smf_cost_activity_analyzer_v2.py input/db2_smf_export.csv \
  --profile db2 \
  --db2-getpages-warning 750000 \
  --db2-getpages-critical 3000000 \
  --html output/reports/db2_getpages_report.html \
  --csv-jobs output/csv/db2_jobs.csv

ScĂ©nario 5 – ExĂ©cution nocturne automatisĂ©e

Cron entry
0 5 * * * /opt/smf-cost/bin/python /opt/smf-cost/smf_cost_activity_analyzer_v2.py \
  /data/smf/nightly_smf_export.csv \
  --compare-base /data/smf/baseline_smf_export.csv \
  --profile production \
  --html /var/www/reports/smf/nightly_smf_report.html \
  --csv-findings /var/log/smf/nightly_smf_findings.csv \
  --json /var/log/smf/nightly_smf_analysis.json \
  --fail-on-critical >> /var/log/smf/smf_cost_activity_analyzer.log 2>&1

Cost model et chargeback

La V2 embarque un modÚle de coût configurable. Les valeurs ne sont pas des prix réels IBM ou vendor : ce sont des coefficients internes pour obtenir une mesure homogÚne et comparable entre jobs, applications, users et departments.

1. Coefficients de coût configurables

ParamÚtreSignificationValeur par défaut
--cpu-second-rateCoût unitaire par seconde CPU généraliste.0.085
--ziip-second-rateCoût unitaire par seconde zIIP.0.018
--elapsed-second-rateCoĂ»t faible liĂ© Ă  l’occupation elapsed.0.0012
--excp-million-rateCoĂ»t par million d’EXCP.2.25
--db2-million-getpage-rateCoût par million de getpages DB2.0.95
--api-thousand-request-rateCoĂ»t par millier de requĂȘtes API.0.12
--abend-penaltyPénalité forfaitaire si ABEND.35.0
--rc-error-penaltyPénalité si RC error.10.0
--rc-critical-penaltyPénalité si RC critique.25.0

2. Exemple de modÚle de coût personnalisé

Custom cost model
python smf_cost_activity_analyzer_v2.py input/monthly_smf_export.csv \
  --profile chargeback \
  --cpu-second-rate 0.10 \
  --ziip-second-rate 0.02 \
  --excp-million-rate 3.00 \
  --db2-million-getpage-rate 1.20 \
  --api-thousand-request-rate 0.15 \
  --csv-departments output/csv/monthly_departments.csv \
  --csv-apps output/csv/monthly_applications.csv \
  --html output/reports/monthly_chargeback_report.html

3. Lecture des agrégats

ExportLectureUsage
csv-jobsCoût et consommation par job.Optimisation batch, recherche de jobs lourds.
csv-usersCoĂ»t et activitĂ© par user.Audit, refacturation, analyse d’usage.
csv-appsCoût et activité par application.FinOps mainframe, arbitrage business.
csv-departmentsCoût et activité par department.Chargeback interne, showback, budget.
csv-service-classesCoût et risque par WLM service class.Capacity planning, WLM review.
csv-hourlyConsommation par heure.Batch window, saturation nocturne, tendances.
Bonne pratique : le modĂšle de coĂ»t doit ĂȘtre calibrĂ© avec l’équipe capacity/finance. En premiĂšre approche, il sert surtout Ă  comparer les workloads entre eux et Ă  dĂ©tecter les dĂ©rives.

Exports et exploitation des résultats

Rapport HTML

Vue lisible : synthÚse, coût, top applications, top findings, baseline comparison.

Analyse JSON

Format complet pour API, ingestion SQL, archivage ou comparaison automatique.

Jobs CSV

Une ligne par job agrégé, avec CPU, elapsed, EXCP, coût et risque.

Applications / Departments CSV

Vue chargeback / showback par application et département.

Hourly CSV

Vue temporelle pour batch window, capacity planning et pics d’activitĂ©.

Compare CSV

Diff current vs baseline pour détecter croissance CPU, coût ou latence.

Exemple de synthĂšse console

Console output
SMF Cost & Activity Analyzer V2
Records            : 8
Record types       : 30, 72, 110, 123
Jobs               : 6
Users              : 6
Applications       : 7
Departments        : 5
CPU seconds        : 3610.5
zIIP seconds       : 955.0
zIIP offload %     : 20.92
Estimated cost     : 721.43
Issues             : 52 (critical=11, error=19, warning=22)

Idée de table SQL pour historisation

SQL model idea
CREATE TABLE smf_activity_run (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    source_name VARCHAR(255),
    profile_name VARCHAR(32),
    record_count INTEGER,
    job_count INTEGER,
    user_count INTEGER,
    application_count INTEGER,
    department_count INTEGER,
    cpu_seconds DECIMAL(18,3),
    ziip_seconds DECIMAL(18,3),
    elapsed_seconds DECIMAL(18,3),
    estimated_cost DECIMAL(18,3),
    critical_count INTEGER,
    error_count INTEGER,
    warning_count INTEGER,
    report_path VARCHAR(500),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Vision produit : la V2 devient une base solide pour un portail FinOps mainframe : historique SQL, dashboards, tendances, refacturation interne, capacity planning et analyse post-release.

Dépannage et bonnes pratiques

1. Le script ne lit aucun record

Cause possibleCorrection
Le fichier est un dump SMF binaire brut.Convertir d’abord en CSV, JSON ou JSONL avec un extracteur adaptĂ©.
Les noms de colonnes sont trop éloignés des alias connus.Renommer les colonnes vers cpu_seconds, job_name, application, etc.
Les valeurs numériques contiennent des séparateurs non standard.Nettoyer les valeurs avant ingestion, notamment virgules et formats locaux.
Le fichier mélange plusieurs layouts incompatibles.Créer un export normalisé unique ou séparer par record type avant analyse.

2. Les scores ou coûts semblent trop agressifs

Les coefficients par défaut servent de démonstration. En environnement réel, il faut calibrer le modÚle avec la politique interne de capacity planning, les coûts logiciels, les classes de service et les objectifs de reporting.

Less aggressive thresholds
python smf_cost_activity_analyzer_v2.py input/production_smf_export.csv \
  --job-cpu-warning 1200 \
  --job-cpu-critical 3600 \
  --elapsed-warning 7200 \
  --elapsed-critical 21600 \
  --compare-cpu-growth-pct 50 \
  --compare-cost-growth-pct 50 \
  --html output/reports/production_smf_relaxed.html

3. Check-list avant partage d’un vrai export SMF

  • Utiliser --redact pour anonymiser job names, users, accounts, applications et departments.
  • VĂ©rifier que les coĂ»ts gĂ©nĂ©rĂ©s sont des estimations internes, pas une facturation officielle.
  • Conserver une copie brute interne pour vĂ©rifier la fidĂ©litĂ© de la conversion SMF vers CSV/JSONL.
  • SĂ©parer online, batch, API et DB2 si les profils sont trop diffĂ©rents.
  • Comparer avec une baseline stable avant de conclure Ă  une rĂ©gression.
Point critique : un export SMF peut exposer des informations sensibles de production et d’organisation. Avant tout partage externe, gĂ©nĂ©rer une version anonymisĂ©e et valider les colonnes publiĂ©es.