plantpulse-timeseries (Zeitreihe)
Rolle
Dies ist die Engine ausschließlich für Zeitreihendaten (TSE) und das PlantPulse Dashboard. Tag-Werte werden mit zeilenweiser TTL in Aster TSDB gespeichert und über Aggregations- und Abfrage-APIs bereitgestellt.
| Element | Wert |
|---|---|
| Modulname | plantpulse-timeseries |
| Installationspfad | /opt/kopens/plantpulse-platform/plantpulse-timeseries/ |
| Engine-Port | 7800 (HTTP) · 7801 (TLS) |
| UI-Port | 3000 (PlantPulse Dashboard, nur TLS) |
pd-Dienst | timeseries — nur MASTER (seit 2026-09-05). engine(tse) → dashboard(grafana) |
| Konto | PP_TSE_USER / PP_TSE_PASSWORD |
Die Engine auf Workern wurde von niemandem gelesen und kopierte nur bereits vom Master geschriebene Zeilen erneut in denselben Ring (gemessen: 4,4 G). Da alle Abfragekonsumenten auf die Master-Engine zeigen, wurde auf MASTER-only umgestellt.
Konfiguration
Verzeichnisstruktur
plantpulse-timeseries/
├── engine/ # 시계열 엔진 (Java)
│ ├── bin/
│ ├── conf/plantpulse-timeseries-engine.conf # 생성물 (옛 이름 timeseries-engine.conf 로도 한 벌)
│ └── logs/
└── dashboard/ # PlantPulse Dashboard
├── bin/
├── conf/custom.ini # protocol = https · http_port = 3000
├── data/ # PlantPulse Dashboard DB — 이미지 트리 안 (볼륨 아님)
└── logs/
Zeitreihen-Engine (7800 · 7801)
Die Konfigurationsvorlage ist /etc/kopens/conf/plantpulse-timeseries-engine.conf.template, eine einzige, die als zwei Dateinamen gerendert wird. Kernelemente:
| Element | Wert |
|---|---|
jetty.port · jetty.ssl.port | PP_TSE_PORT(7800) · PP_TSE_TLS_PORT(7801). TLS verwendet den plattformweiten Keystore |
service.datastore | Aster-TSDB-Modul — Tabellen pp.ts_data_points usw., UnifiedCompactionStrategy |
| TTL für Datenpunkte | PP_TSE_DATAPOINT_TTL — Standard 31536000 Sekunden (365 Tage). Wird bei jedem Schreiben gesetzt, daher beginnt ein neuer Wert mit einer neuen Zeile |
| Authentifizierung | PP_TSE_USER / PP_TSE_PASSWORD — nicht für passwd.sh-Ziel, sondern Sidecar-Aktualisierung + Neustart |
curl -fsS http://127.0.0.1:7800/api/health # 컨테이너 안
curl -kfsS https://<server-ip>:7801/api/health # 밖에서 — 401 은 «로그인 필요» 이지 «없음» 이 아닙니다
Die Karte «Timeseries Engine» (7801) im Werkzeug-Bildschirm der Verwaltungskonsole ist der Verwaltungsbildschirm der Engine selbst. Der Ort zum Ansehen der Zeitreihen-Daten ist PlantPulse Dashboard.
PlantPulse Dashboard (3000)
https://<server-ip>:3000/ — antwortet nur über TLS. Der Zugriff über http:// führt zu 400.
Das Login-Konto liegt im eigenen Speicher von PlantPulse Dashboard. Der Ort zum Ändern ist der PlantPulse-Dashboard-Bildschirm (Profil → Passwort ändern) → Login-Konto für Weboberfläche — PlantPulse Dashboard
Dashboards, Datenquellen, Benutzer, Alarmregeln und API-Schlüssel liegen nun in der PostgreSQL-Datenbank grafana. Zuvor befanden sie sich in einer SQLite-Datei im Image-Baum (dashboard/data/grafana.db), sodass ein Neuerstellen des Containers alles zurücksetzte — jetzt bleiben sie erhalten.
| Variable | Wert |
|---|---|
PP_GRAFANA_DB_USER | grafana (fest — das Schema erstellt eine Rolle mit diesem Namen) |
PP_GRAFANA_DB_PASSWORD | 🔑 Beim Start erforderlich — fehlt sie, beendet sich pd start mit Exit-Code 3 |
Das Rollenpasswort wird bei jedem Boot auf den Sidecar-Wert gesetzt.
🔴 PlantPulse Dashboard verschiebt sich nicht selbst zwischen Speichern. Wenn es auf eine leere PostgreSQL-Datenbank zeigt, gibt es einfach leeres PlantPulse Dashboard — keine Dashboards, keine Datenquellen, keine Benutzer. Es gibt ein separates Verfahren, um die Inhalte aus dem alten SQLite zu übertragen.
Nach der Migration öffnet sich die Konsole mit dem PlantPulse-Dashboard-Standardkonto. Da kein Mechanismus es bei jedem Boot anpasst, muss eine Person es einmal ändern. Ein Admin-Konto in die Konfigurationsdatei zu schreiben, ist zwecklos — sobald auch nur ein Benutzer im Speicher existiert, gewinnt der Speicher, und es gibt keinen Fehler, der dies meldet.
Betriebsbefehle
docker exec plantpulse-datalake pd status timeseries
docker exec plantpulse-datalake pd restart timeseries # 엔진 + PlantPulse Dashboard
docker exec plantpulse-datalake pd logs --lines 100 timeseries
docker exec plantpulse-datalake pd retention # ts_data_points 의 크기 · 압축 전략
Häufig auftretende Probleme
| Symptom | Ursache | Maßnahme |
|---|---|---|
| Anstieg von Kafka-Lag | Zu wenig Engine-Verarbeitung · Aster-TSDB-I/O | pd flow, pd node compactionstats |
| Daten verschwinden nach wenigen Tagen | TTL | PP_TSE_DATAPOINT_TTL — das alte Image hatte ein 31-Tage-Literal. Bereits geschriebene Zeilen laufen gemäß dem alten Wert ab |
| PlantPulse Dashboard ist leer (keine Dashboards, keine Datenquellen) | Speicher auf PostgreSQL umgestellt, aber Inhalte nicht übertragen | Siehe Warnung oben — Migrationsverfahren durchführen |
pd start beendet sich mit Exit 3 | PP_GRAFANA_DB_PASSWORD ist leer | Wert im Sidecar setzen und neu starten |
http://…:3000 liefert 400 | Nur TLS | https:// |
| Dashboard reagiert langsam | Zeitbereich zu groß | Bereich verkürzen, Aggregationsintervall vergrößern |