Zum Hauptinhalt springen

Systemüberwachung

Übersicht​

Die Überwachung von PlantPulse besteht aus 3 Schichten. Durch die kombinierte Nutzung der Werkzeuge jeder Schicht können Probleme frühzeitig erkannt und schnell behoben werden.

SchichtVerantwortungFrequenz
L1 Host/StackContainer-Status/Health, Ressourcenauslastung, Health-AntwortenJede Minute bis 5 Min. (Auto/Manuell)
L2 Plattform-integriertGeschäftsmetriken pro Modul (Durchsatz, Lag, Warteschlangentiefe, JVM)Echtzeit
L3 Externe ÜberwachungLangzeittrends, Alarme, konsolidierte Ansicht über mehrere HostsEchtzeit

Plattform-Servicemodule​

PlantPulse besteht aus mehreren Servicemodulen, die mit dem Präfix plantpulse- beginnen. Module und Container stehen nicht in einer 1:1-Beziehung — sechs Applikationen haben jeweils einen eigenen Container, während die übrigen Infrastrukturmodule gemeinsam in einem einzigen plantpulse-datalake Container laufen.

OrtModul
Eigener Containerplantpulse-server-web · plantpulse-batch-web · plantpulse-warehouse-web · plantpulse-plugin-opcua · plantpulse-plugin-aasx · plantpulse-ha
Im plantpulse-datalake Containerstorage · messaging · analytics · timeseries · workflow · cep · data-gateway · sql · monitor · backup

Der Status auf Containerebene wird auf dem Host über bin/status.sh geprüft, während der Status der Module innerhalb des Data Lake über status.sh im Container eingesehen wird. Die unten aufgeführten «Ports» sind die Ports, die das Modul innerhalb des Containers öffnet; nur ein Teil davon wird auf dem Host geöffnet → Port-Konfigurationsinformationen

Kern-Servicemodule​

ModulPortBeschreibung
plantpulse-server80 / 443Webserver und Verwaltungskonsole, REST API
plantpulse-cep7400 / 7401Complex Event Processing Engine (Aster CEP)
plantpulse-batch9500Batch-Verarbeitungsserver
plantpulse-data-gateway5500Daten-Gateway (HTTP REST-basierte Datenabfrage)
plantpulse-datalake-admin-api4950 (HTTPS)API der Verwaltungskonsole und Überwachungsagent. Einziger Health-Port, der auf dem Host veröffentlicht wird
plantpulse-warehouse-web9600Data Warehouse
plantpulse-plugin-opcua11004 / 11005OPC-UA Server-Plugin
plantpulse-plugin-aasx(Host nicht öffentlich)AASX Server-Plugin
plantpulse-ha10210Redundanz-Wiederherstellungsdaemon
plantpulse-proxy80 / 443 / 1883 / 1884Einziger Zugangspunkt für Benutzer und Anlagen

Messaging-Module (plantpulse-messaging)​

ServicePortBeschreibung
Kafka9092Distribuiertes Message Streaming
MQTT1883Leichtgewichtiges IoT-Messaging-Protokoll
MQTT Enterprise-MQTT Enterprise Edition

Storage-Module (plantpulse-storage)​

ServicePortBeschreibung
Cassandra 6.09042Zeitreihen-Datenbank (CQL)
PostgreSQL5432Relationale Datenbank für Metadaten
Valkey (Redis)6379In-Memory Cache
RustFS9000Object Storage (S3 kompatibel)
JanusGraph-Graph-Datenbank
RustFS / WeedFS-Distribuiertes Dateisystem

Analyse-Module (plantpulse-analytics)​

ServicePortBeschreibung
Spark Master7077Distribuiertes Analyse-Engine
Spark UI4440Spark Verwaltungskonsole
Kyuubi10000Distribuiertes SQL-Gateway (JDBC/Thrift)
Gravitino19001Datenkatalog
Hadoop-Distribuiertes Dateisystem
Hive-Data Warehouse Query Engine

Zeitreihen-Module (plantpulse-timeseries)​

ServicePortBeschreibung
Zeitreihen-Engine7800Engine zur Verarbeitung von Zeitreihendaten
Zeitreihen-UI3000UI zur Visualisierung von Zeitreihendaten

Workflow-Module (plantpulse-workflow)​

ServicePortBeschreibung
Temporal7233Distribuiertes Workflow-Engine (Web UI 8233)
Kestra8380Workflow-Orchestrierung / Scheduler

Utility-Module​

ModulBeschreibung
plantpulse-datalake-cli (pd)CLI für Start/Stopp/Neustart, Konfiguration und Knotenmanagement des Data Lake
plantpulse-setupInitial Setup Tool (Modelle, CSV-Konfiguration)
plantpulse-backupBackup-Service
plantpulse-recoveryDatenwiederherstellungstool
plantpulse-exporterAsset-Daten-Exporttool
plantpulse-migratorDatenmigrationstool (Spark-basiert)
plantpulse-mirror-makerDatenreplikationstool
plantpulse-simulatorDatensimulator (für Tests)
plantpulse-apiREST API Client-Bibliothek

Überprüfung des Service-Status​

Prüfen Sie zuerst den Gesamtstatus des Stacks auf dem Host.

cd /opt/kopens/plantpulse-platform-docker/bin
./status.sh # 0 = 정상 / 2 = 비정상
./ops-check.sh # 헬스 + 최근 critical log

Den Status der Infrastrukturmodule auf Port-Ebene prüfen Sie innerhalb des Data-Lake-Containers.

./shell.sh
/opt/kopens/plantpulse-platform/plantpulse-datalake-cli/bin/pd status

Beispielausgabe:

==============================================================================================================
PLANTPULSE PLATFORM - ALL SERVICE STATUS
2026-03-01 12:00:00
==============================================================================================================

<SYSTEM RESOURCE OVERVIEW>
--------------------------------------------------------------------------------------------------------------
포트 서비스 상태
--------------------------------------------------------------------------------------------------------------
9092 PP_MESSAGING[KAFKA] ● RUNNING
1883 PP_MESSAGING[MQTT] ● RUNNING
9042 PP_STORAGE[CASSANDRA] ● RUNNING
5432 PP_STORAGE[POSTGRESQL] ● RUNNING
6379 PP_STORAGE[REDIS] ● RUNNING
9000 PP_STORAGE[MINIO] ● RUNNING
7077 PP_ANALYTICS[SPARK-MASTER] ● RUNNING
4440 PP_ANALYTICS[SPARK-UI] ● RUNNING
10000 PP_ANALYTICS[KYUUBI] ● RUNNING
19001 PP_ANALYTICS[GRAVITINO] ● RUNNING
7233 PP_WORKFLOW[ENGINE] ● RUNNING
8380 PP_WORKFLOW[BATCH] ● RUNNING
7800 PP_TIMESERIES[ENGINE] ● RUNNING
3000 PP_TIMESERIES[UI] ● RUNNING
7400 PP_CEP ● RUNNING
5500 PP_DATA_GATEWAY ● RUNNING
4000 PP_SQL ● RUNNING
4950 PP_MONITOR ● RUNNING
60000 PP_AGENT ● RUNNING
80 PP_SERVER ● RUNNING
9500 PP_BATCH ● RUNNING
9600 PP_WAREHOUSE ● RUNNING
11004 PP_PLUGIN[OPCUA] ● RUNNING
In der obigen Liste werden App-Container nicht angezeigt

status.sh innerhalb des Data Lake betrachtet nur die Module dieses Containers. Es handelt sich nicht um eine Störung, auch wenn die Einträge PP_SERVER · PP_BATCH · PP_WAREHOUSE · PP_PLUGIN als STOPPED angezeigt werden oder ganz fehlen — diese Applikationen laufen in ihren eigenen Containern, und die Beurteilung erfolgt über bin/status.sh auf dem Host.

Umgebungsvariablen​

Werte auf der Hostseite werden durch /opt/kopens/plantpulse-platform-docker/bin/env.sh bestimmt, während die Werte, die der Container tatsächlich sieht, durch compose/docker-compose.yml festgelegt werden. Detaillierte Beziehungen und Prioritäten finden Sie in der Referenz für Umgebungsvariablen. Nachfolgend sind die Namen aufgeführt, die innerhalb des Containers gültig sind.

VariableBeschreibungBeispiel
PP_SCHEMESchemanamePP
PP_MODEBetriebsmodusMASTER
PP_HOST_IPInterne IP192.168.0.41
PP_SERVICE_IPService-IP192.168.0.41
PP_MASTER_IPMaster-Knoten-IP192.168.0.41
PP_DATA_DIRDatenverzeichnis/data1/pp-data
PP_TEMP_DIRTemporäres Verzeichnis/data1/pp-temp
PP_BACKUP_DIRBackup-Verzeichnis/data1/pp-backup
PP_CLUSTER_CORESAnzahl der Cluster-CPU-Kerne16
PP_CLUSTER_MEMORY_BY_CORESpeicher pro Kern2G
PP_OPTIONSZusätzliche Optionen (JSON){"use-infra":true,"use-app":true}

Überwachungsobjekte​

Nachfolgend sind die wichtigsten Objekte und Elemente aufgeführt, die auf der PlantPulse-Plattform überwacht werden sollten. Eine regelmäßige Überprüfung dieser Punkte trägt zu einem stabilen Betrieb bei.

ObjektÜberwachungspunkte
ApplikationsserverCPU, Speicher, Disk, Threads
JVMHeap-Speicher, GC, Class Loading
PostgreSQLConnection Pool, Query-Performance, Disk
Aster TSDBCluster-Status, Latenz, Compaction
RedisSpeicher, Hit-Rate, Verbindungsanzahl
EnginePipeline-Durchsatz, Warteschlangentiefe, Fehlerrate
NetzwerkOPC-Verbindung, WebSocket, Latenz

Überwachung über die Webkonsole​

Systemüberwachungsbildschirm​

Pfad: /monitoring/index

Zeigt den Echtzeit-Systemstatus in Form eines Dashboards an. Wenn eine Kennzahl den «Normalbereich» in der folgenden Tabelle verlässt, kann dies die Ursache für eine Performance-Minderung sein und sollte überprüft werden.

KennzahlBeschreibungNormalbereich
CPU-AuslastungCPU-Last des Servers< 70%
JVM Heap-SpeicherHeap-Auslastung / Maximum< 80%
Aktive ThreadsAnzahl der laufenden Threads< 500
MPS (Messages/sec)Anzahl der verarbeiteten Nachrichten pro SekundeUnter dem eingestellten Rate-Limit
Pipeline-WarteschlangeAnzahl der wartenden Nachrichten< 10.000
DB-VerbindungenAnzahl der aktiven DB-Verbindungen< Pool-Maximum

Serverstatus​

Pfad: /server/status

PunktBeschreibung
Server-BetriebszeitUptime
Engine-StatusRUNNING / STOPPED / ERROR
Letzter StartzeitpunktZeitstempel des letzten Engine-Starts
VersionsinformationPlattformversion

Log-Überwachung​

Logs sind Textdateien, die den Betriebszustand des Systems aufzeichnen. Bei Problemen hilft die Analyse der Logs erheblich bei der Ursachenermittlung.

Auf dem Host — logs.sh​

Da es acht Container gibt, ist es am schnellsten, ohne Argumente zu starten, wenn nicht bekannt ist, in welchem Container das Problem liegt.

cd /opt/kopens/plantpulse-platform-docker/bin

./logs.sh # 여덟 컨테이너를 시간순으로 한 화면에 (서비스 이름 접두)
./logs.sh plantpulse-server-web -n 200 # 웹 서버 컨테이너
./logs.sh cassandra # 데이터레이크 안 컴포넌트 로그 파일
./logs.sh --list # 볼 수 있는 대상 전체 (그 시점의 실제 목록)
./logs.sh -f plantpulse-server-web # 계속 따라가기 (Ctrl-C 로 종료)

Standardmäßig werden die letzten N Zeilen (Standard 200) ausgegeben und der Vorgang beendet. Um den Logs zu folgen, fügen Sie -f hinzu.

Log-Dateien im Container​

# 웹 서버 — 자기 컨테이너 안에 있습니다
./shell.sh plantpulse-server-web
tail -f /opt/kopens/plantpulse-platform/plantpulse-server/logs/system.log
grep -i "ERROR\|EXCEPTION" /opt/kopens/plantpulse-platform/plantpulse-server/logs/system.log | tail -100

# 인프라 — 데이터레이크 컨테이너 안
./shell.sh
tail -f /opt/kopens/plantpulse-platform/plantpulse-storage/db/cassandra/logs/system.log

Um Logs gesammelt auf den Host zu kopieren, verwenden Sie ./tools/copy-log-to-local.sh; für Bundles zur Support-Anfrage nutzen Sie ./doctor.sh.

Log-Level​

LevelBeschreibung
INFOInformationen zum Normalbetrieb
WARNWarnmeldungen (z.B. Performance-Minderung, Wiederholungsversuche)
ERRORFehler aufgetreten (Verarbeitungsfehler, Verbindungsfehler etc.)

Wichtige Log-Muster​

Ergreifen Sie bei Auftreten der folgenden Log-Muster die entsprechenden Maßnahmen:

MusterBedeutung
Engine started successfullyEngine wurde erfolgreich gestartet
Pipeline queue overflowPipeline-Warteschlange überschritten — bitte Verarbeitungsgeschwindigkeit prüfen
Cassandra connection failedVerbindung zu Aster TSDB fehlgeschlagen — bitte Cluster-Status prüfen
OPC connection lostVerbindung zum OPC-Server unterbrochen — bitte Netzwerk und OPC-Server prüfen
Rate limit exceededDurchsatz überschritten — bitte Wert für engine.pipeline.ratelimit anpassen

Datenbanküberwachung​

Eine regelmäßige Überwachung des Datenbankstatus hilft dabei, Performance-Minderungen oder Ausfälle präventiv zu verhindern.

PostgreSQL​

# 활성 연결 확인
psql -h HOST -U plantpulse -d pp -c "
SELECT count(*) as active_connections
FROM pg_stat_activity
WHERE state = 'active';"

# 느린 쿼리 확인
psql -h HOST -U plantpulse -d pp -c "
SELECT pid, now() - pg_stat_activity.query_start AS duration, query
FROM pg_stat_activity
WHERE state != 'idle' AND now() - pg_stat_activity.query_start > interval '5 seconds'
ORDER BY duration DESC;"

# 테이블 크기 확인
psql -h HOST -U plantpulse -d pp -c "
SELECT relname, pg_size_pretty(pg_total_relation_size(relid))
FROM pg_catalog.pg_statio_user_tables
ORDER BY pg_total_relation_size(relid) DESC
LIMIT 10;"

Aster TSDB​

# 클러스터 상태
nodetool status

# 테이블별 통계
nodetool tablestats pp

# 컴팩션 상태
nodetool compactionstats

# GC 로그 확인
nodetool gcstats

# 지연 히스토그램
nodetool tablehistograms pp tm_tag_point

Aster TSDB Statuscodes:

StatusBeschreibung
UNUp / Normal — Normalzustand
DNDown / Normal — Knoten ist ausgefallen
UJUp / Joining — Tritt dem Cluster bei
ULUp / Leaving — Verlässt den Cluster

Redis​

# Redis 상태 확인
redis-cli -a 설치-시-변경 INFO

# 메모리 사용량
redis-cli -a 설치-시-변경 INFO memory

# 키 수 확인
redis-cli -a 설치-시-변경 DBSIZE

# 슬로우 로그
redis-cli -a 설치-시-변경 SLOWLOG GET 10

JMX-Überwachung​

Hinweis: JMX (Java Management Extensions) ist eine Technologie, die es ermöglicht, den internen Zustand von Java-Applikationen extern zu überwachen. PlantPulse stellt über JMX mehr als 150 Attribute zur Verfügung.

JMX-Verbindung​

# JMX 포트 활성화 (setenv.sh에 추가)
export JAVA_OPTS="$JAVA_OPTS \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=9090 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false"

JMX MBean​

  • ObjectName: plantpulse:name=MBean
  • Kategorien: engine, cache, storage, network, pipeline, cep, scheduler, monitoring sowie 4 weitere (insgesamt 12)

Wichtige JMX-Attribute​

AttributBeschreibung
engine.statusEngine-Status
engine.uptimeBetriebszeit
pipeline.queue.sizePipeline-Warteschlangengröße
pipeline.mpsNachrichten pro Sekunde
cache.tag.countAnzahl der gecachten Tags
storage.cassandra.statusAster TSDB Verbindungsstatus

Codahale Metrics​

Hinweis: Codahale Metrics ist eine Bibliothek zur Erfassung von Performance-Kennzahlen einer Applikation. In PlantPulse werden über 70 Metriken erfasst, die unter dem Pfad /admin/tool/metrics eingesehen werden können.

Metrik-Typen​

TypBeschreibung
CounterKumulativer Zähler (z.B. Anzahl Ereignisse, Anzahl Fehler)
TimerMisst Verarbeitungszeiten (Durchschnitt, p95, p99)
HistogramZeigt die Verteilung von Werten (Warteschlangentiefe, Batch-Größe)
GaugeZeigt den Wert zum aktuellen Zeitpunkt (Aktive Verbindungen, Speicher)

Standard-Healthcheck-API​

Web-Apps und Plugin-Services bieten einen Healthcheck-Endpunkt gemäß der gemeinsamen Plattformspezifikation an: GET /api/health. In den Haupt-Web-Apps (server / batch / cep / sql / data-gateway) bedeutet dieser Endpunkt Readiness. Ein Status UP wird nicht allein dadurch gemeldet, dass der Prozess (Kontext) läuft, sondern nur dann, wenn die interne Engine / Kernabhängigkeiten normal funktionieren und die App bereit ist, Traffic zu empfangen (Plattform-Designentscheidung 2026-06).

curl -fsS http://127.0.0.1:9500/api/health
# 준비 완료: 200 {"status":"UP","service":"plantpulse-batch-web","ts":1765500000000,"checks":{"timer":true,"redis":true}}
# 기동 진행 중: 503 {"status":"STARTING",...}
# 기동 후 의존성 다운: 503 {"status":"DEGRADED",...,"checks":{...}}
  • Readiness — meldet 200 UP nur bei vollständiger Bereitschaft. Während des Startvorgangs wird 503 STARTING gemeldet, und wenn nach dem Start einige Abhängigkeiten ausfallen, wird 503 DEGRADED zurückgegeben.
  • Kein Dependency-Ping — «checks» lesen nur die In-Memory-Statusflags, die jeder Service bereits pflegt (Live-DB-Abfragen oder Netzwerk-Pings sind untersagt, um die Datenspeicher nicht durch Polling zu belasten).
  • Anonymer Zugriff — kann ohne Authentifizierung aufgerufen werden (für Betriebsprüfungen / automatisierte Deployment-Verifizierung).
  • Caching-Verbot — Header der Reihe Cache-Control: no-cache sind immer enthalten.
  • Die Antwortfelder bestehen aus status / service (Artefaktname) / ts (epoch ms) sowie checks (DetailsService-Check-Details) für Readiness- promovierte Services.
ServiceHealth URLBedeutungchecks / Bemerkung
serverhttp://HOST:80/api/healthreadinessengine — Engine-Lifecycle-Status (UP nur bei Abschluss aller vorherigen Startphasen RUNNING)
batchhttp://HOST:9500/api/healthreadinesstimer (Batch-Pipeline läuft) / redis (InMemory-Verbindung)
cephttp://HOST:7400/api/healthreadinessengine (CEP Engine+Consumer+Recovery abgeschlossen) / redis (InMemory-Verbindung)
sqlhttps://HOST:4001/api/healthreadinessdatabase_manager (DB-Manager Initialisierung abgeschlossen) — wird über HTTPS bereitgestellt
data-gatewayhttp://HOST:5500/api/healthreadinessdatabase / inmemory / query_log — nur dieser Pfad ist von HTTPS-Zwang (CONFIDENTIAL) ausgenommen, localhost-HTTP-Probes sind erlaubt
warehouse (S3 Service)http://HOST:9600/api/healthreadinesstemporal — Status der Temporal-Worker-Registrierung. Wenn nicht registriert: STARTING + 503 (Webserver startet zuerst, Worker folgt, daher ist 503 unmittelbar nach Boot normal). Enthält 3 gemeinsame Felder + System/JVM-Metriken
plugin — AAS V3http://HOST:8090/api/healthlivenessKeine Readiness-Promovierung
plugin — OPC-UA Browse UIhttp://HOST:12780/api/healthlivenessPort konfiguriert über opc.ua.browser.ui.port (Standard 12780)

Es gibt zwei Verwendungszwecke:

  1. Betriebsprüfung — manuelle Überprüfung, crontab / externe Überwachung mittels Readiness-Probes.
  2. Automatisierte CI-Deployment-Verifizierung — ein deploy:dev Job pollt nach dem Deployment diese URL (DEPLOY_HEALTH, 240 Sek.), um den Start zu bestätigen (siehe Konfigurations- und Deployment-Guide). Da es die Readiness bedeutet, ist ein 503 während des Bootvorgangs normal; das Polling wartet auf den Wechsel zu UP.

Rollenunterscheidung: plantpulse-datalake-admin-api (:4950) ist ein Infrastruktur-Überwachungsagent, der Host-, JVM- und Modulkennzahlen sammelt und exponiert, während /api/health der von jeder Web-App selbst bereitgestellte Readiness-Endpunkt ist. Sie ersetzen sich nicht gegenseitig, sondern ergänzen sich.

In Containerumgebungen wird die Readiness jeder App bereits durch den Healthcheck von Compose beurteilt, sodass der Operator mit einer einzigen Zeile bin/status.sh die Beurteilung aller acht Container gleichzeitig erhält.

Healthcheck-Skripte​

Mit Healthcheck-Skripten kann automatisch überprüft werden, ob die wichtigsten Dienste der Plattform ordnungsgemäß funktionieren.

Automatischer Healthcheck​

Nachfolgend finden Sie ein Beispielskript zur automatischen Überprüfung des Status der Hauptservices:

#!/bin/bash
# healthcheck.sh

# 표준 헬스체크 (GET /api/health)
BODY=$(curl -fsS -m 5 http://localhost/api/health 2>/dev/null)
case "$BODY" in
*'"status":"UP"'*) : ;; # 정상
*) echo "[ALERT] PlantPulse server is not responding: ${BODY:-no response}"
# 알림 발송 로직 추가
;;
esac

# PostgreSQL 체크
pg_isready -h HOST -p 5432 -U plantpulse
if [ $? -ne 0 ]; then
echo "[ALERT] PostgreSQL is not responding"
fi

# Cassandra 체크
nodetool status | grep -q "^UN"
if [ $? -ne 0 ]; then
echo "[ALERT] Cassandra node is down"
fi

# Redis 체크
redis-cli -a 설치-시-변경 ping | grep -q "PONG"
if [ $? -ne 0 ]; then
echo "[ALERT] Redis is not responding"
fi

Sie können dieses Skript in die crontab eintragen, um es periodisch auszuführen:

# 5분마다 헬스체크
*/5 * * * * /opt/scripts/healthcheck.sh >> /var/log/plantpulse-healthcheck.log 2>&1

PlantPulse Dashboard Überwachungs-Dashboards​

Die Plattformüberwachung wird visuell über das PlantPulse Dashboard bereitgestellt. URL für den Zugriff: http://localhost:3000/

Hinweis: Das PlantPulse Dashboard ist ein mitgeliefertes Datenvisualisierungstool, das verschiedene Metriken von PlantPulse in Graphen und Charts darstellt. Im PLANTPULSE-Ordner werden standardmäßig 5 Dashboards bereitgestellt.


1. PlantPulse - Server​

Dies ist das Kern-Dashboard, mit dem der Gesamtzustand des Plattformservers auf einen Blick erfasst werden kann.

SUMMARY (Zusammenfassung)

PanelTypBeschreibung
VERSIONStatInformationen zur Plattformversion
ServerstartdatumStatZeitstempel des ersten Engine-Starts
CPU-LastGaugeCPU-Auslastung des Servers
SpeicherauslastungGaugeSpeicherauslastung des Servers
Empfang pro SekundeStatEmpfangene Nachrichten pro Sekunde (MPS)
GesamtspeicherungenStatKumulierte Anzahl der gespeicherten Daten
NetzwerkverzögerungStatNetzwerkverzögerung beim Nachrichtenerhalt (ms)
DiagnoseStatStatus der Diagnoseereignisse

SERVER-METRICS (Server-Metriken)

PanelTypBeschreibung
CACHE / MQTT / KAFKA / WEBSOCKET / DATABASE / TSEStatVerbindungsstatus der jeweiligen Services
Server-CPU-AuslastungGraphZeitreihe der CPU-Auslastung
Server-SpeicherverbrauchGraphZeitreihe des Speicherverbrauchs
JAVA Heap-VerbrauchGraphJVM Heap-Speicherverbrauch
Daten-DISK R/W StatusGraphDisk-Lese-/Schreibverkehr
Empfang pro ProtokollGraphEmpfangsvolumen nach Protokoll (OPC, MQTT, Kafka etc.)
EmpfangsverzögerungGraphZeitreihe der Netzwerkverzögerung
GesamtempfangsvolumenGraphKumulatives Nachrichtenvolumen
Empfang pro 1 SekundeGraphTrend des Nachrichtenerhalts pro Sekunde
Pipeline-WarteschlangeGraphPipeline-Warteschlangentiefe
Pipeline-Offload-QueueGraphRocksDB Offload-Warteschlange
Pipeline-ValidierungsfehlerGraphAnzahl der fehlgeschlagenen Validierungen
Pipeline-Worker-ZeitGraphBearbeitungszeit der Worker
Timeout-Nachrichten-BackupGraphAnzahl der Timeout-Nachrichten-Backups
Pipeline-SammlerGraphBetriebsstatus des Sammlers
Storage-SpeicherpufferGraphGröße des Speicherpuffers
Streaming-DurchsatzGraphWebSocket-Streaming-Durchsatz
Streaming-Aktiv-ThreadsGraphAnzahl aktiver Streaming-Threads
Streaming-WarteschlangeGraphAnzahl der wartenden Streaming-Einträge
Storage-SpeicherungenGraphAnzahl der DB-Speicherungen
Storage-Batch-VorgängeGraphAnzahl der Batch-Speicherungen
Storage-Worker-AnzahlGraphAnzahl der Speicher-Worker
DDS-VerarbeitungGraphAnzahl der Kafka-DDS-Verteilungen
Async-Thread-Aktiv-CountGraphAnzahl aktiver asynchroner Threads
Async-Thread-Pool-GrößeGraphGröße des Thread-Pools
DiagnosefehlerrateGraphTrend der Diagnosefehler
Logging-AusnahmenGraphTrend der Ausnahme-Logs
GC-ZeitGraphJVM GC-Dauer
DISK-AuslastungGraphTrend der Diskauslastung

2. PlantPulse - Data Lakehouse​

Dieses Dashboard überwacht die Performance und den Status der Datenbank- und Storage-Schichten.

DATA-GATEWAY (Daten-Gateway)

PanelBeschreibung
TOTAL_QUERYGesamtzahl der Abfragen
QPSAbfrage-Durchsatz pro Sekunde (Gauge)
QUERY_LATENCYZeitreihe der Abfragelatenz
QUERY_LATENCY_MAXMaximale Abfragelatenz
SUCCESS / ERRORAnzahl der Erfolge und Fehler

CACHE (REDIS)

PanelBeschreibung
CLIENTSAnzahl der Redis-Clientverbindungen
ALLOCATORStatus des Speicherzuweisers
KEY_COUNTAnzahl der gespeicherten Schlüssel
FRAGMENTATIONSpeicherfragmentierungsrate

CEP

PanelBeschreibung
JAVA_HEAP_USEDCEP-Engine Heap-Speicher
EVENT_INGESTION_RATEEvent-Ingestionsrate
EQL_CPU_TIMEKeine Werte — CEP misst keine CPU-Zeit pro Aussage
EQL_MAP_COUNTAnzahl der bereitgestellten EQL-Aussagen
EVENT_INGEST_DIFFEvent-Ingestion-Differenz
EVENT_DELAY_HISTOGRAMEvent-Verzögerungsverteilung
CEP_STATEMENT_MATCH_RATEStatement-Matching-Rate
EQL_STATEMENT_OUTPUT_RATEStatement-Ausgaberate

META-STORE (POSTGRES)

PanelBeschreibung
TOTAL_CONNECTIONSGesamtzahl der Verbindungen
QUERY_LATENCYAbfragelatenz
TOTAL_READS_HITSAnzahl der Lesezugriffe
TOTAL_DB_SIZEGesamte DB-Größe

EVENT-STORE (CASSANDRA)

PanelBeschreibung
NATIVE_CLIENTNative Client-Verbindungen
LATENCYLese-/Schreiblatenz
READ_PER_SECONDS / WRITE_PER_SECONDSLese-/Schreibvorgänge pro Sekunde
HEAP / DIRECT_MAPPED_MEMORYJVM-Speicher
CACHE / CACHE_HIT_RATECache und Hit-Rate
TOTAL_DATA_SIZEGesamte Datengröße
MEMTABLEMemtable-Status
COMPACTION / COMPACTION_BYTESCompaction-Status
TABLE_COMPACTIONS / TABLE_SSTABLE_COUNTCompaction und SSTable pro Tabelle
BLOOM_FILTER_FALSE_RATIOBloom-Filter-Falschpositivrate
TABLE_READ_LATENCY / TABLE_RANGE_LATENCY / TABLE_WRITE_LATENCYLatenzen pro Tabelle
PENDINGS / FLUSH / THREAD_POOLWarteschlangen, Flush, Thread-Pool
STATEMENT / COMMITLOG / EXCEPTION / MUTATIONInterne Metriken
COMPRESSION / TOTAL_SSTABLEKompression und SSTable-Status

TIMESERIES-STORE (TSE)

PanelBeschreibung
TSE_MEMORYZeitreihen-Engine-Speicher
TSE_HTTP_TIMEHTTP-Antwortzeit
TSE_DATASTOREDatenstore-Status
TSE_QUEUE_PROCESS_COUNTAnzahl der verarbeiteten Warteschlangeneinträge

ANALYTICS-STORE (SPARK)

PanelBeschreibung
MEMORY_USEDSpark-Speicherverbrauch
CONNECTIONAnzahl der Verbindungen
OPERATIONAnzahl der Vorgänge
REQUEST_RATEAnfragerate

3. PlantPulse - Edge Gateway​

Dieses Dashboard überwacht den Status der Edge-Geräte, die PLC-Verbindungen und den Datenempfang.

Zusammenfassungs-Panels

PanelBeschreibung
Gesamte Edge-GatewaysAnzahl registrierter Edge-Gateways
Strom (Normal/Anomal)Anzahl normaler und anomaler Stromzustände
PLCAnzahl der PLC-Verbindungen
Gesamte DatenkapazitätGesamte Größe der erfassten Daten
Empfangssumme pro SekundeSumme des Empfangs aller Edges pro Sekunde (Gauge)
Max. EmpfangslatenzMaximale Empfangslatenz (ms) (Gauge)
LogLog-Status

PLC STATUS (PLC-Status)

PanelBeschreibung
PLC-Ping-FehlerTrend der fehlgeschlagenen PLC-Verbindungspings
PLC verbunden / getrenntTrend des PLC-Verbindungsstatus
PLC-LeseverfolgeTrend der erfolgreichen Datenlesevorgänge
PLC-LesefehlerTrend der fehlgeschlagenen Datenlesevorgänge
SystemfehlertrendTrend der Systemfehler

DATA POINT (Datenpunkt)

PanelBeschreibung
Gesamtsendungen pro Sekunde SUM(MPS)Summe der Sendungen aller Edges pro Sekunde
PunktübertragungenTrend der übertragenen Datenpunkte
Übertragungs-BytesBytes der übertragenen Daten
Min/Avg/Max EmpfangslatenzVerteilung der Empfangslatenz

EDGE H/W (Edge-Hardware)

PanelBeschreibung
CPUCPU-Auslastung des Edge-Geräts
SpeicherSpeicherverbrauch
Disk (SSD)Diskauslastung
Netzwerk Up/DownNetzwerkverkehr
TemperaturGerätetemperatur

4. PlantPulse - Statistik​

Dieses Dashboard verfolgt langfristige Statistiken wie das tägliche Datenwachstum und Spitzenwerte der Systemressourcen. Es ist nützlich, um langfristige Wachstumstrends des Systems zu erkennen.

PanelBeschreibung
Gesamte DatenkapazitätGesamte Größe der gespeicherten Daten
Tägliche DatenkapazitätTrend der täglichen Datenkapazität
Täglicher NachrichtentransportAnzahl der täglichen Nachrichtensendungen
Tägliches DatenwachstumTrend des täglichen Datenwachstums
EmpfangsvolumenTrend der empfangenen Nachrichten
Netzwerkverzögerung Avg/MaxStatistiken zur Netzwerkverzögerung
SSTABLE-ZuwachsTrend des Aster TSDB SSTable-Wachstums
Max. DB-ClientverbindungenMaximalwert der DB-Verbindungen
Max. asynchrone ThreadsPeak der asynchronen Verarbeitung
JAVA Max. GC-ZeitMaximale GC-Dauer
CQL Prepared MaxMaximalwert der CQL Prepared Statements
Max. PartitionsgrößeMaximale Aster TSDB Partitionsgröße
JAVA Min. Heap-FreiraumMinimalwert des verfügbaren JVM-Heaps
Max. async WarteschlangeMaximales Warten in der asynchronen Queue
Max. SpeicherpuffergrößeMaximalwert des Speicherpuffers
Backup-VerarbeitungsmengeAnzahl der verarbeiteten Backup-Nachrichten

5. PlantPulse - Messaging​

Dieses Dashboard überwacht den Status der MQTT-, Kafka- und WebSocket-Message-Broker.

SUMMARY (Zusammenfassung)

PanelBeschreibung
MQTT / KAFKA / WEBSOCKETVerbindungsstatus der jeweiligen Broker
CPUCPU-Auslastung des Servers
JAVA_HEAPJVM Heap-Verbrauch
NETWORK_READ_BYTESEmpfangene Netzwerk-Bytes

MQTT

PanelBeschreibung
CPU_USEDMQTT-Broker CPU (Gauge)
MEMORY_USEDSpeicherverbrauch
CONNECTIONSAnzahl der Clientverbindungen
NETWORK IN/OUTNetzwerk-Ein- und Ausgänge
GC_COUNT / GC_TIME_MSGC-Häufigkeit und Dauer
THREAD_COUNTAnzahl der Threads
INCOMING / OUTGOINGAnzahl der empfangenen und gesendeten Nachrichten
RETAINED_COUNTAnzahl der Retained-Nachrichten
SUBSCRIPTIONSAnzahl der Abonnements
TOTAL_MESSAGEGesamtzahl der Nachrichten

KAFKA

PanelBeschreibung
CPU_USEDKafka-Broker CPU (Gauge)
MEMORY_USEDSpeicherverbrauch
GLOBAL_TOPICGlobaler Topic-Status
NETWORK IN/OUTNetzwerk-Ein- und Ausgänge
TOPIC_BYTE_IN/OUT_PER_SECBytes pro Sekunde nach Topic
MESSAGE_PER_SEC_MEAN_RATE / 1M_RATENachrichtendurchsatz pro Sekunde
NETWORK_REQUEST_FETCHAnzahl der Fetch-Anfragen
OFFLINE_PARTITION_COUNTAnzahl der Offline-Partitionen
ACTIVE_CONTROLLER_COUNTAnzahl der aktiven Controller

WEBSOCKET

PanelBeschreibung
CPU_USEDWebSocket-Server CPU (Gauge)
MEMORY_USEDSpeicherverbrauch
CONNECTION_COUNTAnzahl der WebSocket-Verbindungen
ENQUEUE / DEQUEUEAnzahl der Queue-Ein- und Ausgänge

Integration von Überwachungswerkzeugen​

ELK Stack​

Die Container-Logs können über eine Pipeline aus Filebeat → Logstash → Elasticsearch → Kibana erfasst werden, um eine Umgebung für die Log-Suche und -Analyse aufzubauen. Dies wird für große Betriebsumgebungen empfohlen. Die Standardausgabe der Container wird über den Docker-Logging-Treiber erfasst, Dateilogs innerhalb der Container über Host-Mounts (PLANTPULSE_LOG_DIR).