1. Università degli Studi di Napoli Federico II
Dipartimento di Ingegneria Elettrica e Tecnologie dell'Informazione
TESI DI LAUREA
PROGETTAZIONE E REALIZZAZIONE
DI AGENTI DI MONITORAGGIO PER SISTEMI DISTRIBUITI
Design and Development of Monitoring Agents for Distributed Systems
Tutor Accademico: Candidato: Matteo Vettosi
Prof: Alessandro de Luca Matricola: N86000799
Tutor Aziendale:
Gianluca Della Corte
Anno Accademico 2013-2014
2. Cosa è stato richiesto
● Completamento di un agente per Hadoop
o Sviluppo delle parti mancanti
o Refactor delle parti già esistenti
o Aumento Performance
● Realizzazione di un agente per CouchDB
o Studio del dominio di applicazione
o Scelta delle tecnologie
o Realizzazione dell’interfaccia grafica
3. Cos’è un agente di monitoraggio?
“Servizio per il collezionamento di metriche di performance e di
gestione degli allarmi per sistemi operativi/applicazioni/transazioni”
Vari tipi:
● OS Agent
● Energy Management Agent
● Generic Agent
● …
Noi ci interesseremo di Generic Agents
4. Generic Agents
● Eseguibile principale
● XML per la definizione dell’implementazione
o Molto corposo
o Generabile e manipolabile tramite Agent Builder
● Files per la configurazione a runtime
5. Come si istanzia un
Generic Agent?
1. Definizione e organizzazione dei DataSource
2. Eventuale implementazione degli stessi
3. Realizzazione dell’interfaccia grafica (APMUI)
6. I DataSource
Letteralmente: Sorgente dei dati
Diversi tipi supportati:
● Windows Process
● SOAP
● JDBC
● Socket
● Java API
● …
Non sempre ovvio quale utilizzare
7. L’APMUI
“Scritta” in JSON (linguaggio proprietario)
Realizzabile tramite:
● Scrittura a mano
● Tool grafico integrato nell’Agent Builder
● … Entrambe le cose
8. Hadoop
Framework Java di supporto allo sviluppo di
applicazioni distribuite.
Garantisce:
● Affidabilità: Problemi gestiti a livello applicativo
● Scalabilità: Nuovi nodi riconosciuti
automaticamente a runtime
10. Componenti Principali
● Hadoop Common: Strato software di supporto
● HDFS: File system distribuito per un efficace
accesso ai file
● MapReduce: Famoso algoritmo per la
parallelizzazione e distribuzione automatica del
lavoro
● YARN: Framwork per la gestione di risorse del
cluster
11. Agente per Hadoop
Cosa c’era già?
● Definizione dei Datasource
● Implementazione delle tecniche di raccolta
● API Java per il calcolo dello stato di salute del
cluster
● Interfaccia grafica
13. Plugin Java
● Utilizza la libreria “Metrics2” di Hadoop
● Invia le metriche in formato XML tramite Socket
● Apertura e chiusura di un canale di connessione per ogni
singola metrica raccolta
● Scrittura integrale di essa sul file di log di tutte le componenti
di Hadoop
16. Modifiche apportate al Plugin
● Aggiunti controlli sui tipi per cast espliciti
● Sostituiti array con mappe e utilizzati algoritmi
più efficienti
● Ottimizzata la scrittura sui log
● Ottimizzato l’utilizzo di banda e computazione
lato server
17. Modifiche di configurazione
● Creazione di un agente “fantoccio”
o Estrazione delle configurazioni XML per il
custom provider
o Recupero dei javaLauncher.sh/bat
● Review dei launcher
o Generazione di log
o Fix per la variabile d’ambiente JAVA_HOME
o Inclusione delle librerie non previste
● Bugs, bugs, bugs...
18. Modifiche al Custom Provider
● Implementata logica di determinazione salute
● Aggiunta attività di logging conforme agli
standard aziendali
● Gestita la concorrenza tramite
ConcurrentHashMap e variabili volatile
● Fixati crash dovuti , ad esempio, a mancati
controlli sui tipi
20. CouchDB
● Database non relazionale
o Documento come elemento fondamentale
o JSON per l’organizzazione dei dati
● Scritto in Erlang
● Lettura e scrittura concorrente grazie a MMVC
● Gestito interamente via HTTP
23. Agente per CouchDB
Specifiche iniziali:
● Coerenza grafica con l’agente per MongoDB
● Implementazione dell’agente per un instanza
di CouchDB (tralascio del clustering)
Si è deciso in totale autonomia di predisporre
l’agente per monitorare istanze multiple
25. DataSources
Da DOVE prendere le metriche?
● http://indirizzo.ip:port/_stats
● http://indirizzo.ip:port/_active_tasks
● http://indirizzo.ip:port/_all_dbs &
http://indirizzo.ip:port/dabataseName
37. Tecnologie Utilizzate
Le tecnologie impiegate durante il lavoro sono
dunque state:
● Java
o Generics
o Java Collection Framework
o Multi-Thread
o Design Patterns
o HTTP Socket Connections
● JavaScript
● Bash/Batch
● JSON
● XML
● SVN
38. Stato attuale e sviluppi futuri
Gli agenti necessiteranno di:
● Integrazione con prodotti IBM non trattati
durante il tirocinio
● Controlli di qualità
● Analisi da parte dello User Experience Team
Si prevede inoltre di rilasciare:
● Agente per Hadoop: Giugno 2015
● Agente per CouchDB: Ottobre 2015