Use cases Data

Document de Reference - Orange Maroc

Use Case Vue 360

Projet FAIR - Supervision FTTH et migration vers Dataiku

Projet FAIR - FTTH Supervision

Le systeme FAIR est base sur une architecture decouplee ou des scripts Python persistants en arriere-plan effectuent le traitement lourd des donnees, tandis qu'une application web allegee (Flask) ne fait que lire les bases de donnees pre-calculees pour assurer une vitesse maximale.

Architecture Globale et Flux de Donnees
Sources & Ingestion
Traitement Primaire
Analyse d'Incidents
Agregation & Caches
Presentation Web
Serveurs AAA

Logs

fetch_aaa.py

SSH / Logs → Parsing

fichiers CSV

Lecture incrementale

fair_agent.py

Etat de session (Start/Stop)

master_client_database.db

Topologie reseau

client_status.db

Etat live clients

fair_detector.py

Creation tickets

fair_tracker.py

Cloture (Recovered)

fair_ftth_incidents.db

Journal des incidents

alarm_manager.py

Alarmes groupees

aggregator.py

Tendances Villes/GPON

live_alarms.db

advanced_analytics.db

app.py / Flask

Calcule KPIs

users.db

Authentification

dashboard_analytics.db

Metriques globales

Partie 1 : Detection (Workflow Temps Reel)
fetch_aaa.pyIngestion

Se connecte aux serveurs AAA pour recuperer les logs d'accounting incrementaux.

Input: Fichiers logs bruts sur serveurs distants via SSH
Logique: Suit le numero de la derniere ligne lue ('last read line') pour eviter les doublons. Gere la taille variable des lignes, notamment pour les 'DISCONNECT NOTIFICATION'.
Output: Fichiers CSV normalises avec les colonnes Event_Timestamp, Acct_Status_Typ, User_Name, NAS_IP, Acct_Session_Id
fair_agent.pyMaintien d'etat

Met a jour en temps reel le statut individuel de chaque client FTTH.

Input: Fichiers CSV generes par fetch_aaa.py
Logique: Gere un 'Live State'
Output: Met a jour la base client_status.db (table user_status avec etats Start/Stop/TIMEOUT et historique ftth_disconnection_events)
fair_detector.pyCreation d'Incidents

Detecte les anomalies de masse ou les pannes materielles (hardware failures) basees sur les deconnexions.

Input: client_status.db (etat live) + master_client_database.db (referentiel topology)
Logique: Analyse les flux pour grouper les pannes par equipement (ex: PON_PORT_FAILURE)
Output: Ecrit les incidents detectes dans fair_ftth_incidents.db (table incidents)
fair_tracker.pyGestion du cycle de vie

Verifie l'etat des clients impactes par un incident ouvert pour le cloturer s'ils se reconnectent.

Input: client_status.db (live) + fair_ftth_incidents.db (incidents ouverts)
Logique: Scrutateur de 'Recovered'
Output: Met a jour la table incidents (statut = RECOVERED, ResolutionTimestamp et downtime)
Partie 2 : Dashboard (Agregateurs et UI)

Les scripts suivants tournent en arriere-plan comme services systemd pour peupler des "caches" ultra-rapides, evitant a l'app web de faire des calculs complexes.

alarm_manager.pyAlarmes Live

Construit les objets complexes des alarmes live pour les afficher.

Input: client_status.db et master_client_database.db
Logique: Croise l'etat actuel des utilisateurs pour grouper les deconnexions par zone geographique ou de plaque, et calcule des disponibilites/KPI
Output: Genere la table alarms dans live_alarms.db
aggregator.pyGraphiques temporels

Alimente les donnees des graphiques temporels (Vues Avancees).

Input: Donnees brutes de statut
Logique: Agrege minute par minute, par site (ville / site GPON), les compteurs online/offline
Output: advanced_analytics.db (tables city_trends, gpon_trends)
app.pyApplication Web Flask

Serveur web Gunicorn (avec eventlet) presentant le Dashboard.

Input: Lit toutes les bases SQLite preparees (caches et bases raw) et gere l'authentification avec users.db
Logique: Possede un 'background thread' interne pour calculer minute par minute les KPIs globaux (clients down, offline > 30min, etc.)
Output: Interfaces HTML (clients par Websocket JS) et ecriture des logs dans dashboard_analytics.db
Topologie des Donnees (SQLite)

Le choix de SQLite est judicieux car segmente par responsabilite pour minimiser le "locking" :

Raw Data (Inputs directs)

  • master_client_database.db - Topologie reseau statique
  • client_status.db - Etat de session immediat (volatile)
  • fair_ftth_incidents.db - Journal des anomalies

Caches de Visualisation

  • live_alarms.db - Alarmes structurees
  • advanced_analytics.db - Donnees historiques
  • dashboard_analytics.db - Metriques Top Level

Systeme (Admin)

  • users.db - Utilisateurs et audit