23fe7d2ed2
Dritte, zu mongo/influx exklusive Auswahl für die laufenden Messwerte. Schreibpfad nutzt das bestehende Influx-Line-Protocol unverändert (common/victoria_post.js); Lesepfad (sensorapi/databases/victoria.js + victoria2json.js) holt Rohdaten per VictoriaMetrics' /api/v1/export und bucketet/aggregiert stundenweise clientseitig, nach Mongo-Konvention (Stunden-Start als Label, kein Zeit-Shift nötig wie bei Influx). Scope bewusst auf die schon heute per DBASE umschaltbaren Funktionen begrenzt (getActData/getNoiseAVGData) - getAvgData/getLongAvg/getGeigerData bleiben wie bisher. Docker-Compose um victoriametrics-Service ergänzt (Retention explizit auf 100y gesetzt, da VictoriaMetrics sonst nach 1 Monat Daten löscht). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
117 lines
3.4 KiB
YAML
117 lines
3.4 KiB
YAML
services:
|
|
mongodb:
|
|
image: mongo:7
|
|
volumes:
|
|
- ${LOCALDIR}/noisesensors/data/mongo/entries:/docker-entrypoint-initdb.d
|
|
- ${LOCALDIR}/noisesensors/data/mongo/data:/data/db
|
|
ports:
|
|
- "27017:27017"
|
|
container_name: mongodb
|
|
environment:
|
|
- MONGO_INITDB_DATABASE=sensor_data
|
|
- MONGO_INITDB_ROOT_USERNAME=${MONGO_ROOT_USERNAME}
|
|
- MONGO_INITDB_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD}
|
|
restart: unless-stopped
|
|
|
|
influxdb:
|
|
image: influxdb:2.0
|
|
ports:
|
|
- '8086:8086'
|
|
volumes:
|
|
- ${LOCALDIR}/noisesensors/data/influx/data:/var/lib/influxdb2
|
|
environment:
|
|
DOCKER_INFLUXDB_INIT_MODE: setup
|
|
DOCKER_INFLUXDB_INIT_USERNAME: ${DOCKER_INFLUXDB_INIT_USERNAME}
|
|
DOCKER_INFLUXDB_INIT_PASSWORD: ${DOCKER_INFLUXDB_INIT_PASSWORD}
|
|
DOCKER_INFLUXDB_INIT_ORG: citysensor
|
|
DOCKER_INFLUXDB_INIT_BUCKET: sensor_data
|
|
DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: ${DOCKER_INFLUXTOKEN}
|
|
restart:
|
|
unless-stopped
|
|
container_name: influxdb
|
|
|
|
victoriametrics:
|
|
image: victoriametrics/victoria-metrics:v1.102.0
|
|
ports:
|
|
- "8428:8428"
|
|
volumes:
|
|
- ${LOCALDIR}/noisesensors/data/victoria/data:/victoria-metrics-data
|
|
command:
|
|
- "--storageDataPath=/victoria-metrics-data"
|
|
- "--retentionPeriod=100y"
|
|
restart: unless-stopped
|
|
container_name: victoriametrics
|
|
|
|
readin:
|
|
image: docker.citysensor.de/readin
|
|
environment:
|
|
MONGOHOST: mongodb
|
|
INFLUXHOST: influxdb
|
|
VICTORIAHOST: victoriametrics
|
|
TYP: "[\"noise\"]"
|
|
STORE: ${STORE:-mongo}
|
|
MONGOAUTH: true
|
|
MONGOUSRP: ${MONGO_ROOT_USERNAME}:${MONGO_ROOT_PASSWORD}
|
|
INFLUXTOKEN: ${DOCKER_INFLUXTOKEN}
|
|
volumes:
|
|
- ${LOCALDIR}/noisesensors/log:/var/log
|
|
# Pfad im Image ist jetzt /opt/app/readin, weil readin und readarchive
|
|
# sich common/ teilen und das Layout das Repository spiegelt
|
|
- ${LOCALDIR}/noisesensors/data:/opt/app/readin/data
|
|
container_name: readin
|
|
restart: unless-stopped
|
|
|
|
logrotate:
|
|
image: linkyard/logrotate
|
|
volumes:
|
|
- ${LOCALDIR}/noisesensors/log:/logs
|
|
environment:
|
|
LOGROTATE_SIZE: "100k"
|
|
LOGROTATE_ROTATE: "7"
|
|
LOGROTATE_CRON: "daily"
|
|
restart: unless-stopped
|
|
container_name: logrotate
|
|
|
|
sensorapi:
|
|
image: docker.citysensor.de/sensorapi
|
|
container_name: sensorapi
|
|
volumes:
|
|
- ${LOCALDIR}/noisesensors/log:/var/log
|
|
environment:
|
|
INFLUXHOST: influxdb
|
|
INFLUXTOKEN: ${DOCKER_INFLUXTOKEN}
|
|
VICTORIAHOST: victoriametrics
|
|
DBASE: ${DBASE:-influx}
|
|
MONGOHOST: mongodb
|
|
MONGOAUTH: true
|
|
MONGOUSRP: ${MONGO_ROOT_USERNAME}:${MONGO_ROOT_PASSWORD}
|
|
restart: unless-stopped
|
|
|
|
noise:
|
|
image: docker.citysensor.de/noise
|
|
volumes:
|
|
- ${LOCALDIR}/noisesensors/log:/var/log
|
|
container_name: noise
|
|
environment:
|
|
APIHOST: http://sensorapi:3005
|
|
ports:
|
|
- "3003:3000"
|
|
restart: unless-stopped
|
|
|
|
esp2sensor:
|
|
image: docker.citysensor.de/esp2sensor
|
|
container_name: esp2sensor
|
|
volumes:
|
|
- ${LOCALDIR}/noisesensors/log:/var/log
|
|
environment:
|
|
MONGOHOST: mongodb
|
|
MONGOAUTH: true
|
|
MONGOUSRP: ${MONGO_ROOT_USERNAME}:${MONGO_ROOT_PASSWORD}
|
|
SESSION_SECRET: ${ESP2SENSOR_SESSION_SECRET}
|
|
DEV_AUTO_LOGIN: "false"
|
|
APIHOST: http://sensorapi:3005/api/
|
|
ports:
|
|
- "3004:3000"
|
|
restart: unless-stopped
|
|
|