1. Πρώτη Ενότητα
-1.1. Δημιουργία Δικτύου:
-Για να μπορέσουμε να θέσουμε σε λειτουργία τις εικονικές - μηχανές αλλά και να τις διαμορφώσουμε κατάλληλα έτσι - ώστε να συλλέγουν και να μεταφέρουν δεδομένα, - θα χρειαστεί να δημιουργήσουμε ένα δίκτυο, πάνω στο - οποίο θα γίνουν οι επιθυμητές ενέργειες.
-1.2. Αυτόματη Εγκατάσταση Προγράμματος Σύλλογης Δεδομένων:
-Για να μπορέσουμε να συλλέξουμε δεδομένα από ένα σύνολο εικονικών μηχανών - και να τα στείλουμε σε διάφορα σημεία, θα πρέπει οι εικονικές μηχανές - να έχουν εγκαταστήσει ορισμένα πακέτα που θα περιέχουν - ειδικά εργαλεία για την κάθε διαδικασία που επιθυμούμε - να εκτελέσουν.
-Χρησιμοποιούμε το Ansible, με το οποίο δίνουμε τις διευθύνσεις - των εικονικών μηχανών που επιθυμούμε να κάνουν τις απαραίτητες εγκαταστάσεις πακέτων, - σε ένα αρχείο Inventory, καθώς και σε ένα άλλο αρχείο - fluentd.conf.yml δίνουμε ορισμένα πακέτα που θέλουμε - να εγκατασταθούν στις εικονικές μηχανές.
-Για την συλλογή δεδομένων θα χρησιμοποιήσουμε ένα ειδικό εργαλείο, - το οποίο έχει την δυνατότητα να συλλέγει δεδομένα από διάφορες πηγές - (π.χ. system logs, apache logs, web app / mobile logs, - IoT Sensors logs κλπ.) και να τα στέλνει σε διάφορα - σημεία που επιθυμούμε (π.χ. AWS, Hadoop, - Βάσεις Δεδοένων).
-Το εργαλείο που θα χρησιμοποιήσουμε ονομάζεται Fluentd και θα επιχειρήσουμε την συλλογή δεδομένων από αρχεία logs αναφορικά με διάφορα στατιστικά της εφαρμογής μας, - καθώς και από αρχεία που έχουμε γράψει μέσα σε αυτά.
-Η αποστολή και αποθήκευση της παραπάνω συλλογής δεδομένων, - όπως θα δούμε και παρακάτω, θα γίνεται αρχικά, σε - ένα αρχείο μέσα από το οποίο θα μπορούμε να δούμε - τι πληροφορίες έχουν συλλεχθεί. Έπειτα, με το κατάλληλο configuration, - η αποθήκευση των δεδομένων που συλλέχθηκαν θα γίνεται σε ένα κεντρικό σημείο και πιο συγκεκριμένα σε μια Βάση Δεδομένων. Για τους - σκοπούς του εργαστηρίου, θα χρησιμοποιήσουμε την MongoDB replica.
-Στην Ενότητα 2, θα γίνει λεπτομερής περιγραφή της αποθήκευσης - δεδομένων στην Βάση Δεδομένων.
-1.3. onEvent - Τοπική / Προσωρινή Αποθήκευση Δεδομένων:
-Όπως αναφέρθηκε στην προηγούμενη υποενότητα, με τη βοήθεια του εργαλέιου Fluentd θα ορίσουμε ποιες εικονκές μηχανές θα συλλέξουν δεδομένα - και από ποια αρχεία εισόδου για διάβασμα.
-Σε αυτό το σημείο του project, θα ορίσουμε το αρχείο εξόδου στο οποίο - θα αποθηκεύονται όλα τα συμβάντα σε περίπτωση που - υπάρξουν στα αρχεία εισόδου.
-2. Δεύτερη Ενότητα
-2.1. Δημιουργία Βάσης Δεδομένων:
-Για να μπορέσουμε να στέλνουμε δεδομένα σε μια Βάση Δεδομένων, - θα χρειαστεί να την δημιουργήσουμε πρώτα.
-Χρησιμοποιώντας το εργαλείο Mongo μπορούμε να σηκώσουμε - μια replicated Βάση Δεδομένων, να ορίσουμε το username και το password για την πρόσβασή μας σε αυτήν, καθώς - και τις πόρτες για την μελλοντική σύνδεση της Βάσης με ένα Websocket, - το οποίο θα καλυφθεί στην Ενότητα 3.
-2.2. onEvent - Αποθήκευση Δεδομένων στην Βάση:
-Αφότου δοκιμάσουμε την αποθήκευση των δεδομένων σε ένα αρχείο εξόδου, - μπορούμε έπειτα με την κατάλληλη διαμόρφωση στα configuration αρχεία του εργαλείου Fluentd, να ορίσουμε πλεόν ως - έξοδο για αποθήκευση δεδομένων την Βάση Δεδομένων, την οποία δημιουργήσαμε - μόλις.
-3. Τρίτη Ενότητα
-3.1. Δημιουργία Websocket:
-Για να μπορέσουμε να έχουμεάμεση μεταφορά των δεδομένων, - θα χρειαστεί να ενεργοποιήσουμε Server, καθώς και - την Τεχνολογία των Sockets, έτσι ώστε να έχουμε την - δυνατότητα να ζητάμε κάποια δεδομένα από τον Server (ως Clients) και - να παίρνουμε το αποτέλεσμα.
-Αυτό επιτυγχάνεται με την δημιουργία ενός Websocket, - το οποίο το θέτουμε σε λειτουργία μέσω Web Browser αφότου το προγραμματίσουμε κατάλληλα για την πόρτα στην οποία θα "ακούει" η σύνδεση.
-Για τους σκοπούς του project, θα χρησιμοποιηθεί η Υπηρεσία RESTful API μέσω του Πρωτοκόλλου REST, για την επιχείρηση σύνδεσης - ενός (ή περισσότερων) Client με έναν Server σε μια συγκεκριμένη διεύθυνση και σε μια συγκεκριμένη πόρτα.
-3.2. Σύνδεση Websocket και Βασικών Υπηρεσιών:
-Για να μπορέσουμε να μεταφέρουμε δεδομένα μέσω ενός Websocket, η μια - λύση είναι να επιχειρήσουμε την σύνδεση του Websocket που δημιουργήσαμε - προηγουμένως, με τις βασικές υπηρεσίες που δημιουργήσαμε - στην Ενότητα 1, μέσω ορίσματος κατάλληλων ports.
-3.3. Σύνδεση Websocket και Βάσης Δεδομένων:
-Μια άλλη λύση για την μεταφορά δεδομένων μέσω ενός Websocket, είναι να - επιχειρήσουμε την σύνδεση του Websocket που δημιουργήσαμε προηγουμένως, - με την Βάση Δεδομένων που δημιουργήσαμε στην Ενότητα 2, - μέσω ορίσματος κατάλληλων ports.
-