Sistemi Distribuiti e Cloud Computing - A.A. 2015/16
Progetto 2:
Cross-layer QoS Monitoring of Large-scale Services
Docente: Valeria Cardellini
Dipartimento di Ingegneria Civile e Ingegneria Informatica
Università degli Studi di Roma “Tor Vergata”
[email protected]
Requisiti del progetto
Lo scopo del progetto è realizzare, in un linguaggio di programmazione a scelta, un sistema di monitoraggio cross-layer di servizi a larga scala. Il monitoraggio è un’attività fondamentale nella gestione di un
servizio distribuito a larga scala e riveste un ruolo chiave nei sistemi e servizi Cloud autonomici [1]. Si richiede di realizzare un servizio di monitoraggio che includa: un insieme distribuito ed estendibile di sensori
di monitoraggio, un insieme distribuito di agenti di monitoraggio, un componente (eventualmente distribuito) per l’aggregazione dei dati monitorati e, opzionalmente, un’interfaccia grafica per la visualizzazione
dei dati aggregati. Il sistema deve permettere di monitorare risorse e servizi nei diversi livelli dello stack
Cloud (quindi in modo cross-layer), dal livello infrastrutturale (ad es. utilizzazione della CPU, memoria
disponibile, throughput dell’I/O delle macchine virtuali utilizzate per l’erogazione del servizio a larga scala)
fino al livello applicativo (ad es. tempo di risposta, latenza dell’applicazione). Per definire l’architettura del
sistema di monitoraggio, riferimenti di partenza includono CLAMBS [2], Monasca [5], Prometheus [6].
Il sistema di monitoraggio cross-layer di servizi a larga scala deve soddisfare i requisiti funzionali e non
funzionali elencati di seguito.
• Essere distribuito su molteplici nodi.
• Consentire il monitoraggio di un servizio a larga scala, che utilizzi possibilmente diversi Cloud provider; per tale motivo, non è possibile utilizzare i servizi di monitoring offerti dai singoli Cloud provider
(ad es. Amazon CloudWatch).
• Supportare diverse metriche di prestazione relative a risorse e servizi nei diversi livelli dello stack
Cloud.
• Essere scalabile ed affidabile; in particolare, deve essere tollerato il guasto di un agente di monitoraggio.
• Essere estendibile, in modo che sia possibile aggiungere in futuro nuove metriche da monitorare e
nuove funzioni di aggregazione dei dati monitorati.
• Utilizzare almeno un servizio Cloud (escluso Amazon CloudWatch o simili), eventualmente usufruendo del grant di AWS Educate.
1
Si progetti il sistema di monitoraggio ponendo particolare cura al soddisfacimento dei requisiti sopra
elencati e delle altre eventuali scelte effettuate dal gruppo. I componenti del sistema di monitoraggio devono
essere eseguibili nello spazio utente e senza richiedere privilegi di root.
Si realizzi infine un testing completo delle funzionalità del sistema realizzato, mostrando il suo funzionamento nel caso di un servizio applicativo a scelta.
È possibile usare librerie e tool di supporto allo sviluppo del progetto; le librerie ed i tool usati devono
essere esplicitamente indicati e brevemente descritti nella relazione. In particolare, tool quali InfluxDB [4]
(o altro time series database) e Grafana [3] possono essere integrati nel sistema di monitoraggio.
Scelta e consegna del progetto
Il progetto è dimensionato per essere realizzato da un gruppo composto da 3 (massimo 4) studenti.
Per poter sostenere l’esame nell’A.A. 2015/16, entro il 15/5/2016 è necessario prenotarsi per il progetto,
comunicando via email al docente le seguenti informazioni:
• nominativi ed email dei componenti del gruppo;
• progetto scelto.
Nel caso in cui il numero di prenotazioni per il progetto scelto abbia raggiunto la soglia massima prevista,
sarà necessario effettuare una nuova scelta tra i progetti ancora disponibili.
Eventuali modifiche relative al gruppo devono essere tempestivamente comunicate al docente e concordate con il docente.
Per ogni comunicazione via email è necessario specificare [SDCC] nel subject della email. Il progetto è
valido solo per l’A.A. 2015/16 e deve essere consegnato improrogabilmente entro il 30/11/2016. La prova
d’esame scritta deve essere superata entro la sessione autunnale 2015/16.
Per iscriversi al programma AWS Educate, si raccomanda di seguire le istruzioni fornite a lezione ed
inviate via email agli studenti iscritti al progetto.
La consegna del progetto deve avvenire circa dieci giorni prima della data (da concordare con il docente)
in cui si intende sostenere la discussione del progetto. Il materiale relativo al progetto deve essere consegnato
personalmente al docente.
La consegna del progetto consiste in:
1. CD-ROM o link a spazio di Cloud storage contenente:
(a) tutti i sorgenti (opportunamente commentati) necessari per il funzionamento;
(b) relazione (almeno in formato pdf);
(c) eventuali test funzionali e non funzionali;
2. copia cartacea della relazione (senza codice).
La relazione contiene:
• la descrizione dettagliata dell’architettura del sistema e delle scelte progettuali effettuate, opportunamente motivate; nel descrivere l’architettura, occorre usare una metodologia a scelta tra quelle studiate
nei corsi di ingegneria del software;
2
• la descrizione dell’implementazione;
• la descrizione delle eventuali limitazioni riscontrate;
• l’indicazione della piattaforma software usata per lo sviluppo ed il testing del sistema;
• i risultati del testing opportunamente commentati;
• un howto per l’installazione, la configurazione e l’esecuzione del sistema.
Valutazione del progetto
I principali criteri di valutazione del progetto saranno:
1. rispondenza ai requisiti;
2. originalità;
3. organizzazione del codice (leggibilità, modularità, ...);
4. organizzazione, chiarezza e completezza della relazione.
Riferimenti bibliografici
[1] G. Aceto, A. Botta, W. de Donato, and A. Pescapè. Cloud monitoring: A survey. Computer Networks,
57(9):2093–2115, 2013. http://wpage.unina.it/a.botta/pub/COMNET_CLOMON.pdf.
[2] K. Alhamazani, R. Ranjan, P. P. Jayaraman, K. Mitra, F. Rabhi, D. Georgakopoulos, and L. Wang. Crosslayer multi-cloud real-time application qos monitoring and benchmarking as-a-service framework.
IEEE Transactions on Cloud Computing, 2015. To appear, http://www.ce.uniroma2.it/
courses/sdcc1516/progetti/CLAMBS.pdf.
[3] Grafana, 2016. http://grafana.org.
[4] InfluxDB, 2016. https://influxdata.com/time-series-platform/influxdb/.
[5] Monasca, 2016. https://wiki.openstack.org/wiki/Monasca.
[6] Prometheus - Monitoring system & time series database, 2016. https://prometheus.io.
3