Data Analysis

Log proattivi nel mondo della logistica grazie al machine learning

Previsione della criticità dei problemi segnalati dai Log degli applicativi nel mondo della logistica

Claudio Peroni Marzo, 2020
Log proattivi nel mondo della logistica grazie al machine learning

Nell'era dei Big Data, un tema ricorrente è quanto grande sia la mole di dati a disposizione delle imprese ma quanto poco questi vengano sfruttati.

Per un business di successo è oggi più importante che mai essere coscienti di quanti e quali dati vengano raccolti, quali potrebbero essere raccolti, e quali informazioni possano esserne ricavate.
Un'abbondante fonte di dati che viene ancora—soprendentemente spesso—trascurata è rappresentata dai file di log generati dagli applicativi del sistema IT di un'azienda.

In questo articolo dimostreremo come sia possibile trasformare i log in un'importante fonte di informazione utile sia a livello IT che di business.

"The goal is to turn data into information, and information into insight"

—Carly Fiorina, former executive, president, and chair of Hewlett-Packard Co.

Il problema

L’ispirazione per questo articolo nasce dai problemi affrontati in un progetto recente, nel corso del quale abbiamo collaborato con uno tra i maggiori operatori logistici privati in Europa con più di 2500 dipendenti.
Il sistema IT sul quale abbiamo lavorato era composto da decine di diversi applicativi istanziati su molteplici macchine. Il sistema centralizzato di gestione dei log prevedeva l’invio dei file contenti i log ad una casella mail, che veniva saturata ogni giorno da migliaia di file contenenti nel complesso milioni di eventi. L’utilizzo efficiente delle informazioni in essi contenuta era fondamentalmente impossibile.

Attraverso l’uso di algoritmi di Machine Learning siamo riusciti a condensare in un’interfaccia grafica facilmente accessibile soltanto gli eventi più rilevanti per il business, in modo da poter agire tempestivamente in presenza di potenziali problemi.
Le mail giornaliere si sono ridotte da diverse migliaia a poche decine, e la rilevanza è sensibilmente aumentata.

I file di Log e le Log entry

Per log si può intendere sia un file di testo (un log file) che viene generato da un software per riportare informazioni sulle operazioni svolte e gli errori riscontrati, che un singolo evento riportato all'interno di uno di questi file (una log entry). Nel presente articolo utilizzeremo il termine in questa seconda accezione.

Ogni log rappresenta un evento ed è generalmente espresso attraverso una linea di testo contenente le principali informazioni relative, tra cui:

  • Il timestamp :  quando è avvenuto;
  • L'applicativo :  dove è avvenuto;
  • Il contenuto :  cosa è avvenuto;
  • Il livello :  quanto quello che è avvenuto è giudicato grave nel contesto dell'applicativo IT.

Un grosso problema che si ha quando si trattano i log è che, nonostante sia semplice filtrare i log in base al tempo, agli applicativi e al livello, non esiste una struttura standard che ne regoli il contenuto, che è pertanto molto difficile da gestire in maniera automatizzata.

Come possono essere usati

I log vengono normalmente usati per fare troubleshooting. Quando si verifica un problema, si procede a ritroso andando a leggere i log generati dagli applicativi per risolverlo alla radice (approccio a posteriori). Ma se i log possono essere utilizzati per questo scopo, significa che contengono anche informazione utile a prevedere e prevenire i problemi prima che si presentino (approccio a priori).
Il problema è che il numero di eventi generati dagli applicativi può essere enorme; l'informazione utile è annegata in un mare di dati non significativi ed è difficile da estrarre.

Data la quantità di dati non è pensabile ispezionare manualmente ogni log in tempo reale, e la maggior parte degli algoritmi standard si perderebbe tutta l'informazione inclusa nel contenuto del log, e si baserebbe quasi esclusivamente sul livello. Il livello di un log è senza dubbio un dato importante, i principali valori che può assumere sono: DEBUG, INFO, WARNING e ERROR. Il problema è che esistono errori a livello applicativo che non rappresentano alcuna criticità a livello di business e, viceversa, ci sono info il cui contenuto può essere vitale per prevedere l'insorgere di problemi in futuro.
Come distinguere?

Enter Machine Learning

Dal momento che—per via della mancanza di struttura comune ai log di diversi applicativi—non è fattibile programmare un software per riconoscere i log importanti, è necessario programmare un software che sia in grado di imparare a riconoscerli autonomamente. Per fare questo ci vengono in aiuto le tecniche di Machine Learning.

Nel recente progetto nell’ambito della logistica di cui si è parlato all’inizio dell’articolo, abbiamo lavorato a stretto contatto con il cliente proprio per rendere l'analisi dei log meno reattiva e più proattiva.
Per prima cosa abbiamo scelto di utilizzare modelli di Machine Learning Supervisionato, chiedendo a un team di esperti del settore di contribuire alla generazione di un training set, ovvero una tabella di dati in cui ogni log è classificato manualmente a seconda della criticità. Raccolti i dati, abbiamo studiato i modi migliori per estrarre da ogni log delle caratteristiche processabili da un algoritmo (delle feature). Grazie a questi passaggi, è stato possibile addestrare un algoritmo che è successivamente stato testato su dati reali, dimostrando le capacità predittive del Machine Learning.

Risultati per il business

I risultati nel caso del nostro cliente sono stati nettamente positivi. Attraverso un'interfaccia di gestione aggregata dei log processati dall'algoritmo, è stato possibile ridurre drasticamente il numero di eventi da far visionare ai tecnici. Nell'ambito di questo complesso sistema IT, l'ordine del numero di log da filtrare per estrarre informazioni potenzialmente critiche per il business è passato da milioni al giorno a poche decine.

Grazie alla diminuzione nella quantità di dati inutili presentati agli operatori è stato possibile individuare molto più facilmente le possibili criticità e agire tempestivamente per mitigare problematiche future.

Take-away message

Un sistema di apprendimento automatico di questo tipo non è applicabile solo ad un sistema IT progettato per i trasporti, ma può essere esteso agevolmente per gestire qualunque tipo di applicativo in virtù della flessibilità intrinseca del Machine Learning.
Con approcci molto simili, è possibile inoltre automatizzare un gran numero di task che richiederebbero altrimenti un notevole impegno di risorse, e spesso migliiorando contemporaneamente le performance. I campi di applicazione sono pressoché infiniti, e vanno dalla fraud detection in ambito di cyber-security all'azione autonoma su pattern identificati automaticamente, come nei recommendation systems.

Oggi è più importante che mai investire nelle nuove Intelligenze Artificiali—specialmente quelle basate su Machine Learning e Deep Learning—per non restare un passo indietro rispetto ai competitor. Fortunatamente è anche un momento in cui, grazie a incentivi e sgravî nell'ambito di progetti come Industria 4.0 e Logistica 4.0 che mirano a favorire l'innovazione e l'automatizzazione, è particolarmente conveniente.

Articoli correlati

Data Analysis

Articoli in evidenza

Approfondimenti

UNISCITI A NOI. INVIA LA TUA CANDIDATURA

Certimeter Group crede nei valori, nella passione e nella professionalità delle persone.