Projeto

Geral

Perfil

README

Vitals - ES 2017/2018

Project for ES (Engenharia de Software) course of MIECT, at DETI-UA (University of Aveiro).

About

This project goal is to put in practise what we've learned throughout the course (Java EE, Microservices, etc). In our group's case, we wanted to build a system to gather and display a Heart Rate Sensor of a person, using the technologies learned. Through the course it's advised to use certain technologies, but we can still opt and have freedom to use what we want to do it. Java EE based backend, with Apache Kafka broker serving as a message handler with a dashboard to provide live (from the broker) and historic values (from the database) to the user. This combined with Continuous Integration / Deployment also with a Logging stack. To run it's asked to have Docker containers that will run all services.

Team

Our approach

A Spring Boot application serving as backend, with data stored using Java Persistence (Hibernate) that exposes a REST API that will be consumed by a React JS frontend.
The data is produced using a Apache Kafka broker that will provide live values (simulating our HR sensor) to the frontend. Periodically we store that values on our database that can be accessed also on the frontend. The Continous Integration / Deployment is done using Jenkins, and we use a ELK (Elasticsearch, Logstash, Kibana) stack.

How to run

Install Docker, Docker Compose, node and npm.

Set up vm.max_map_count to 262144 to avoid Elasticsearch errors.

Start Docker daemon.

Go to vitals folder and build the docker compose and then bring it up to start up all services.

$ sudo sysctl -w vm.max_map_count=262144

$ sudo dockerd

$ cd vitals
$ docker-compose build
$ docker-compose up

For exiting, just type Ctrl+C to stop all services.
To enter detached mode:

$ docker-compose up -d

To see Docker containers in execution:

$ docker ps

Other info

If build successful, you then can access to each service by going through each port:

  • Vitals API - Vitals application (Spring Boot)
  • Vitals Dashboard - Vitals dashboard that will consume the API (React)
  • Jenkins - Jenkins (for Continuous Integration / Deployment)
  • Kibana - Kibana (view logs and data from Logstash with search capabilities from Elasticsearch)

All ports:

  • Vitals App and API: 8090
  • Vitals Dashboard: 3000
  • Apache Kafka: 9092
  • Apache Zookeeper: 2181
  • Jenkins: 8080 / 50000
  • Elasticsearch: 9200 / 9300
  • Logstash: 5000
  • Kibana: 5601
Estatísticas
| Ramo: | Revisão:

es2017-2018_g303__git @ master

Nome Tamanho
  .idea
  dashboard
  vitals
README.md 2,63 KB

Últimas revisões

# Data Autor Comentário
370305f4 16/06/2018 21:25 Jorge Silva

delivery readme.txt

b2e79784 16/06/2018 20:15 Pedro Raimundo

Fixed some bugs

41660919 16/06/2018 19:56 Pedro Raimundo

Added jenkins

5798eb5c 22/05/2018 11:32 Diogo Filipe Candeias Ferreira

alerts complete

2770ad59 14/05/2018 00:44 Cristiano Marques Vagos

frontend:
- removed unused vars/functions from Dashboard, Readings, Sensors, Users and UsersID components
server:
- on Docker containers: fixed ELK stack, added Jenkins
- Kafka / Zookeeper to be fixed, does not work

README updated with info about ports, how to run instructions, etc

2f89afa2 13/05/2018 03:04 Cristiano Marques Vagos

frontend:
- readings page changed, added pagination, handling daily, monthly and yearly values from sensor;
- minor changes at dashboard (need more);
- changed all REST API endpoints to 8090 to match server;
server:
- added daily, monthly and yearly functioning of getting sensor values;...

e1ff0433 09/05/2018 18:50 Cristiano Marques Vagos

server: removed js related files and maven plugin, removed show sql queries on console

e8b1c8e0 09/05/2018 18:28 Cristiano Marques Vagos

frontend: latest changes on dashboard, added new pages, etc

054da841 09/05/2018 18:26 Cristiano Marques Vagos

server: kafka streams and db working on 2 group ids

aa659d95 30/04/2018 11:56 Cristiano Marques Vagos

latest changes in dashboard and backend

Ver todas as revisões | Ver revisões

Também disponível em: Atom