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

  1. Procedura di installazione di mago sul nodo
  2. Dove posizionare i monitor dei servizi?
  3. Autenticazione per MySQL: integrazione con kerberos5
  4. 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:
MSetup
MMonitor
MEnquiry

Server di Sito

Il Server di sito è una macchina dedicata:  (gmetad)+gmond;  MSiteLoader; MSiteProvider;

SiteLoader
SiteProvider
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

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')