MAGO: Monitoring All GRID
Objects
Il progetto si basa su GANGLIA e si propone di integrare
le informazioni fornite di default da ganglia con informazioni su
demoni, servizi e software che sono specifici delle infrastruttura di
ENEA-GRID.
L'insieme di tutte le informazioni viene centralizzato su un DB,
implementato in MySQL.
L'implementazione fa uso di AFS, componente di base di
ENEA-GRID per la distribuzione delle informazioni statiche di
configurazione ma identifica in modo esplicito tale approccio in modo
che sia possibile implementare le stesse funzionalità
attraverso altri metodi in ambienti che non fanno uso di AFS.
Prove preliminari di fattibilità
Utilizzo di cron
Sintassi della definizione di file per un crontab utente
Verificare il funzionamento multipiattaforma.
Test della piramide
MMasterLoader,SiteLoader/SiteProvider,nodi
Test di gmetric da crontab
Funzionamento di gmond su tutte le piattaforme:
AIX, Irix, MacOSX, Linux i386, IA64, x86_64.
Da studiare
- Procedura di installazione di mago sul nodo
- Installare ganglia-gmond
- Configurare /etc/gmond.conf eventualmente utlizzando le
informazioni della tabella
Host_multicast
- Definire l'ambiente per mago: la user dedicata
- Dove
posizionare i monitor dei servizi?
- Sulla macchina stessa che li fornisce?
- Sulla macchina che fa da SiteServer?
- Autenticazione per MySQL: integrazione con kerberos5
- Definire un criterio di definizione dei codici di errore in
funzione della generazione di un allarme. Codifica generale dei codici
di stato.
Componenti da sviluppare
Tabella delle compoenti software
|
Architettura |
Linguaggio |
| MMasterLoader |
|
C,java |
| MSetup |
Tool da definire |
|
| MMonitor |
Web |
|
| MEnquiry |
Web |
|
| MSiteProvider |
|
C,java |
| MSiteLoader |
|
C,java |
| Magoupdate.sh |
|
shell script |
Architettura
Il sistema si compone di 3 livelli distinti: 1 Server Centrale
Server Centrale
Il Server centrale (ad es. svncres) che ha i seguenti
componenti: (gmetad); mysql; MMasterLoader; MSetup; MMonitor; MEnquiry
(una macchina di interfaccia + una macchina per il DB ???)
MMasterLoader:
- contatta i Server di sito, ottiene dai provider di sito
tutti i file di risposta
disponibili.
- carica i valori in MySQL
- ordina la cancellazione dei file di risposta correttamente
caricati
MSetup
- Utility Grafica di configurazione per tutte le tabelle statiche
- Tutte le tabelle di configurazione sono in MySQL.
- Setup si preoccupa di copiare le tabelle statiche per i nodi sul file system, AFS o locale.
MMonitor
- Web: informazioni globali sul sistema, allarmi
MEnquiry
- Utility per l'analisi del DB
Server di Sito
Il Server di sito è una macchina dedicata:
(gmetad)+gmond;
MSiteLoader; MSiteProvider;
SiteLoader
- Contatta almeno un nodo per ognuna dei gruppi multicast di
sito
- Ottiene il file XML e lo salva in un file locale
SiteProvider
- Risponde a MasterLoader fornendo i file correnti
- A comando di MAsterLoader provvede a cancellare i file
locali
gmetad
Fornisce comunque le informazioni grafiche tipiche di Ganglia sulle
metriche del sito
Nodo
Sul nodo è attivo gmond come servizio ed esso fornisce le
informazioni standard di ganglia.
Le metriche addizionali vengono raccolte tramite l'esecuzione di script
che fanno uso di gmetric per passare l'informazione a gmond.
Le metriche addizionali vengono eseguite dal crontab di un utente
locale dedicato ("mago").
La loro configurazione è definita dalla configurazione
dell'ambiente locale MAGO:
Ambiente locale MAGO:
/usr/local/mago/magoupdate.sh
/usr/local/mago/mago.crontab
/usr/local/mago/metric/metric.list
/usr/local/mago/metric/scripts/ tutti gli scripts di metrica
magoupdate.sh
1) verifica l'accessibilità ad AFS
2) Se AFS non è accessibile termina.
3) Altrimenti
- copia da AFS la versione aggiornata di magoupdate.sh
- copia da AFS le versioni specifiche per il nodo di
- gli script definiti da metric.list
- aggiorna il crontab locale dell' utente "mago"
Struttura delle tabelle statiche
in AFS
/afs/enea.it/system/mago/
.../magoupdate.sh
.../hosts/hostname/mago.crontab
.../hosts/hostname/metric.list
Le Tabelle
Le tabelle necessarie:
Siti [ ID sito,
IP server di sito ]
La tabella viene usata da MasterLoader
Host_multicast[Sito, ID
hostname, gruppo_multicast]
La tabella viene usata da SiteLoader per
trovare quale host deve essere interrogato
Host_Metriche[Sito, ID
hostname, ID metrica]
La tabella viene usata per generare la
lista di metriche che competono ad ogni host.
Questa viene usata da Setup.
Metriche [ID
metrica, tipo,
gruppo,path_script_metrica,path_versione_script_metrica,intervallo_rilevazione]
la tabella viene usata da Setup.
Tipo (daemon, software, servizio...)
serve a definire la tipologia della metrica
gruppo (Matlab, LSF, AFS...) serve ad
organizzare le metriche in base all'oggetto monitorato.
Codici di errore.
Generazione di allarme
Tabella Tipi
Tabella Gruppi (Id Gruppo, Ruoli)
Script di metrica
Lo script deve essere costruito secondo la logical di gmetric,
cioè deve fornire 1 valore ed utilizzare gmetric per
trasmetterlo a gmond.
Gli script sono conservati su di un file system.
Nel caso di AFS:
/afs/enea.it/system/mago/scripts/type/group/nome_script_metrica
che è un link alla versione corrente dello script
/afs/enea.it/system/mago/scripts/type/group/nome_script_metrica_1.0
type
software, daemon, service
group AFS,
matlab,....
Lo script deve essere multipiattaforma
Esempio:
matlab_version
matlab_status
Uno script puo' anche testare l'esistenza di un gruppo demoni
Esempio: demoni di ls
uno script di test potrebbe essere
ps -f -u root | grep /afs/enea.it/software/lsf/etc | grep -v "/bin/sh
-x" | sort +7
<bracco@bw305-1 /afs/enea.it/software/lsf/conf%lsrun -m sp5-13
ps -f
-u root | grep /afs/enea.it/software/lsf/etc | grep -v "/bin/sh -x" |
sort +7
root
295838
1 0
08:18:38 -
0:34
/afs/enea.it/software/lsf/etc/lim
root 70472
123804 0
11:50:57 -
0:12
/afs/enea.it/software/lsf/etc/mbatchd -d /afs/enea.it/software/lsf/conf
root 283514 295838 0
08:18:49 -
0:00
/afs/enea.it/software/lsf/etc/melim
root 226114 295838 0
08:18:44 -
0:01
/afs/enea.it/software/lsf/etc/pim
root
209726
1 0
08:18:38 -
0:01
/afs/enea.it/software/lsf/etc/res
root
123804
1 0
08:18:38 -
0:02
/afs/enea.it/software/lsf/etc/sbatchd
root 124608 283514 0
08:18:49 -
0:02 /bin/sh
/afs/enea.it/software/lsf/etc/elim
root 160634 283514 0
08:18:49 -
0:13 /bin/sh
/afs/enea.it/software/lsf/etc/elim.hpc
Ganglia
http://ganglia.sourceforge.net/docs/ganglia.html
Viene definito un gruppo multicast per ognuna delle sottoreti a cui
appartengono i nodi da monitorare oppure per partizionare una sottorete
al fine di ottimizzare il carico del sistema di monitoring: all'interno
di un gruppo multicast ganglia fa condividere a tutti i nodi lo stesso
insieme di informazioni. Tutti i nodi nel gruppo multicast condividono
le stesse informazioni:
basta interrogarne uno.
Le sonde non previste dal pacchetto ganglia devono essere realizzate
con scripts che spediscono a gmond il risultato usando il comando
gmetric.
L'esecuzione della sonda deve essere temporizzata ad
esempio con un cron job.
% gmetric --help
gmetric 3.0.0
Purpose:
The Ganglia Metric Client (gmetric) announces a metric
on the list of defined send channels defined in a configuration file
Usage: gmetric [OPTIONS]...
-h, --help Print help and exit
-V, --version Print version and exit
-c, --conf=STRING The configuration file to use for finding send channels
(default=`/etc/gmond.conf')
-n, --name=STRING Name of the metric
-v, --value=STRING Value of the metric
-t, --type=STRING Either
string|int8|uint8|int16|uint16|int32|uint32|float|double
-u, --units=STRING Unit of measure for the value e.g. Kilobytes, Celcius
(default=`')
-s, --slope=STRING Either zero|positive|negative|both (default=`both')
-x, --tmax=INT The maximum time in seconds between gmetric calls
(default=`60')
-d, --dmax=INT The lifetime in seconds of this metric (default=`0')