Systemüberwachung
Überblick
Die Überwachung von PlantPulse besteht aus drei Schichten. Durch die gemeinsame Nutzung der Tools in jeder Schicht können Sie Probleme frühzeitig erkennen und schnell reagieren.
| Schicht | Verantwortung | Häufigkeit |
|---|---|---|
| L1 Host/Stack | Container-Status·Health, Ressourcennutzung, Health-Responses | Jede Minute~5 Min. (automatisch/manuell) |
| L2 Plattform integriert | Modulweise Geschäftsmetriken (Durchsatz, Lag, Warteschlangentiefe, JVM) | Echtzeit |
| L3 Externe Überwachung | Langzeittrends, Alarme, konsolidierte Mehrhost-Ansicht | Echtzeit |
Plattform-Servicemodule
PlantPulse besteht aus mehreren Servicemodullen mit dem Präfix plantpulse-. Module und Container sind nicht 1:1 — sechs Anwendungen haben jeweils ihren eigenen Container, während die restlichen Infrastrukturmodule gemeinsam in einem plantpulse-datalake-Container laufen.
| Wo sich das befindet | Module |
|---|---|
| Eigener Container | plantpulse-server-web · plantpulse-batch-web · plantpulse-warehouse · plantpulse-plugin-opcua-server · plantpulse-plugin-aasx-server · plantpulse-ha |
Innerhalb des plantpulse-datalake-Containers | storage · messaging · analytics · timeseries · workflow · cep · data-gateway · sql · monitor · backup |
Den Status pro Container auf dem Host sehen Sie mit bin/status.sh, den Status pro Modul innerhalb des Datalake in status.sh. Die unten aufgeführten «Ports» sind diejenigen, die dieses Modul innerhalb des Containers öffnet; nur ein Teil davon wird auf dem Host geöffnet → Portkonfiguration
Kernservicemodule
| Modul | Port | Beschreibung |
|---|---|---|
plantpulse-server | 80 / 443 / 7443 | Webserver und Admin-Konsole, REST API |
plantpulse-cep | 7400 / 7401 | CEP-Engine (Esper) |
plantpulse-batch | 9500 | Batch-Verarbeitungsserver |
plantpulse-data-gateway | 5500 | Data Gateway (HTTP REST-basierte Datenabfrage) |
plantpulse-sql | 4000 | SQL-Abfrage-Tool |
plantpulse-monitor | 4950 (HTTPS) | System-Überwachungsagent. Der einzige Health-Port, der auf dem Host veröffentlicht wird |
plantpulse-warehouse | 9600 | Data Warehouse |
plantpulse-plugin-opcua-server | 11004 / 11005 | OPC-UA-Server-Plugin |
plantpulse-plugin-aasx-server | (nicht auf Host freigegeben) | AASX-Server-Plugin |
plantpulse-ha | 10210 | Redundanz-Wiederherstellungs-Daemon |
plantpulse-proxy | 80 / 443 / 1883 / 1884 | Der einzige Eingang für Benutzer und Anlagen |
Messaging-Module (plantpulse-messaging)
| Service | Port | Beschreibung |
|---|---|---|
| Kafka | 9092 | Verteiltes Message-Streaming |
| MQTT | 1883 | IoT Lightweight Message Protocol |
| MQTT Enterprise | - | MQTT Enterprise Edition |
Storage-Module (plantpulse-storage)
| Service | Port | Beschreibung |
|---|---|---|
| Cassandra 6.0 | 9042 | Zeitreihendatenbank (CQL) |
| PostgreSQL | 5432 | Metadaten-Relationaldatenbank |
| Valkey (Redis) | 6379 | In-Memory-Cache |
| MinIO | 9000 | Objektspeicher (S3-kompatibel) |
| JanusGraph | - | Graphdatenbank |
| RustFS / WeedFS | - | Verteiltes Dateisystem |
Analytics-Module (plantpulse-analytics)
| Service | Port | Beschreibung |
|---|---|---|
| Spark Master | 7077 | Verteilte Analytics-Engine |
| Spark UI | 4440 | Spark-Admin-Konsole |
| Kyuubi | 10000 | Verteiltes SQL-Gateway (JDBC/Thrift) |
| Gravitino | 19001 | Datenkatalog |
| Hadoop | - | Verteiltes Dateisystem |
| Hive | - | Data Warehouse Query Engine |
Zeitreihen-Module (plantpulse-timeseries)
| Service | Port | Beschreibung |
|---|---|---|
| Zeitreihen-Engine | 7800 | Zeitreihen-Datenverarbeitungs-Engine |
| Zeitreihen UI | 3000 | Zeitreihen-Datenvisualisierungs-UI |
Workflow-Module (plantpulse-workflow)
| Service | Port | Beschreibung |
|---|---|---|
| Temporal | 7233 | Verteilte Workflow-Engine (Web UI 8233) |
| Kestra | 8380 | Workflow-Orchestrierung / Scheduler |
Utility-Module
| Modul | Beschreibung |
|---|---|
plantpulse-datalake-cli (pd) | Datalake-Start/Stop/Neustart, Konfiguration, Knoten-Management CLI |
plantpulse-setup | Initialisierungs-Tool (Modelle, CSV-Konfiguration) |
plantpulse-backup | Backup-Service |
plantpulse-recovery | Datenwiederherstellungs-Tool |
plantpulse-exporter | Asset-Daten-Export-Tool |
plantpulse-migrator | Datenmigrations-Tool (Spark-basiert) |
plantpulse-mirror-maker | Datenreplikations-Tool |
plantpulse-simulator | Datensimulator (zu Testzwecken) |
plantpulse-api | REST-API-Client-Bibliothek |
Servicestatus prüfen
Auf dem Host prüfen Sie zunächst den Status des gesamten Stacks.
cd /opt/kopens/plantpulse-platform-docker/bin
./status.sh # 0 = 정상 / 2 = 비정상
./ops-check.sh # 헬스 + 최근 critical log
Den Status pro Port der Infrastruktur-Module innerhalb des Datalake-Containers sehen Sie so:
./shell.sh
/opt/kopens/plantpulse-platform/plantpulse-datalake-cli/bin/pd status
Ausgabebeispiel:
==============================================================================================================
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
Das status.sh im Datalake prüft nur die Module in diesem Container. Wenn PP_SERVER · PP_BATCH · PP_WAREHOUSE · PP_PLUGIN als STOPPED angezeigt werden oder ganz fehlen, ist dies kein Fehler — diese Apps laufen in ihren eigenen Containern, und die Bewertung erfolgt durch bin/status.sh auf dem Host.
Umgebungsvariablen
Die Werte auf dem Host werden von /opt/kopens/plantpulse-platform-docker/bin/env.sh gesetzt, die Werte, die der Container tatsächlich sieht, werden von compose/docker-compose.yml bestimmt. Die detaillierte Beziehung und Priorität finden Sie unter Umgebungsvariablen-Referenz. Im Folgenden finden Sie die Namen, die innerhalb des Containers gültig sind.
| Variable | Beschreibung | Beispiel |
|---|---|---|
PP_SCHEME | Schema-Name | PP |
PP_MODE | Ausführungsmodus | MASTER |
PP_HOST_IP | Interne IP | 192.168.0.41 |
PP_SERVICE_IP | Service-IP | 192.168.0.41 |
PP_MASTER_IP | Master-Knoten-IP | 192.168.0.41 |
PP_DATA_DIR | Datenverzeichnis | /data1/pp-data |
PP_TEMP_DIR | Temp-Verzeichnis | /data1/pp-temp |
PP_BACKUP_DIR | Backup-Verzeichnis | /data1/pp-backup |
PP_CLUSTER_CORES | Cluster-CPU-Kerne | 16 |
PP_CLUSTER_MEMORY_BY_CORE | Speicher pro Kern | 2G |
PP_OPTIONS | Zusätzliche Optionen (JSON) | {"use-infra":true,"use-app":true} |
Überwachungsziele
Die wichtigsten Überwachungsziele und -elemente der PlantPulse-Plattform sind wie folgt. Eine regelmäßige Überprüfung dieser Elemente trägt zu einem stabilen Betrieb bei.
| Ziel | Überwachungselemente |
|---|---|
| Anwendungsserver | CPU, Speicher, Festplatte, Threads |
| JVM | Heap-Speicher, GC, Klassenladung |
| PostgreSQL | Verbindungspools, Abfrageleistung, Festplatte |
| Cassandra | Clusterstatus, Latenz, Komprimierung |
| Redis | Speicher, Hit-Rate, Verbindungen |
| Engine | Pipeline-Durchsatz, Warteschlangentiefe, Fehlerrate |
| Netzwerk | OPC-Verbindungen, WebSocket, Latenz |
Webkonsolen-Überwachung
Systemüberwachungsbildschirm
Pfad: /monitoring/index
Zeigt den Echtzeit-Systemstatus in Dashboardform an. Wenn jeder Indikator außerhalb der «normalen Reichweite» in der Tabelle unten liegt, kann dies zu Leistungsabfällen führen. Bitte überprüfen Sie diese.
| Indikator | Beschreibung | Normaler Bereich |
|---|---|---|
| CPU-Auslastung | Server-CPU-Last | < 70% |
| JVM Heap-Speicher | Heap-Nutzung/Maximum | < 80% |
| Aktive Threads | Anzahl laufender Threads | < 500 |
| MPS (Meldungen/Sek.) | Nachrichten pro Sekunde | Unterhalb des konfigurierten Rate Limit |
| Pipeline-Warteschlange | Anzahl wartender Nachrichten | < 10.000 |
| DB-Verbindung | Aktive Datenbankverbindungen | < Maximale Poolgröße |
Serverstatus
Pfad: /server/status
| Element | Beschreibung |
|---|---|
| Server-Betriebszeit | Uptime |
| Engine-Status | RUNNING / STOPPED / ERROR |
| Letzte Startzeit | Letzte Engine-Startzeitpunkt |
| Versionsinformationen | Plattformversion |
Log-Überwachung
Logs sind Textdateien, die den Betriebszustand des Systems aufzeichnen. Die Überprüfung der Logs bei Problemen ist sehr hilfreich bei der Fehlersuche.
Auf dem Host — logs.sh
Da es acht Container gibt, ist es am schnellsten, ohne Argumente zu starten, wenn Sie nicht wissen, welcher Container problematisch ist.
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 로 종료)
Standard ist die letzten N Zeilen (Standard 200) auszugeben und zu beenden. Um sie zu verfechten, hängen Sie -f an.
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 auf einmal auf den Host zu kopieren, verwenden Sie ./tools/copy-log-to-local.sh, für Support-Anfragen verwenden Sie ./doctor.sh.
Log-Level
| Level | Beschreibung |
|---|---|
| INFO | Normale Betriebsinformationen |
| WARN | Warnmeldung (Leistungsverschlechterung, Wiederholung usw.) |
| ERROR | Ein Fehler ist aufgetreten (Verarbeitungsfehler, Verbindungsfehler usw.) |
Wichtige Log-Muster
Wenn die folgenden Log-Muster erscheinen, führen Sie bitte die entsprechende Maßnahme durch:
| Muster | Bedeutung |
|---|---|
Engine started successfully | Die Engine ist normal gestartet |
Pipeline queue overflow | Die Pipeline-Warteschlange wurde überschritten — bitte überprüfen Sie die Verarbeitungsgeschwindigkeit |
Cassandra connection failed | Cassandra-Verbindung fehlgeschlagen — bitte überprüfen Sie den Clusterstatus |
OPC connection lost | OPC-Serververbindung unterbrochen — bitte überprüfen Sie das Netzwerk und den OPC-Server |
Rate limit exceeded | Verarbeitungsrate überschritten — bitte passen Sie den Wert engine.pipeline.ratelimit an |
Datenbanküberwachung
Eine regelmäßige Überwachung des Datenbankstatus kann Leistungsverschlechterungen oder Ausfälle 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;"
Cassandra
# 클러스터 상태
nodetool status
# 테이블별 통계
nodetool tablestats pp
# 컴팩션 상태
nodetool compactionstats
# GC 로그 확인
nodetool gcstats
# 지연 히스토그램
nodetool tablehistograms pp tm_tag_point
Cassandra-Statuscodes:
| Status | Beschreibung |
|---|---|
| UN | Up / Normal — normaler Zustand |
| DN | Down / Normal — Knoten ist ausgefallen |
| UJ | Up / Joining — wird gerade dem Cluster beigetreten |
| UL | Up / Leaving — wird gerade aus dem Cluster entfernt |
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 Status von Java-Anwendungen von außen zu überwachen. PlantPulse stellt über JMX über 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 und 4 weitere (insgesamt 12)
Wichtige JMX-Attribute
| Attribute | Beschreibung |
|---|---|
| engine.status | Engine-Status |
| engine.uptime | Betriebszeit |
| pipeline.queue.size | Pipeline-Warteschlangengröße |
| pipeline.mps | Nachrichten pro Sekunde |
| cache.tag.count | Anzahl gecachter Tags |
| storage.cassandra.status | Cassandra-Verbindungsstatus |
Codahale Metrics
Hinweis: Codahale Metrics ist eine Bibliothek zur Erfassung von Anwendungsleistungskennzahlen. PlantPulse erfasst über 70 Metriken und diese können unter dem Pfad
/admin/tool/metricsabgerufen werden.
Metrik-Typen
| Typ | Beschreibung |
|---|---|
| Counter | Kumulative Zähler (Ereignisanzahl, Fehleranzahl usw.) |
| Timer | Misst die Verarbeitungszeit (Durchschnitt, p95, p99) |
| Histogram | Zeigt die Verteilung von Werten (Warteschlangentiefe, Batch-Größe) |
| Gauge | Zeigt den aktuellen Wert (aktive Verbindungen, Speicher) |
Standard Health-Check API
Web-Apps / Plugin-Services stellen einen Health-Check-Endpunkt GET /api/health nach Platform-Standard-Spezifikation bereit.
Für die wichtigsten Web-Apps (server / batch / cep / sql / data-gateway) hat dieser Endpunkt die Bedeutung von Readiness —
nur weil der Prozess (Kontext) lebt, bedeutet das nicht, dass es UP anzeigt; es wird nur UP zurückgegeben, wenn interne Engine / kritische Abhängigkeiten normal sind und bereit, 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 — nur bereit, wenn
200 UP. Während des Bootens503 STARTING, nach erfolgreichem Boot wenn einige Abhängigkeiten ausfallen503 DEGRADEDmit Unterscheidung. - Keine Abhängigkeitsprüfung — checks liest nur in-memory Zustandsflags, die jeder Service bereits verwaltet (keine Live-DB-Abfrage / Netzwerk-Ping — Polling belastet den Datenspeicher nicht).
- Anonymer Zugriff — kann ohne Authentifizierung aufgerufen werden (Ops-Überprüfung / automatische Bereitstellungsüberprüfung).
- Kein Cache —
Cache-Control: no-cache-Header-Familie ist immer enthalten. - Antwortonlyfelder sind
status/service(Artefaktname) /ts(Epoch ms) + für Readiness-Promotion-Serviceschecks(Service-spezifische Check-Details).
| Service | Health URL | Bedeutung | checks / Hinweise |
|---|---|---|---|
| server | http://HOST:80/api/health | readiness | engine — Engine-Lebenszyklus-Status (nur UP wenn alle Bootphasen abgeschlossen sind RUNNING) |
| batch | http://HOST:9500/api/health | readiness | timer (Batch-Pipeline aktiv) / redis (InMemory-Verbindung) |
| cep | http://HOST:7400/api/health | readiness | engine (CEP-Engine+Consumer+Recovery abgeschlossen) / redis (InMemory-Verbindung) |
| sql | https://HOST:4001/api/health | readiness | database_manager (DB-Manager initialisiert) — über HTTPS bereitgestellt |
| data-gateway | http://HOST:5500/api/health | readiness | database / inmemory / query_log — nur dieser Pfad von HTTPS-Erzwingung ausgenommen (CONFIDENTIAL), localhost HTTP-Probe zulässig |
| warehouse (s3 service) | http://HOST:9600/api/health | readiness | temporal — Temporal Worker-Registrierung abgeschlossen. Wenn nicht registriert, STARTING + 503 (Webserver startet zuerst, Worker folgt, daher 503 kurz nach dem Booten ist normal). Gemeinsame 3 Felder + System/JVM-Metriken enthalten |
| plugin — AAS V3 | http://HOST:8090/api/health | liveness | readiness nicht hochgestuft |
| plugin — OPC-UA Browse UI | http://HOST:12780/api/health | liveness | Port ist nach opc.ua.browser.ui.port Konfiguration (Standard 12780) |
Es gibt zwei Anwendungsfälle.
- Ops-Überprüfung — manuelle Überprüfung, crontab / externe Überwachungs-Readiness-Prüfung
- CI-Bereitstellungsautovalidierung —
deploy:devJob polling diese URL nach der Bereitstellung (DEPLOY_HEALTH, 240 Sekunden), um das Booten zu überprüfen. Da es readiness bedeutet, ist 503 während des Bootens normal; das Polling wartet auf die UP-Änderung.
Rollentrennung:
plantpulse-monitor(:4950) ist ein Infrastruktur-Überwachungsagent, der Infrastruktur- / JVM- / Modulmetriken erfasst und exponiert, während/api/healthder Readiness-Endpunkt ist, den jede Web-App selbst bereitstellt. Sie sind nicht austauschbar, sondern ergänzend.In einer Container-Umgebung beurteilt das Healthcheck bereits jeden App-Readiness in der Compose, daher erhält der Operator mit
bin/status.sheiner Zeile das Urteil für alle acht Container zusammen.
Health-Check-Skripte
Mit Health-Check-Skripten können Sie automatisch überprüfen, ob die Hauptservices der Plattform normal funktionieren.
Automatische Health-Checks
Hier ist 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 es bei Crontab registrieren und regelmäßig ausführen:
# 5분마다 헬스체크
*/5 * * * * /opt/scripts/healthcheck.sh >> /var/log/plantpulse-healthcheck.log 2>&1
Grafana-Überwachungs-Dashboard
Die Plattformüberwachung wird visuell über Grafana bereitgestellt. Zugriffs-URL: http://localhost:3000/
Hinweis: Grafana ist ein Open-Source-Datenvisu alisierungs-Tool, das verschiedene Metriken von PlantPulse als Graphen und Diagramme anzeigt. Unter dem Ordner PLANTPULSE werden standardmäßig 5 Dashboards bereitgestellt.
1. PlantPulse - Server
Ein Dashboard zum Überblick über den Gesamtstatus des Plattformservers.
SUMMARY (Zusammenfassung)
| Panel | Typ | Beschreibung |
|---|---|---|
| VERSION | Stat | Plattformversionsinformationen |
| Serverstartdatum | Stat | Engine-Erste-Start-Zeitstempel |
| CPU-Last | Gauge | Server-CPU-Auslastung |
| Speichernutzung | Gauge | Speichernutzung des Servers |
| Empfangene Einträge pro Sekunde | Stat | Nachrichten pro Sekunde (MPS) |
| Gesamtspeicherung | Stat | Kumulative gespeicherte Datensätze |
| Netzwerkverzögerung | Stat | Nachrichtenempfangs-Netzwerkverzögerung (ms) |
| Diagnose | Stat | Diagnoseereignisstatus |
SERVER-METRICS (Server-Metriken)
| Panel | Typ | Beschreibung |
|---|---|---|
| CACHE / MQTT / KAFKA / WEBSOCKET / DATABASE / TSE | Stat | Verbindungsstatus der einzelnen Services |
| Server-CPU-Auslastung | Graph | CPU-Auslastungs-Zeitreihen-Trend |
| Speichernutzung des Servers | Graph | Speichernutzungs-Zeitreihen-Trend |
| JAVA Heap-Nutzung | Graph | JVM Heap-Speichernutzung |
| Datendatenträger-Lese-/Schreibstatus | Graph | Datenträgerlese-/Schreibverkehr |
| Protokollweise empfangene Nachrichtenzahl | Graph | Empfangsmengen nach OPC, MQTT, Kafka usw. |
| Netzwerkverzögerung beim Nachrichtenempfang | Graph | Netzwerkverzögerungs-Zeitreihe |
| Gesamte empfangene Nachrichtenmenge | Graph | Kumulativ empfangene Nachrichten |
| Nachrichtenempfang pro Sekunde | Graph | Trend der pro Sekunde empfangenen Nachrichten |
| Pipeline-Warteschlangen-Wartebestand | Graph | Pipeline-Warteschlangentiefe |
| Größe der Pipeline-Offload-Warteschlange | Graph | RocksDB Offload-Warteschlange |
| Fehlerhafte Validierung der Pipeline | Graph | Validierungsfehler |
| Verarbeitungszeit des Pipeline-Workers | Graph | Worker-Verarbeitungslatenz |
| Backup-Verarbeitung von Timeout-Meldungen | Graph | Backup-Verarbeitete Einträge |
| Pipeline-Sampler | Graph | Sammler-Betriebsstatus |
| Speicherpuffer für Speicherung | Graph | Speicherpuffergröße |
| Streaming-Verarbeitete Einträge | Graph | WebSocket-Streaming-Durchsatz |
| Aktive Threads für Streaming-Betrieb | Graph | Streaming-aktive Threads |
| Streaming-Warteschlange Wartebestand | Graph | Streaming-Warteschlangen-Wartebestand |
| Speichergeschäfte | Graph | Datenbankgespeicherte Einträge |
| Speicher-Batch-Anzahl | Graph | Batch-gespeicherte Einträge |
| Anzahl der Speicherarbeiter | Graph | Speicher-Worker-Anzahl |
| DDS-Verarbeitung | Graph | Kafka DDS-Verteilungsanzahl |
| Aktive Threads des asynchronen Pools | Graph | Asynchron aktive Threads |
| Asynchrone Thread-Pool-Größe | Graph | Thread-Pool-Größe |
| Fehleranzahl der Diagnose | Graph | Diagnose-Fehler-Trend |
| Protokollierungsausnahmen | Graph | Ausnahmelog-Trend |
| GC-Zeit | Graph | JVM GC-Latenz |
| Datenträgerbelegung | Graph | Datenträgerbelegungs-Trend |
2. PlantPulse - Data Lake House
Dashboard für Überwachung von Leistung und Status von Datenbankschicht und Speicherschicht.
DATA-GATEWAY (Daten-Gateway)
| Panel | Beschreibung |
|---|---|
| TOTAL_QUERY | Gesamtabfragen |
| QPS | Abfragesätze pro Sekunde (Gauge) |
| QUERY_LATENCY | Abfrageverzögerungs-Zeitreihe |
| QUERY_LATENCY_MAX | Maximale Abfrageverzögerung |
| SUCCESS / ERROR | Erfolgs- und Fehleranzahl |
CACHE (REDIS)
| Panel | Beschreibung |
|---|---|
| CLIENTS | Redis-Clientverbindungen |
| ALLOCATOR | Speicherzuteilungs-Status |
| KEY_COUNT | Anzahl gespeicherter Keys |
| FRAGMENTATION | Speicherfragmentierungsquote |
CEP (ESPER)
| Panel | Beschreibung |
|---|---|
| JAVA_HEAP_USED | CEP-Engine Heap-Speicher |
| EVENT_INGESTION_RATE | Ereignis-Ingestion-Rate |
| EQL_CPU_TIME | EPL-Anfrage CPU-Zeit |
| EQL_MAP_COUNT | EPL Map-Anzahl |
| EVENT_INGEST_DIFF | Ereignis-Ingestion-Differenz |
| EVENT_DELAY_HISTOGRAM | Ereignisverzögerungs-Verteilung |
| CEP_STATEMENT_MATCH_RATE | Statement-Match-Rate |
| EQL_STATEMENT_OUTPUT_RATE | Statement-Output-Rate |
META-STORE (POSTGRES)
| Panel | Beschreibung |
|---|---|
| TOTAL_CONNECTIONS | Gesamtverbindungen |
| QUERY_LATENCY | Abfrageverzögerung |
| TOTAL_READS_HITS | Read-Hit-Anzahl |
| TOTAL_DB_SIZE | Gesamte Datenbankgröße |
EVENT-STORE (CASSANDRA)
| Panel | Beschreibung |
|---|---|
| NATIVE_CLIENT | Native Client-Verbindungen |
| LATENCY | Lese-/Schreibverzögerung |
| READ_PER_SECONDS / WRITE_PER_SECONDS | Lese-/Schreibvorgänge pro Sekunde |
| HEAP / DIRECT_MAPPED_MEMORY | JVM-Speicher |
| CACHE / CACHE_HIT_RATE | Cache und Hit-Rate |
| TOTAL_DATA_SIZE | Gesamtdatengröße |
| MEMTABLE | Memtable-Status |
| COMPACTION / COMPACTION_BYTES | Komprimierungsstatus |
| TABLE_COMPACTIONS / TABLE_SSTABLE_COUNT | Tabellen-Komprimierung und SSTable |
| BLOOM_FILTER_FALSE_RATIO | Bloom-Filter False-Ratio |
| TABLE_READ_LATENCY / TABLE_RANGE_LATENCY / TABLE_WRITE_LATENCY | Tabellen-Verzögerung |
| PENDINGS / FLUSH / THREAD_POOL | Ausstehend, Flush, Thread-Pool |
| STATEMENT / COMMITLOG / EXCEPTION / MUTATION | Interne Metriken |
| COMPRESSION / TOTAL_SSTABLE | Komprimierung und SSTable-Status |
TIMESERIES-STORE (TSE)
| Panel | Beschreibung |
|---|---|
| TSE_MEMORY | Zeitreihen-Engine-Speicher |
| TSE_HTTP_TIME | HTTP-Antwortzeit |
| TSE_DATASTORE | Datenspeicher-Status |
| TSE_QUEUE_PROCESS_COUNT | Warteschlangen-Verarbeitungsanzahl |
ANALYTICS-STORE (SPARK)
| Panel | Beschreibung |
|---|---|
| MEMORY_USED | Spark-Speichernutzung |
| CONNECTION | Verbindungsanzahl |
| OPERATION | Operationsanzahl |
| REQUEST_RATE | Anfragerate |
3. PlantPulse - Edge Gateway
Dashboard für Überwachung von Edge-Geräte-Status, PLC-Verbindung und Datenempfangsstatus.
Zusammenfassung-Panels
| Panel | Beschreibung |
|---|---|
| Gesamte Edge-Gateways | Anzahl registrierter Edge-Gateways |
| Stromversorgung (normal/abnormal) | Anzahl normaler und abnormaler Stromversorgungsstatus |
| PLC | Anzahl PLC-Verbindungen |
| Gesamte Datengröße | Gesamtgröße erfasster Daten |
| Empfang pro Sekunde Summe | Gesamte Empfangsrate aller Edges (Gauge) |
| Maximale Empfangsverzögerung | Maximale Empfangsverzögerung (ms) (Gauge) |
| Log | Log-Status |
PLC STATUS (PLC-Status)
| Panel | Beschreibung |
|---|---|
| PLC Ping-Fehleranzahl | PLC-Verbindungs-Ping-Fehler-Trend |
| PLC verbunden / getrennt | PLC-Verbindungsstatus-Trend |
| PLC-Datenlese-Erfolgsanzahl | Datenleseerfolgs-Trend |
| PLC-Datenlese-Fehleranzahl | Datenlesefehler-Trend |
| Systemfehlerzahl-Trend | System-Fehler-Trend |
DATA POINT (Datenpunkt)
| Panel | Beschreibung |
|---|---|
| Gesamte Sendung pro Sekunde SUM(MPS) | Gesamtsenderate aller Edges pro Sekunde |
| Punkt-Übertragungsanzahl | Punkt-Übertragungsanzahl-Trend |
| Übertragene Punkt-Bytes | Übertragene Datenbytes |
| Empfangsverzögerung min/avg/max | Empfangsverzögerungs-Verteilung |
EDGE H/W (Edge-Hardware)
| Panel | Beschreibung |
|---|---|
| CPU | Edge-Geräte-CPU-Auslastung |
| Speicher | Speichernutzung |
| Datenträger (SSD) | Datenträgernutzung |
| Netzwerk Upload/Download | Netzwerkverkehr |
| Temperatur | Gerätetemperatur |
4. PlantPulse - Statistiken
Dashboard für Verfolgung langfristiger Statistiken wie täglich wachsende Datenmenge und Systemressourcen-Spitzenwerte. Nützlich zum Verständnis langfristiger Wachstumstrends des Systems.
| Panel | Beschreibung |
|---|---|
| Gesamte Datengröße | Gesamtgröße der gespeicherten Daten |
| Tägliche Datengesamtgröße | Täglicher Datengröße-Trend |
| Tägliche Nachrichtenmenge | Tägliche Nachrichtenübertragungsanzahl |
| Tägliche Datensteigmenge | Täglicher Datensteig-Trend |
| Nachrichtenempfangsanzahl | Nachrichtenempfangsanzahl-Trend |
| Durchschnittliche/maximale Netzwerkverzögerung | Netzwerkverzögerungs-Statistiken |
| SSTABLE-Steigmenge | Cassandra SSTable-Steig-Trend |
| Maximale DB-Client-Verbindung | Maximale DB-Verbindungen |
| Maximale Anzahl asynchroner Thread-Ausführungen | Asynchroner Verarbeitungs-Spitzenwert |
| Maximale JAVA GC-Zeit | Maximale GC-Latenz |
| Maximale CQL-Vorbereitung | Maximale CQL Prepared Statement |
| Maximale Partitionsgröße | Maximale Cassandra-Partitionsgröße |
| Minimale verfügbare JAVA-Heap-Größe | Minimale JVM-Heap-Verfügbarkeit |
| Maximale asynchrone Thread-Wartezahl | Asynchrone Warteschlangen-Spitzenwert |
| Maximale Speicherpuffergröße | Speicherpuffer-Maximumwert |
| Anzahl verarbeiteter Backup-Meldungen | Backup-Verarbeitungsanzahl |
5. PlantPulse - Messaging
Dashboard für Überwachung von MQTT, Kafka und WebSocket Message Broker Status.
SUMMARY (Zusammenfassung)
| Panel | Beschreibung |
|---|---|
| MQTT / KAFKA / WEBSOCKET | Verbindungsstatus der einzelnen Broker |
| CPU | Server-CPU-Auslastung |
| JAVA_HEAP | JVM Heap-Nutzung |
| NETWORK_READ_BYTES | Netzwerk-Empfangsbytes |
MQTT
| Panel | Beschreibung |
|---|---|
| CPU_USED | MQTT Broker-CPU (Gauge) |
| MEMORY_USED | Speichernutzung |
| CONNECTIONS | Client-Verbindungsanzahl |
| NETWORK IN/OUT | Netzwerk-Ein-/Ausgang |
| GC_COUNT / GC_TIME_MS | GC-Anzahl und Latenz |
| THREAD_COUNT | Thread-Anzahl |
| INCOMMING / OUTGOING | Empfangs- und Sendenarichtenanzahl |
| RETAINED_COUNT | Anzahl Retained-Meldungen |
| SUBSCRIPTIONS | Abonnementanzahl |
| TOTAL_MESSAGE | Gesamte Nachrichtenanzahl |
KAFKA
| Panel | Beschreibung |
|---|---|
| CPU_USED | Kafka Broker-CPU (Gauge) |
| MEMORY_USED | Speichernutzung |
| GLOBAL_TOPIC | Globales Thema-Status |
| NETWORK IN/OUT | Netzwerk-Ein-/Ausgang |
| TOPIC_BYTE_IN/OUT_PER_SEC | Bytes pro Sekunde nach Thema |
| MESSAGE_PER_SEC_MEAN_RATE / 1M_RATE | Nachrichtenthroughput pro Sekunde |
| NETWORK_REQUEST_FETCH | Fetch-Anfragenzahl |
| OFFLINE_PARTITION_COUNT | Offline-Partitionsanzahl |
| ACTIVE_CONTROLLER_COUNT | Aktive Controller-Anzahl |
WEBSOCKET
| Panel | Beschreibung |
|---|---|
| CPU_USED | WebSocket Server-CPU (Gauge) |
| MEMORY_USED | Speichernutzung |
| CONNECTION_COUNT | WebSocket-Verbindungsanzahl |
| ENQUEUE / DEQUEUE | Warteschlangen-Ein-/Ausgang |
Integration von Überwachungstools
ELK Stack
Sie können Container-Logs über die Filebeat → Logstash → Elasticsearch → Kibana-Pipeline erfassen und eine Log-Such- und Analysisfumgebung aufbauen. Wenn Sie in einer Großumgebung Logs effizient verwalten möchten, sollten Sie eine Implementierung erwägen. Die Container-Standardausgabe wird vom Docker-Logging-Treiber erfasst, Datei-Logs im Container von Host-Mounts (PLANTPULSE_LOG_DIR).