-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME
101 lines (76 loc) · 3.57 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
Nume: Andrei-Tudor Topala
Grupa: 341 C3
Tema 3 - Microserices platform
====================
1) BUILD
- Inainte de a porni serviciul, setati variabila de mediu `SPRC_DVP`:
> `export SPRC_DVP=/var/lib/docker/volumes`
- Pentru a porni serviciul folositi comanda:
> `run.sh`
Fisierul run creaza imaginea Docker pentru adaptor si porneste toate nourile.
2) TEST
- De indata ce toate nodurile pornesc (`docker node ps`), puteti genera input:
> `test.sh`
- Scriptul asteapta dupa pornirea interfetei grafice Grafana.
====================
3) ADAPTOR
- Se subscrie pe toate topic-urile brokerului si inseareaza datele primite
in baza de date
- Cand `DEBUG_DATA_FLOW=true`, componenta va genera message de logging.
Pentru a vizualiza mesagele de logging, folositi comanda:
> `docker service logs -f sprc3_adaptor`
- Daca datele primite de pe un topic al broker-ului nu contin timestamp,
adaptorul va adauga datelor un timestamp local inainte de a le insera
in baza de date.
====================
4) InfluxDB
- Baza de date este conectata la adaptor si la Grafana.
- InfluxDB are 2 implementari de clienti python:
influxdb: imagini pre influxdb:2.0
influxdb_client: post influxdb:2.0
Folosesc prima versiunea datorita simplitatii.
- Pentru a stoca persistent datele, se foloseste un volum a carui locatie
trebuie definita inainte de a porni nodurile:
> `export SPRC_DVP=/var/lib/docker/volumes`
- Pentru a ne conecta la baza de date: `user=root`, `password=pass`
====================
5) Broker
- Folosesc brokerul Eclipse Mosquitto care implementeaza protoculol MQTT
versiunea 5.0
- Imaginea docker de Eclipse Mosquito pe care o folosesc este 1.8 pentru
simplitate. Pentru a folosi versiunea latest este necesara setarea
`allow_anonymous true` in /mosquitto/config/mosquitto.conf prin maparea
unui fisier de pe masina host.
====================
6) Grafana
- Grafana este conectata doar la TSDB pentru a afisa datele.
- Pornirea instantei de Grafana dureaza 4-5 minute!
- Dashboard-urile au fost create din interfata grafica si au
fost exportate prin format JSON. Fisierele de configurare ale
dashboard-urilor au fost adaugate in `grafana-provisioning/dashboards/`
- Query de preluare a datelor din TSDB pentru dashboard UPB:
`SELECT mean("value") FROM /^*.*/ WHERE ("location" = 'UPB') AND $timeFilter GROUP BY time(1s) fill(none)`
- Query de preluare a datelor din TSDB pentru dashboard Battery:
`SELECT mean("value") FROM /^*.BAT*/ WHERE $timeFilter GROUP BY time(1s) fill(null)`
- Conectarea InfluxDB la Grafana a realizata in linia de comanda.
Configuratiile au fost preluate din `http://localhost:80/api/datasources` si au fost folosite
pentru a crea `influxdb.yml` din `grafana-provisioning/datasources/`
====================
7) Docker
- Fisierul `stack.yml` contine 4 retete pentru crearea nordurilor:
adaptor, broker, influxdb, grafana.
- Pentru salvarea persistenta a datelor (in cazul influxdb), am folosit volume.
- Clientii test se pot conecta la broker din afara infrastructurii docker.
- Nodul agrgator este singurul care nu foloseste o imagine publica.
De aceea ea trebuie creata inainte de a porni nodurile:
`docker-compose -f stack.yml up --build`
- Pornirea nodurilor: `docker stack deploy -c stack.yml sprc3`
- Oprirea nodurilor: `docker stack rm sprc3`
====================
8) Arhiva contine:
- stack.yml: Fisier de configurare pentru pornirea nodurilor
- adapter/: Fisiere pentru pornirea nodului adapter
- grafana-provisioning/: Fisiere configurarea Grafana la buildtime
- run.sh: Script pentru pornirea nodurilor
- test.sh: Script pentru a porni clienti de test si a adauga date in sistem
- README