plantpulse-data-gateway (Daten-Gateway)
Rolle
Dies ist ein HTTP REST + JDBC Gateway, über das externe Systeme und die Konsole sicher auf Daten zugreifen. Es ist die Sicherheits-, Berechtigungs- und Audit-Schicht, die den direkten Zugriff auf den Speicher verhindert und stattdessen den Zugriff ausschließlich über dieses Gateway erzwingt — und seit dem 2026-09-07 zugleich der SQL-Ausführungsbildschirm der Konsole.
| Element | Wert |
|---|---|
| Modulname | plantpulse-data-gateway |
| Installationspfad | /opt/kopens/plantpulse-platform/plantpulse-data-gateway/ |
| Port | 5500 (HTTP) · 5501 (TLS) |
pd-Dienst | data-gateway — nur MASTER |
| API-Authentifizierung | X-API-Key: <PP_DATA_GATEWAY_API_KEY> |
| Konsolen-Login | PP_DATA_GATEWAY_WEB_USER / PP_DATA_GATEWAY_WEB_PASSWORD — wenn leer, wird nur die Konsole geschlossen |
Aufbau
Es verbindet sich per JDBC mit vier Backends — deshalb lassen sich SQL · CQL · TQL · Spark SQL auf einem einzigen Konsolenbildschirm nutzen.
Verzeichnisstruktur
plantpulse-data-gateway/
├── config/ # 생성물
│ ├── plantpulse-jdbc.properties # ← plantpulse-jdbc.properties.template — 백엔드 접속과 계정
│ └── plantpulse-data-gateway.properties # ← plantpulse-data-gateway.properties.template — 제한 · 타임아웃
├── bin/start.sh stop.sh
└── server/ # 내장 Tomcat — webapps/ROOT.war · logs/
Wichtige Konfiguration
Der Kern von plantpulse-jdbc.properties.template — Backend-Netz und Zugangsdaten werden hier vollständig gerendert.
jdbc.postgres.url = jdbc:postgresql://${PP_POSTGRES_HOST}:${PP_POSTGRES_PORT}/${PP_DB_NAME}
jdbc.cassandra.url = jdbc:cassandra://${PP_CASSANDRA_HOST}:${PP_CASSANDRA_PORT}/${PP_SCHEME}
jdbc.tse.url = jdbc:ts://${PP_TSE_HOST}:${PP_TSE_PORT}/${PP_SCHEME}
jdbc.spark.url = jdbc:spark://${PP_SPARK_HOST}:${PP_KYUUBI_PORT}/default/${PP_SCHEME}
data.gateway.api.key = ${PP_DATA_GATEWAY_API_KEY} # X-API-Key
data.gateway.web.user = ${PP_DATA_GATEWAY_WEB_USER} # 콘솔 로그인
data.gateway.web.password = ${PP_DATA_GATEWAY_WEB_PASSWORD}
plantpulse-data-gateway.properties.template — Betriebsgrenzen:
data.gateway.rate.limit=1000 # 초당 요청
data.gateway.slow.query.ms=10000 # 이보다 느리면 슬로우 로그
data.gateway.async.timeout.ms=60000
SQL-Konsole
Öffnen Sie sie über https://<server-ip>:5501/ und melden Sie sich mit PP_DATA_GATEWAY_WEB_USER / PP_DATA_GATEWAY_WEB_PASSWORD an. Sie erscheint auf dem Werkzeuge-Bildschirm der Verwaltungskonsole als Data-Gateway-Karte.
Ist das Passwort leer, weist das Login-Formular die Anmeldung ab. Tragen Sie es im Sidecar ein und starten Sie neu → Login-Konten der Web-Oberfläche
Wichtige APIs
# 표준 헬스체크 (익명, readiness — DB · InMemory · QueryLog 정상 시에만 UP. 이 경로만 HTTPS 강제 제외)
curl -fsS http://127.0.0.1:5500/api/health
# 200 {"status":"UP","service":"plantpulse-data-gateway-web",…,"checks":{"database":true,"inmemory":true,"query_log":true}}
# 태그 시계열 조회 (API 키 필요)
curl -fsS -H "X-API-Key: ${PP_DATA_GATEWAY_API_KEY}" \
"http://127.0.0.1:5500/api/v1/tags/TAG_001/values?from=2026-05-30T00:00:00Z&to=2026-05-30T23:59:59Z&limit=10000"
# QPS · 지연 메트릭
curl -fsS -H "X-API-Key: ${PP_DATA_GATEWAY_API_KEY}" http://127.0.0.1:5500/api/v1/metrics
Betriebsbefehle
docker exec plantpulse-datalake pd status data-gateway
docker exec plantpulse-datalake pd restart data-gateway
docker exec plantpulse-datalake pd logs --lines 100 data-gateway
Häufig auftretende Probleme
| Symptom | Ursache | Maßnahme |
|---|---|---|
| 403 / 401 | API-Key stimmt nicht überein | passwd.sh PP_DATA_GATEWAY_API_KEY — Server und Gateway gemeinsam |
| Konsolen-Login wird abgelehnt | PP_DATA_GATEWAY_WEB_PASSWORD leer | Sidecar + restart-datalake.sh |
| Nur Spark SQL funktioniert nicht | Kyuubi nicht gestartet | pd status analytics — falls gerade erst gestartet, nach 1 Minute erneut |
| Antwort langsam | Backend-Last | Slow-Log prüfen, Query-Zeitbereich verkürzen |
| 504 | Reverse-Proxy-Timeout | nginx proxy_read_timeout |