Sistemi di automazione dei messaggi di allarme per il monitoraggio della rete regionale della sanità
1. UNIVERSITÀ DEGLI STUDI DI TRIESTE
FACOLTÀ DI INGEGNERIA
CORSO DI LAUREA IN INGEGNERIA INFORMATICA
ANNO ACCADEMICO 2011/12
SISTEMI DI AUTOMAZIONE DEI MESSAGGI DI ALLARME PER
IL MONITORAGGIO DELLA RETE REGIONALE DELLA SANITÀ
Relatore: Laureando:
Prof. Fulvio Sbroiavacca Michele Sinigoi
Correlatore:
Ing. Fabio Del Torre
2. OBIETTIVI
Realizzare un servizio di alert su eventi significativi disponibile h 24
Poter essere immediatamente informati di eventuali problemi ai nodi
Creare una gerarchia tra i nodi in modo da evitare l’ invio di messaggi
multipli per un singolo problema che affligge più nodi
Evitare di scatenare allarmi per problemi momentanei, che non
necessitano dell’ intervento del personale Insiel
Integrazione di un sistema per l’ invio di sms da affiancare a quello delle
email per poter estendere il servizio ed avere un addetto sempre
raggiungibile
3. IL CONTESTO: LA RETE REGIONALE
La Rupar è la rete regionale in Friuli Venezia-Giulia che connette:
Sedi della regione (SIAR)
Aziende ospedaliere, centrali operative del 118, eccetera (SISR)
Enti locali come comuni, provincie, biblioteche, scuole eccetera (SIAL)
Al momento è in atto una migrazione verso la nuova Rupar basata sul
progetto Ermes (connessione in fibra ottica), che verrà ad avere una
struttura gerarchica con 5 POP, i quali si occuperanno di distribuire il traffico
sulla rete.
La manutenzione di una rete così complessa è un’ attività che richiede
tempestività d’ intervento soprattutto in realtà quali il 118, i pronto
soccorso, i centri trasfusionali, i laboratori di analisi, eccetera.
4. IL SISTEMA: HP OPENVIEW
HP OpenView è una applicazione
per il monitoraggio delle reti, è
possibile tenere visivamente sotto
controllo tutti dispositivi in grado di
inviare una trap snmp.
Il sistema, tramite un browser degli
allarmi, ci permette di controllare i
nodi e con un event configurator di
associare a questi delle azioni da
far compiere al programma stesso.
5. STRUMENTI UTILIZZATI
HP OpenView è il software per il monitoraggio della Rupar del Friuli
Venezia-Giulia attualmente utilizzato in Insiel
Event configuration di HP OpenView
Linguaggio di programmazione Perl
SMSMachine/XML
6. PROGETTAZIONE DELLO SCRIPT
HP OpenView offre la possibilità di poter associare agli eventi degli script in
linguaggio Perl, saranno necessari 2 script da associare all’ evento di
«nodo down» e a quello di «nodo up».
Si procederà nello sviluppo di uno script in grado di inviare email e/o
sms nell’ eventualità che un nodo diventi irraggiungibile, badando di
rispettare la gerarchia e aggiungendo la possibilità, per lo script, di
aggiornare un file di testo da far consultare agli script associati ai nodi di
livello più basso, che saranno perciò in grado di bloccare l’ invio del
proprio messaggio in quanto il problema sarà localizzato al livello
superiore.
Il secondo script, necessario per controllare che non vengano inviati
allarmi per problemi di pochi istanti di tempo, sfrutterà anch’ esso un file
di testo, che verrà aggiornato con data e ora del problema. Lo stesso file
verrà letto e controllato dallo script di «nodo down» per determinare se
sia necessario procedere con l’ invio degli allarmi.
7. DIAGRAMMA DI FUNZIONAMENTO DELLO
SCRIPT «NODO DOWN»
Generazione allarme
su HP OpenView
Scrittura sul proprio
Invio email e sms
file di gerarchia
Festivo
Controllo del file di Controllo che il nodo
gerarchia a livello non sia tornato Controllo data e ora
superiore raggiungibile
File di livello più Nodo Feriale
elevato down raggiungibile
Termina Termina Invio email
8. SCRIPT DI «NODO DOWN»: GERARCHIA I
Vediamo come lo script scrive sul file di testo:
my $gerlog_sisr = 'C:Program FilesHP OpenViewlogallarmi_scriptgerarchia_POPTS.txt';
my $time = localtime;
open( GER, '>>', $gerlog_sisr ) or die "Non riesco ad aprire $gerlog_sisr";
print GER "n";
print GER "$time POPTS DOWN";
close GER;
E come controlla il file del nodo di gerarchia superiore:
open( GER, '<', $gerlog_pop );
my $gr = -s $gerlog_pop;
my $last;
my $off = 256;
while( ! defined( $last ) ){
$off = $gr if $off > $gr;
seek( GER, -$off, SEEK_END ) or warn "Ricerca fallita!";
my @rows = <GER>;
if( @rows > 1 ){
$last = $rows[ -1 ];
} elsif( $off >= $gr ) {
$last = $rows[ 0 ];
} else {
$off += 256;
}
}
9. SCRIPT DI «NODO DOWN»: GERARCHIA II
$now = time();
$date = substr ($last,0,24);
$mod = str2time($date);
if ($mod+600 >= $now){
print "il nodo a livello superiore è down, invierà lui i messaggi di allarme";
}
Se l’ ora scritta sul file è inferiore ai 10 minuti con quella attuale sarà il nodo di gerarchia superiore a inviare
l’ allarme altrimenti si prosegue con l’ esecuzione dello script:
else {
my $file = 'C:Program FilesHP OpenViewlogallarmi_scriptlog_POPTS.txt';
my $time = localtime;
open( LOG, '>>', $file ) or die "Non riesco ad aprire '$file'";
print LOG "n";
print LOG "$timen";
print LOG "NODO DOWNn";
close LOG;
10. SCRIPT DI «NODO DOWN»: INVIO EMAIL
my $mess = ("$time | $node | $alert");
@indirizzi_email = (@indirizzi_email, @email_to);
foreach my $indirizzi (@indirizzi_email) {
my $from = ‘nome@insiel.it';
my $smtp = ‘123.45.67.89';
my $sub = 'Controllare '. $node .' !';
$msg = MIME::Lite->new(
From => $from,
To => $indirizzi,
Subject => $sub,
Type => 'multipart/mixed'
)or die "Errore nella creazione del contenitore: $!n";
$msg->attach (
Type => 'TEXT',
Data => $mess
)or die "Errore nell aggiungere il testo: $!n";
MIME::Lite->send('smtp',$smtp, Timeout=>60, Debug => 1);
$msg->send;
}
close INDIRIZZI;
}
Le variabili $time, $node e $alert vengono fornite dall’ alarm browser
11. SCRIPT DI «NODO DOWN»: INVIO SMS
Per l’ invio degli sms è necessario configurare la SMSMachine/XML
open( SMSMACHINEDATA , 'C:PerlbinSMSMachinedata.txt') or die ("Non riesco ad aprire il file in letturan");
my @data = split(/ /, <SMSMACHINEDATA>);
my $numero = $data[0];
my $ipSMSMachine = $data[1];
my $post = 'http://'. $ipSMSMachine .'/smssend.cgi';
my $ua = LWP::UserAgent->new;
$ua->request (POST $post,
[ num => $numero
text => 'Controllare POPTS !',
mode => 'mode = 0',
Pwd => ‘PASSWORD',
]);
close SMSMACHINEDATA;
Quindi si procede con l’ invio anche degli sms.
12. SCRIPT DI «NODO UP»
Questo secondo script aggiorna un file di testo con la data e l’ ora in cui il nodo risulta nuovamente
raggiungibile:
#! /usr/bin/perl -w
use strict;
use warnings;
my $file = 'C:Program FilesHP OpenViewlogallarmi_scriptlog_POPTS.txt';
my ($sec,$min,$ore,$giom,$mese,$anno,$gios,$gioa,$oraleg) = localtime(time);
open( LOG, '>>', $file ) or die "Non riesco ad aprire '$file'";
print LOG "n";
print LOG scalar localtime;
print LOG "n";
print LOG "NODO UP";
close LOG;
13. CONCLUSIONI
Gli obiettivi sono stati tutti raggiunti.
Infatti lo script:
È in grado di inviare sia email che sms
Rispetta la gerarchia
In caso di problemi momentanei si ferma e non lancia gli allarmi
Il sistema è attivo da Aprile 2011 presso Insiel ed è attualmente
utilizzato per il monitoraggio della rete
Eventuali sviluppi futuri riguardano la copertura di più nodi all’ interno della
rete, estendendo così il servizio già disponibile in modo da migliorare la
tempestività nella risoluzione dei problemi.