# Installation der Container rxf 2023-11-30 ### Dateien #### Directory-Struktur Die Datei **noise.tgz** enthält die folgenden Dateien und Verzeichnisse: ~~~ | +- noisesensors | +- docker-compose.yml +- log +- data | +- mongo | | +- data | | +- entries | | | +- create.js | + influx | | + data : file, : directory ~~~ * **docker-compose.yml** enthält die Anweisungen für die Docker-Container. Dies kann so an das aktuelle Portainer-Stack angehängt werden. * **log** Ablage für die Logdateien der einzelnene Container (**noise.log**, **sensorapi.log** und **readin.log**) . Diese werden täglich komprimiert. Es werden Versionen für 7 Tage aufgehoben. * **data** hier darunter befinden sich alle Daten, sowohl die Datenbanken als auch Konfigurationen. Außerdem werden jeweils die laufend eingelesenen Daten als **actdata.json** abgelegt. Diese werden bei jedem neuen Einlesen wieder überschrieben. * **data/mongo** Verzeichnis für die Mongo-Datenbank * **data/mngo/data** hier befinden sich die eingelesenen Daten * **data/mongo/entries** hier liegt die Datei **create.js**, mit deren Hilfe bei ersten Start der Datenbank die Collections und die Indexe erzeugt werden. * **data/influx** Verzeichnis für die Influx-Datenbank * **data/influx/data** Hier dann die eingelesenen Daten ### Aufrufe Entpacken des Tar-Files **noise.tgz** in einem beliebigen Verzeichnis (das Direktoty *noisesensors* wird angelegt). Der komplette Pfad zu dem Verzeichnis (also ab root) muss in der Environmentvariablen **LOCALDIR** hinterlegt werden. Nun das *docker-compose.yml* in das Portainer-Stack einfügen. Zusätzlich folgende Environment-Variablen festlegen: ~~~ DOCKER_INFLUXDB_INIT_USERNAME= DOCKER_INFLUXDB_INIT_PASSWORD= DOCKER_INFLUXTOKEN= MONGO_ROOT_USERNAME= MONGO_ROOT_PASSWORD= LOCALDIR= ~~~ \, \, \, \ und \ sind anzupassen. Danach einloggen in das Docker-Registry auf *citysensor.de*: ~~~ docker login docker.citysensor.de ~~~ Einloggen mit Username und Passwort (siehe mail), anschließend kann das Portainer-Stack gestartet werden (die Container werden beim ersten mal automatisch von *docker.citysensor.de* herunter geholt). Damit sollte dann Alles laufen. Das Programm holt alle 5min die neuesten Daten von *sensor.community* ab und speichert sie in der Influx- und in der Mongo-Datenbank. Das Logfile kann via **tail -f log/noise.log** im Verzeichnise **noisesensors** mitgeschrieben werden. ### Container * **readin** Über diesen Container werden alle 5 min. die aktuellen Daten von *sensor.community* abgeholt und in den beiden Datenbanken gespeichert * **logrotate** Mit Hilfe dieses Containers werde die Log-Files im Unterverzeichnis *log* täglich rotiert. Es werden 7 Versionen behalten, ältere gelöscht. * **sensorapi** Über diesen Container werde die Daten aus der Mongo-Datenbank ausgelesen, aufbereitet und als JSON- oder CSV-Datei ausgegeben. * **noise** Mit diesem Container wird die Grafik aufbereitet. Auch kann darüber die API (im Container *sensorapi*) angesprochen und die Daten abgerufen werden. (Für die Parameter der Anfrage siehe die extra Beschreibung **Laerm_API**). Dieser Container sollte von außen über einen Domainnamen erreichbar sein. Ansonsten hört er auf **Port 3003** auf HTTP-Anfragen. * **mongodb** Die Mongo-Datenbank. Es gibt eine Datenbank namens **sensor_data**. Diese hat folgende Collections: * noise_sensors Hier weden die reinen Messwerte der einzelnen Sensoren (time, sensorid, Werte) gesammelt. * properties Hier liegen für alle Sensoren die Metadaten (wie Ortskoordinaten, Typ, Zeitpunkt der letzten Übertragung etc.) * statistics Dient nur Kontrolle, schreibt verschiedenen Statistikdaten wie Dauer des Einlesens, Dauer des Speicherns in den DBs etc. **Zugriff:** Am Besten über das Programm **MongoDB Compass**. Zugangsdaten entprechend der im Portainer hinterlegten. * **influxdb** Die Influx-Datenbank. Hier werden in dem Bucket *sensor_data* die reinen Messwert der einzelnen Sensoren gespeichert. **Zugriff:** http://\:8086 Logindaten: Entsprechen der im Portainer hinterlegten.