Zum Hauptinhalt springen

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.

SchichtVerantwortungHäufigkeit
L1 Host/StackContainer-Status·Health, Ressourcennutzung, Health-ResponsesJede Minute~5 Min. (automatisch/manuell)
L2 Plattform integriertModulweise Geschäftsmetriken (Durchsatz, Lag, Warteschlangentiefe, JVM)Echtzeit
L3 Externe ÜberwachungLangzeittrends, Alarme, konsolidierte Mehrhost-AnsichtEchtzeit

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 befindetModule
Eigener Containerplantpulse-server-web · plantpulse-batch-web · plantpulse-warehouse · plantpulse-plugin-opcua-server · plantpulse-plugin-aasx-server · plantpulse-ha
Innerhalb des plantpulse-datalake-Containersstorage · 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

ModulPortBeschreibung
plantpulse-server80 / 443 / 7443Webserver und Admin-Konsole, REST API
plantpulse-cep7400 / 7401CEP-Engine (Esper)
plantpulse-batch9500Batch-Verarbeitungsserver
plantpulse-data-gateway5500Data Gateway (HTTP REST-basierte Datenabfrage)
plantpulse-sql4000SQL-Abfrage-Tool
plantpulse-monitor4950 (HTTPS)System-Überwachungsagent. Der einzige Health-Port, der auf dem Host veröffentlicht wird
plantpulse-warehouse9600Data Warehouse
plantpulse-plugin-opcua-server11004 / 11005OPC-UA-Server-Plugin
plantpulse-plugin-aasx-server(nicht auf Host freigegeben)AASX-Server-Plugin
plantpulse-ha10210Redundanz-Wiederherstellungs-Daemon
plantpulse-proxy80 / 443 / 1883 / 1884Der einzige Eingang für Benutzer und Anlagen

Messaging-Module (plantpulse-messaging)

ServicePortBeschreibung
Kafka9092Verteiltes Message-Streaming
MQTT1883IoT Lightweight Message Protocol
MQTT Enterprise-MQTT Enterprise Edition

Storage-Module (plantpulse-storage)

ServicePortBeschreibung
Cassandra 6.09042Zeitreihendatenbank (CQL)
PostgreSQL5432Metadaten-Relationaldatenbank
Valkey (Redis)6379In-Memory-Cache
MinIO9000Objektspeicher (S3-kompatibel)
JanusGraph-Graphdatenbank
RustFS / WeedFS-Verteiltes Dateisystem

Analytics-Module (plantpulse-analytics)

ServicePortBeschreibung
Spark Master7077Verteilte Analytics-Engine
Spark UI4440Spark-Admin-Konsole
Kyuubi10000Verteiltes SQL-Gateway (JDBC/Thrift)
Gravitino19001Datenkatalog
Hadoop-Verteiltes Dateisystem
Hive-Data Warehouse Query Engine

Zeitreihen-Module (plantpulse-timeseries)

ServicePortBeschreibung
Zeitreihen-Engine7800Zeitreihen-Datenverarbeitungs-Engine
Zeitreihen UI3000Zeitreihen-Datenvisualisierungs-UI

Workflow-Module (plantpulse-workflow)

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

Utility-Module

ModulBeschreibung
plantpulse-datalake-cli (pd)Datalake-Start/Stop/Neustart, Konfiguration, Knoten-Management CLI
plantpulse-setupInitialisierungs-Tool (Modelle, CSV-Konfiguration)
plantpulse-backupBackup-Service
plantpulse-recoveryDatenwiederherstellungs-Tool
plantpulse-exporterAsset-Daten-Export-Tool
plantpulse-migratorDatenmigrations-Tool (Spark-basiert)
plantpulse-mirror-makerDatenreplikations-Tool
plantpulse-simulatorDatensimulator (zu Testzwecken)
plantpulse-apiREST-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
Die obige Liste enthält keine App-Container

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.

VariableBeschreibungBeispiel
PP_SCHEMESchema-NamePP
PP_MODEAusführungsmodusMASTER
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_DIRTemp-Verzeichnis/data1/pp-temp
PP_BACKUP_DIRBackup-Verzeichnis/data1/pp-backup
PP_CLUSTER_CORESCluster-CPU-Kerne16
PP_CLUSTER_MEMORY_BY_CORESpeicher pro Kern2G
PP_OPTIONSZusä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
AnwendungsserverCPU, Speicher, Festplatte, Threads
JVMHeap-Speicher, GC, Klassenladung
PostgreSQLVerbindungspools, Abfrageleistung, Festplatte
CassandraClusterstatus, Latenz, Komprimierung
RedisSpeicher, Hit-Rate, Verbindungen
EnginePipeline-Durchsatz, Warteschlangentiefe, Fehlerrate
NetzwerkOPC-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.

IndikatorBeschreibungNormaler Bereich
CPU-AuslastungServer-CPU-Last< 70%
JVM Heap-SpeicherHeap-Nutzung/Maximum< 80%
Aktive ThreadsAnzahl laufender Threads< 500
MPS (Meldungen/Sek.)Nachrichten pro SekundeUnterhalb des konfigurierten Rate Limit
Pipeline-WarteschlangeAnzahl wartender Nachrichten< 10.000
DB-VerbindungAktive Datenbankverbindungen< Maximale Poolgröße

Serverstatus

Pfad: /server/status

ElementBeschreibung
Server-BetriebszeitUptime
Engine-StatusRUNNING / STOPPED / ERROR
Letzte StartzeitLetzte Engine-Startzeitpunkt
VersionsinformationenPlattformversion

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

LevelBeschreibung
INFONormale Betriebsinformationen
WARNWarnmeldung (Leistungsverschlechterung, Wiederholung usw.)
ERROREin Fehler ist aufgetreten (Verarbeitungsfehler, Verbindungsfehler usw.)

Wichtige Log-Muster

Wenn die folgenden Log-Muster erscheinen, führen Sie bitte die entsprechende Maßnahme durch:

MusterBedeutung
Engine started successfullyDie Engine ist normal gestartet
Pipeline queue overflowDie Pipeline-Warteschlange wurde überschritten — bitte überprüfen Sie die Verarbeitungsgeschwindigkeit
Cassandra connection failedCassandra-Verbindung fehlgeschlagen — bitte überprüfen Sie den Clusterstatus
OPC connection lostOPC-Serververbindung unterbrochen — bitte überprüfen Sie das Netzwerk und den OPC-Server
Rate limit exceededVerarbeitungsrate ü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:

StatusBeschreibung
UNUp / Normal — normaler Zustand
DNDown / Normal — Knoten ist ausgefallen
UJUp / Joining — wird gerade dem Cluster beigetreten
ULUp / 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

AttributeBeschreibung
engine.statusEngine-Status
engine.uptimeBetriebszeit
pipeline.queue.sizePipeline-Warteschlangengröße
pipeline.mpsNachrichten pro Sekunde
cache.tag.countAnzahl gecachter Tags
storage.cassandra.statusCassandra-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/metrics abgerufen werden.

Metrik-Typen

TypBeschreibung
CounterKumulative Zähler (Ereignisanzahl, Fehleranzahl usw.)
TimerMisst die Verarbeitungszeit (Durchschnitt, p95, p99)
HistogramZeigt die Verteilung von Werten (Warteschlangentiefe, Batch-Größe)
GaugeZeigt 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 Bootens 503 STARTING, nach erfolgreichem Boot wenn einige Abhängigkeiten ausfallen 503 DEGRADED mit 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 CacheCache-Control: no-cache-Header-Familie ist immer enthalten.
  • Antwortonlyfelder sind status / service (Artefaktname) / ts (Epoch ms) + für Readiness-Promotion-Services checks (Service-spezifische Check-Details).
ServiceHealth URLBedeutungchecks / Hinweise
serverhttp://HOST:80/api/healthreadinessengine — Engine-Lebenszyklus-Status (nur UP wenn alle Bootphasen abgeschlossen sind RUNNING)
batchhttp://HOST:9500/api/healthreadinesstimer (Batch-Pipeline aktiv) / redis (InMemory-Verbindung)
cephttp://HOST:7400/api/healthreadinessengine (CEP-Engine+Consumer+Recovery abgeschlossen) / redis (InMemory-Verbindung)
sqlhttps://HOST:4001/api/healthreadinessdatabase_manager (DB-Manager initialisiert) — über HTTPS bereitgestellt
data-gatewayhttp://HOST:5500/api/healthreadinessdatabase / inmemory / query_log — nur dieser Pfad von HTTPS-Erzwingung ausgenommen (CONFIDENTIAL), localhost HTTP-Probe zulässig
warehouse (s3 service)http://HOST:9600/api/healthreadinesstemporal — 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 V3http://HOST:8090/api/healthlivenessreadiness nicht hochgestuft
plugin — OPC-UA Browse UIhttp://HOST:12780/api/healthlivenessPort ist nach opc.ua.browser.ui.port Konfiguration (Standard 12780)

Es gibt zwei Anwendungsfälle.

  1. Ops-Überprüfung — manuelle Überprüfung, crontab / externe Überwachungs-Readiness-Prüfung
  2. CI-Bereitstellungsautovalidierungdeploy:dev Job 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/health der 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.sh einer 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)

PanelTypBeschreibung
VERSIONStatPlattformversionsinformationen
ServerstartdatumStatEngine-Erste-Start-Zeitstempel
CPU-LastGaugeServer-CPU-Auslastung
SpeichernutzungGaugeSpeichernutzung des Servers
Empfangene Einträge pro SekundeStatNachrichten pro Sekunde (MPS)
GesamtspeicherungStatKumulative gespeicherte Datensätze
NetzwerkverzögerungStatNachrichtenempfangs-Netzwerkverzögerung (ms)
DiagnoseStatDiagnoseereignisstatus

SERVER-METRICS (Server-Metriken)

PanelTypBeschreibung
CACHE / MQTT / KAFKA / WEBSOCKET / DATABASE / TSEStatVerbindungsstatus der einzelnen Services
Server-CPU-AuslastungGraphCPU-Auslastungs-Zeitreihen-Trend
Speichernutzung des ServersGraphSpeichernutzungs-Zeitreihen-Trend
JAVA Heap-NutzungGraphJVM Heap-Speichernutzung
Datendatenträger-Lese-/SchreibstatusGraphDatenträgerlese-/Schreibverkehr
Protokollweise empfangene NachrichtenzahlGraphEmpfangsmengen nach OPC, MQTT, Kafka usw.
Netzwerkverzögerung beim NachrichtenempfangGraphNetzwerkverzögerungs-Zeitreihe
Gesamte empfangene NachrichtenmengeGraphKumulativ empfangene Nachrichten
Nachrichtenempfang pro SekundeGraphTrend der pro Sekunde empfangenen Nachrichten
Pipeline-Warteschlangen-WartebestandGraphPipeline-Warteschlangentiefe
Größe der Pipeline-Offload-WarteschlangeGraphRocksDB Offload-Warteschlange
Fehlerhafte Validierung der PipelineGraphValidierungsfehler
Verarbeitungszeit des Pipeline-WorkersGraphWorker-Verarbeitungslatenz
Backup-Verarbeitung von Timeout-MeldungenGraphBackup-Verarbeitete Einträge
Pipeline-SamplerGraphSammler-Betriebsstatus
Speicherpuffer für SpeicherungGraphSpeicherpuffergröße
Streaming-Verarbeitete EinträgeGraphWebSocket-Streaming-Durchsatz
Aktive Threads für Streaming-BetriebGraphStreaming-aktive Threads
Streaming-Warteschlange WartebestandGraphStreaming-Warteschlangen-Wartebestand
SpeichergeschäfteGraphDatenbankgespeicherte Einträge
Speicher-Batch-AnzahlGraphBatch-gespeicherte Einträge
Anzahl der SpeicherarbeiterGraphSpeicher-Worker-Anzahl
DDS-VerarbeitungGraphKafka DDS-Verteilungsanzahl
Aktive Threads des asynchronen PoolsGraphAsynchron aktive Threads
Asynchrone Thread-Pool-GrößeGraphThread-Pool-Größe
Fehleranzahl der DiagnoseGraphDiagnose-Fehler-Trend
ProtokollierungsausnahmenGraphAusnahmelog-Trend
GC-ZeitGraphJVM GC-Latenz
DatenträgerbelegungGraphDatenträgerbelegungs-Trend

2. PlantPulse - Data Lake House

Dashboard für Überwachung von Leistung und Status von Datenbankschicht und Speicherschicht.

DATA-GATEWAY (Daten-Gateway)

PanelBeschreibung
TOTAL_QUERYGesamtabfragen
QPSAbfragesätze pro Sekunde (Gauge)
QUERY_LATENCYAbfrageverzögerungs-Zeitreihe
QUERY_LATENCY_MAXMaximale Abfrageverzögerung
SUCCESS / ERRORErfolgs- und Fehleranzahl

CACHE (REDIS)

PanelBeschreibung
CLIENTSRedis-Clientverbindungen
ALLOCATORSpeicherzuteilungs-Status
KEY_COUNTAnzahl gespeicherter Keys
FRAGMENTATIONSpeicherfragmentierungsquote

CEP (ESPER)

PanelBeschreibung
JAVA_HEAP_USEDCEP-Engine Heap-Speicher
EVENT_INGESTION_RATEEreignis-Ingestion-Rate
EQL_CPU_TIMEEPL-Anfrage CPU-Zeit
EQL_MAP_COUNTEPL Map-Anzahl
EVENT_INGEST_DIFFEreignis-Ingestion-Differenz
EVENT_DELAY_HISTOGRAMEreignisverzögerungs-Verteilung
CEP_STATEMENT_MATCH_RATEStatement-Match-Rate
EQL_STATEMENT_OUTPUT_RATEStatement-Output-Rate

META-STORE (POSTGRES)

PanelBeschreibung
TOTAL_CONNECTIONSGesamtverbindungen
QUERY_LATENCYAbfrageverzögerung
TOTAL_READS_HITSRead-Hit-Anzahl
TOTAL_DB_SIZEGesamte Datenbankgröße

EVENT-STORE (CASSANDRA)

PanelBeschreibung
NATIVE_CLIENTNative Client-Verbindungen
LATENCYLese-/Schreibverzögerung
READ_PER_SECONDS / WRITE_PER_SECONDSLese-/Schreibvorgänge pro Sekunde
HEAP / DIRECT_MAPPED_MEMORYJVM-Speicher
CACHE / CACHE_HIT_RATECache und Hit-Rate
TOTAL_DATA_SIZEGesamtdatengröße
MEMTABLEMemtable-Status
COMPACTION / COMPACTION_BYTESKomprimierungsstatus
TABLE_COMPACTIONS / TABLE_SSTABLE_COUNTTabellen-Komprimierung und SSTable
BLOOM_FILTER_FALSE_RATIOBloom-Filter False-Ratio
TABLE_READ_LATENCY / TABLE_RANGE_LATENCY / TABLE_WRITE_LATENCYTabellen-Verzögerung
PENDINGS / FLUSH / THREAD_POOLAusstehend, Flush, Thread-Pool
STATEMENT / COMMITLOG / EXCEPTION / MUTATIONInterne Metriken
COMPRESSION / TOTAL_SSTABLEKomprimierung und SSTable-Status

TIMESERIES-STORE (TSE)

PanelBeschreibung
TSE_MEMORYZeitreihen-Engine-Speicher
TSE_HTTP_TIMEHTTP-Antwortzeit
TSE_DATASTOREDatenspeicher-Status
TSE_QUEUE_PROCESS_COUNTWarteschlangen-Verarbeitungsanzahl

ANALYTICS-STORE (SPARK)

PanelBeschreibung
MEMORY_USEDSpark-Speichernutzung
CONNECTIONVerbindungsanzahl
OPERATIONOperationsanzahl
REQUEST_RATEAnfragerate

3. PlantPulse - Edge Gateway

Dashboard für Überwachung von Edge-Geräte-Status, PLC-Verbindung und Datenempfangsstatus.

Zusammenfassung-Panels

PanelBeschreibung
Gesamte Edge-GatewaysAnzahl registrierter Edge-Gateways
Stromversorgung (normal/abnormal)Anzahl normaler und abnormaler Stromversorgungsstatus
PLCAnzahl PLC-Verbindungen
Gesamte DatengrößeGesamtgröße erfasster Daten
Empfang pro Sekunde SummeGesamte Empfangsrate aller Edges (Gauge)
Maximale EmpfangsverzögerungMaximale Empfangsverzögerung (ms) (Gauge)
LogLog-Status

PLC STATUS (PLC-Status)

PanelBeschreibung
PLC Ping-FehleranzahlPLC-Verbindungs-Ping-Fehler-Trend
PLC verbunden / getrenntPLC-Verbindungsstatus-Trend
PLC-Datenlese-ErfolgsanzahlDatenleseerfolgs-Trend
PLC-Datenlese-FehleranzahlDatenlesefehler-Trend
Systemfehlerzahl-TrendSystem-Fehler-Trend

DATA POINT (Datenpunkt)

PanelBeschreibung
Gesamte Sendung pro Sekunde SUM(MPS)Gesamtsenderate aller Edges pro Sekunde
Punkt-ÜbertragungsanzahlPunkt-Übertragungsanzahl-Trend
Übertragene Punkt-BytesÜbertragene Datenbytes
Empfangsverzögerung min/avg/maxEmpfangsverzögerungs-Verteilung

EDGE H/W (Edge-Hardware)

PanelBeschreibung
CPUEdge-Geräte-CPU-Auslastung
SpeicherSpeichernutzung
Datenträger (SSD)Datenträgernutzung
Netzwerk Upload/DownloadNetzwerkverkehr
TemperaturGerä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.

PanelBeschreibung
Gesamte DatengrößeGesamtgröße der gespeicherten Daten
Tägliche DatengesamtgrößeTäglicher Datengröße-Trend
Tägliche NachrichtenmengeTägliche Nachrichtenübertragungsanzahl
Tägliche DatensteigmengeTäglicher Datensteig-Trend
NachrichtenempfangsanzahlNachrichtenempfangsanzahl-Trend
Durchschnittliche/maximale NetzwerkverzögerungNetzwerkverzögerungs-Statistiken
SSTABLE-SteigmengeCassandra SSTable-Steig-Trend
Maximale DB-Client-VerbindungMaximale DB-Verbindungen
Maximale Anzahl asynchroner Thread-AusführungenAsynchroner Verarbeitungs-Spitzenwert
Maximale JAVA GC-ZeitMaximale GC-Latenz
Maximale CQL-VorbereitungMaximale CQL Prepared Statement
Maximale PartitionsgrößeMaximale Cassandra-Partitionsgröße
Minimale verfügbare JAVA-Heap-GrößeMinimale JVM-Heap-Verfügbarkeit
Maximale asynchrone Thread-WartezahlAsynchrone Warteschlangen-Spitzenwert
Maximale SpeicherpuffergrößeSpeicherpuffer-Maximumwert
Anzahl verarbeiteter Backup-MeldungenBackup-Verarbeitungsanzahl

5. PlantPulse - Messaging

Dashboard für Überwachung von MQTT, Kafka und WebSocket Message Broker Status.

SUMMARY (Zusammenfassung)

PanelBeschreibung
MQTT / KAFKA / WEBSOCKETVerbindungsstatus der einzelnen Broker
CPUServer-CPU-Auslastung
JAVA_HEAPJVM Heap-Nutzung
NETWORK_READ_BYTESNetzwerk-Empfangsbytes

MQTT

PanelBeschreibung
CPU_USEDMQTT Broker-CPU (Gauge)
MEMORY_USEDSpeichernutzung
CONNECTIONSClient-Verbindungsanzahl
NETWORK IN/OUTNetzwerk-Ein-/Ausgang
GC_COUNT / GC_TIME_MSGC-Anzahl und Latenz
THREAD_COUNTThread-Anzahl
INCOMMING / OUTGOINGEmpfangs- und Sendenarichtenanzahl
RETAINED_COUNTAnzahl Retained-Meldungen
SUBSCRIPTIONSAbonnementanzahl
TOTAL_MESSAGEGesamte Nachrichtenanzahl

KAFKA

PanelBeschreibung
CPU_USEDKafka Broker-CPU (Gauge)
MEMORY_USEDSpeichernutzung
GLOBAL_TOPICGlobales Thema-Status
NETWORK IN/OUTNetzwerk-Ein-/Ausgang
TOPIC_BYTE_IN/OUT_PER_SECBytes pro Sekunde nach Thema
MESSAGE_PER_SEC_MEAN_RATE / 1M_RATENachrichtenthroughput pro Sekunde
NETWORK_REQUEST_FETCHFetch-Anfragenzahl
OFFLINE_PARTITION_COUNTOffline-Partitionsanzahl
ACTIVE_CONTROLLER_COUNTAktive Controller-Anzahl

WEBSOCKET

PanelBeschreibung
CPU_USEDWebSocket Server-CPU (Gauge)
MEMORY_USEDSpeichernutzung
CONNECTION_COUNTWebSocket-Verbindungsanzahl
ENQUEUE / DEQUEUEWarteschlangen-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).