# System and Service Monitoring and Analysis in a Cloud Environment with Services based on Containers
## Requirements to run
1. Docker
2. Npm - node
3. Vue CLI
## Installation Process
```
git clone <insert_git_project_url>
cd Thesis
chmod 700 install.sh
./install.sh
```
## Run Web-client
```
./runw.sh
```
## Run the rest services
```
docker-compose up
```
...and you are done.
### You can access the web-client on and monitor some logs:
> http://localhost:8080
## Add your own Service to the system
All you have to do is add it to the docker-compose file or run it afterwords with a simple docker run command. You need to configure the logging driver though. Example:
```
docker run --network="thesis_playground-net" --log-driver=fluentd --log-opt tag="mongo.node3" -p 3003:3001 dummyservice
```
You will need to mention a tag as "mongo.whateveryouwant" to be able to see your logs. If your service is a **mongoDB**, a **nodejs** app, or a **redis** you can pick the right tag so you can see your logs. Tags that are already known to the app are "mongo.node", "mongo.redis", "mongo.mongodb"
## IMPORTANT if you run this localy.
For the web-client to run you will need to visit https://api-login.swarmlab.io:8089/ and login with your credentials so you will get a token. The token is visible in the url after your login.
Then, you will need to copy the url and paste it into the file runLlo.vue, which is into playground-client/src/components/doclive/
The line of code that needs to be replaced is the line 626 where you can see a url string. Replace it with your url and save it. The project will refresh and now you will be able to use the web-client.
## Ansible Deployment for Swarlab-Hybrid (not finished)
An extra deployment method is currently under development so the files:
```
mongo.yml
monitorall.yml.sh
node.yml
inventory.yml
```
are to be ignored completely at the moment.
# Important files (in greek)
## **Playground-client**
Αρχικά, πρόκειται για ένα σχετικά βασικό vue.js project. Οπότε η κατανόηση του κώδικα απαιτεί μία τυπική γνώση της δομής ενός vue αρχείου.
> ### playground-client/src/components/runLlo.vue
Component που ασχολείται με την τύπωση των logs on-event. Ο κώδικας ειναι σχολιασμένος.
Component που ασχολείται με την τύπωση των logs στο στάδιο της ευρετηρίασης και του διαγράμματος. Ο κώδικας είναι σχολιασμένος.
## **readmongo**
Project γραμμένο σε node.js/express.js
> ### readmongo/swarmlab-app/src/run/app.js
Βασικό αρχείο που τρέχει κατά την εκτέλεση του server. Όλες οι σόκετ συνδέσεις και τα api-endpoints είναι γραμμένα εδώ. Ο κώδικας περιέχει αρκετά σχόλια για μελέτη.
## **WriteToMongo**
Project που χρησιμοποιεί το εργαλείο fluentd
> ### WriteToMongo/fluent/fluent.conf
Βασικό αρχείο που διαχειρίζεται τα logs που του έρχονται. Χρειάζεται μελέτη του documentation για την πλήρη κατανόηση της διαχείρισης που γίνεται.
## **dummyservice**
"Χαζό" μικρό node.js project με κάποια απλά api endpoints, για την παραγωγή test logs. Έχει το ίδιο structure με το readmongo service.
# Containers και Πορτες (ports)
## Redis - 6379
Ακούει στην πόρτα 6379 και το όνομα του container που λαμβάνει μετά την εκτέλεση του docker-compose είναι το "redisserver"
## MongoDB - 27017
Ακούει στην πόρτα 27017 και το όνομα του container είναι "mongo"
## Fleuntd - 24224
Ακούει στην πόρτα 24224 και το όνομα του container που λαμβάνει είναι "fluentd"
## Server γραμμένος σε node.js - 3000
Ακούει στην πόρτα 3000 και το όνομα του container είναι readmongo_service
## Χαζό service -3001
Ακούει στην πόρτα 3001 και το όνομα του container είναι dummy_service