Files
laermsensor-stack/noisesensors/readarchive-stack.yml
admin 23fe7d2ed2 VictoriaMetrics als zusätzliche Datenbank-Option für Messwerte ergänzt (STORE/DBASE=victoria)
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>
2026-08-20 21:31:06 +02:00

66 lines
2.6 KiB
YAML

# Eigenstaendiges Stack fuer readarchive - kein Dauerdienst, sondern ein Lauf
# mit Parametern. Liest rueckwirkend die Tagesdateien von
# archive.sensor.community ein, um Luecken zu fuellen.
#
# Dieselbe Datei dient beiden Wegen:
#
# Kommandozeile (Parameter als Argumente):
# docker compose -f readarchive-stack.yml run --rm readarchive \
# -t noise -s 2026-07-22 -e 2026-07-23 -d influx
#
# Portainer (Parameter als Environment-Variablen des Stacks):
# START=2026-07-22 END=2026-07-23 TYP=noise DBASE=influx
# -> Deploy the stack; der Container laeuft einmal durch und endet.
# Fuer den naechsten Zeitraum die Variablen aendern und
# "Update the stack".
#
# readFromcsv.js liest jeden Parameter auch aus einer Env-Variablen:
# -s = START (Default: gestern), -e = END (Default: Startdatum + 1 Tag,
# exklusiv), -t = TYP (Default: noise), -d = DBASE ('mongo', 'influx',
# 'victoria' oder 'both' = mongo+influx; Default: both),
# -p = PARALLEL (Default: 4) - so viele Sensoren werden gleichzeitig geholt.
#
# Voraussetzungen:
# * Der Haupt-Stack laeuft, denn dessen Netz wird hier eingebunden. Der Name
# ist <stack-name>_default (im Portainer unter Networks nachsehen).
# * Zugangsdaten und LOCALDIR wie im Haupt-Stack - auf der Kommandozeile aus
# einer .env neben dieser Datei, im Portainer aus den Stack-Variablen.
# * Auch mit DBASE=influx wird Mongo gebraucht (dort liegen die Metadaten der
# Sensoren), das Netz muss also beide erreichen.
# Eigener Projektname, damit dieses Compose-File auf der Kommandozeile nicht
# das Projekt des Haupt-Stacks uebernimmt (sonst "orphan containers" und ein
# versehentliches "down" trifft den ganzen Stack). Portainer setzt den
# Projektnamen ueber den Stack-Namen und ueberschreibt diesen Wert.
name: readarchive
services:
readarchive:
image: docker.citysensor.de/readarchive
environment:
MONGOHOST: mongodb
INFLUXHOST: influxdb
VICTORIAHOST: victoriametrics
MONGOAUTH: "true"
MONGOUSRP: ${MONGO_ROOT_USERNAME}:${MONGO_ROOT_PASSWORD}
INFLUXTOKEN: ${DOCKER_INFLUXTOKEN}
# leer lassen = Default (siehe oben)
START: ${START:-}
END: ${END:-}
TYP: ${TYP:-noise}
DBASE: ${DBASE:-influx}
PARALLEL: ${PARALLEL:-4}
volumes:
- ${LOCALDIR}/noisesensors/log:/var/log
- ${LOCALDIR}/noisesensors/data/readarchive:/opt/app/readarchive/data
# Einmal-Lauf: nach dem Ende nicht neu starten. Exit-Code != 0 bedeutet,
# dass Influx-Writes fehlgeschlagen sind (Details im Log).
restart: "no"
networks:
- noise
networks:
noise:
external: true
name: noisesensors_default