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 MasterLoader,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

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; MasterLoader; Setup; monitor; enquiry
(una macchina di interfaccia + una macchina per il DB ???)

MasterLoader:
Setup
Monitor
Enquiry

Server di Sito

Il Server di sito è una macchina dedicata:  (gmetad)+gmond;  SiteLoader; SiteProvider;

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.



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





Definizione tabelle statiche.

Trasmissione della tabelle.

Configurazione di gmond sui nodi. Automatica in base alle tabelle, compreso il software di sonda?
Usare AFS? (Sempre tramite copia su buffer locali, analoga alla gestione /etc/passwd)

Esistono delle metriche non "locali", ovvero che non rappresentano proprietà dell'host sul quale si trova fisicamente la sonda, ma invece altri sistemi o servizi?



Stesura schema di progetto

Identificazione di aree di azioni specifiche da effettuare con risorse dedicate: ad es. gmond su AIX, ....