Skip to main content

System Monitoring

Overview

PlantPulse monitoring consists of 3 layers. Using the tools in each layer together allows you to detect issues early and respond quickly.

LayerResponsibilityFrequency
L1 Host/StackContainer state, health, resource usage, health responseEvery minute–5 minutes (auto/manual)
L2 Platform Built-inModule-level business metrics (throughput, lag, queue depth, JVM)Real-time
L3 External MonitoringLong-term trends, alarms, multi-host integrated viewReal-time

Platform Service Modules

PlantPulse comprises multiple service modules starting with the plantpulse- prefix. Modules and containers are not 1:1 — six applications each have their own container, while the remaining infrastructure modules share a single plantpulse-datalake container.

LocationModule
Own containerplantpulse-server-web · plantpulse-batch-web · plantpulse-warehouse · plantpulse-plugin-opcua-server · plantpulse-plugin-aasx-server · plantpulse-ha
Inside plantpulse-datalake containerstorage · messaging · analytics · timeseries · workflow · cep · data-gateway · sql · monitor · backup

Container-level status is viewed from the host with bin/status.sh, and module-level status within the data lake is viewed with status.sh. The «ports» below are those opened inside the container by that module; only some are exposed to the host → Port Configuration

Core Service Modules

ModulePortDescription
plantpulse-server80 / 443 / 7443Web server and management console, REST API
plantpulse-cep7400 / 7401Complex Event Processing Engine (Esper)
plantpulse-batch9500Batch processing server
plantpulse-data-gateway5500Data gateway (HTTP REST-based data query)
plantpulse-sql4000SQL query tool
plantpulse-monitor4950 (HTTPS)System monitoring agent. The only health port published to the host
plantpulse-warehouse9600Data warehouse
plantpulse-plugin-opcua-server11004 / 11005OPC-UA server plugin
plantpulse-plugin-aasx-server(not exposed to host)AASX server plugin
plantpulse-ha10210Redundancy recovery daemon
plantpulse-proxy80 / 443 / 1883 / 1884The only entry point for users and equipment

Messaging Module (plantpulse-messaging)

ServicePortDescription
Kafka9092Distributed message streaming
MQTT1883IoT lightweight message protocol
MQTT Enterprise-MQTT Enterprise Edition

Storage Module (plantpulse-storage)

ServicePortDescription
Cassandra 6.09042Time series database (CQL)
PostgreSQL5432Metadata relational database
Valkey (Redis)6379In-memory cache
MinIO9000Object storage (S3 compatible)
JanusGraph-Graph database
RustFS / WeedFS-Distributed file system

Analytics Module (plantpulse-analytics)

ServicePortDescription
Spark Master7077Distributed analytics engine
Spark UI4440Spark management console
Kyuubi10000Distributed SQL gateway (JDBC/Thrift)
Gravitino19001Data catalog
Hadoop-Distributed file system
Hive-Data warehouse query engine

Timeseries Module (plantpulse-timeseries)

ServicePortDescription
Timeseries Engine7800Timeseries data processing engine
Timeseries UI3000Timeseries data visualization UI

Workflow Module (plantpulse-workflow)

ServicePortDescription
Temporal7233Distributed workflow engine (Web UI 8233)
Kestra8380Workflow orchestration / scheduler

Utility Modules

ModuleDescription
plantpulse-datalake-cli (pd)Data lake start/stop/restart, configuration, node management CLI
plantpulse-setupInitial setup tool (models, CSV configuration)
plantpulse-backupBackup service
plantpulse-recoveryData recovery tool
plantpulse-exporterAsset data export tool
plantpulse-migratorData migration tool (Spark-based)
plantpulse-mirror-makerData replication tool
plantpulse-simulatorData simulator (for testing)
plantpulse-apiREST API client library

Checking Service Status

From the host check the status of the entire stack first.

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

For port-level status of infrastructure modules inside the data lake container:

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

Example output:

==============================================================================================================
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
App containers do not appear in the list above

The status.sh inside the data lake only checks modules in that container. If PP_SERVER · PP_BATCH · PP_WAREHOUSE · PP_PLUGIN items show STOPPED or are missing, it is not a failure — those apps run in their own containers, and the determination is made by bin/status.sh on the host.

Environment Variables

Host-side values are set by /opt/kopens/plantpulse-platform-docker/bin/env.sh, while the values actually seen by the container are determined by compose/docker-compose.yml. The detailed relationship and priority are in Environment Variable Reference. The names below are used inside the container.

VariableDescriptionExample
PP_SCHEMESchema namePP
PP_MODEExecution modeMASTER
PP_HOST_IPInternal IP192.168.0.41
PP_SERVICE_IPService IP192.168.0.41
PP_MASTER_IPMaster node IP192.168.0.41
PP_DATA_DIRData directory/data1/pp-data
PP_TEMP_DIRTemporary directory/data1/pp-temp
PP_BACKUP_DIRBackup directory/data1/pp-backup
PP_CLUSTER_CORESCluster CPU cores16
PP_CLUSTER_MEMORY_BY_COREMemory per core2G
PP_OPTIONSAdditional options (JSON){"use-infra":true,"use-app":true}

Monitoring Targets

Key targets and items to monitor in the PlantPulse platform are as follows. Regular checks of each item will help ensure stable operation.

TargetMonitoring Items
Application serverCPU, memory, disk, threads
JVMHeap memory, GC, class loading
PostgreSQLConnection pool, query performance, disk
CassandraCluster status, latency, compaction
RedisMemory, hit rate, connections
EnginePipeline throughput, queue depth, error rate
NetworkOPC connections, WebSocket, latency

Web Console Monitoring

System Monitoring Screen

Path: /monitoring/index

Displays real-time system status in dashboard form. If any metric falls outside the "normal range" in the table below, it may cause performance degradation, so please check.

MetricDescriptionNormal Range
CPU UsageServer CPU load< 70%
JVM Heap MemoryHeap used / max< 80%
Active ThreadsNumber of running threads< 500
MPS (Messages/sec)Messages processed per secondBelow configured rate limit
Pipeline QueueNumber of waiting messages< 10,000
DB ConnectionsNumber of active DB connections< pool maximum

Server Status

Path: /server/status

ItemDescription
Server UptimeUptime
Engine StatusRUNNING / STOPPED / ERROR
Last Start TimeEngine last start timestamp
Version InformationPlatform version

Log Monitoring

Logs are text files that record system operation state. When a problem occurs, examining logs greatly helps identify the cause.

From the Host — logs.sh

Since there are eight containers, when you don't know which container has an issue, starting without arguments is fastest.

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 로 종료)

By default, it prints the last N lines (default 200) and exits. To follow along, add -f.

Log Files Inside the 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

To copy logs to the host at once, use ./tools/copy-log-to-local.sh; for support request bundles, use ./doctor.sh.

Log Levels

LevelDescription
INFONormal operation information
WARNWarning message (performance degradation, retry situations, etc.)
ERRORError occurred (processing failure, connection error, etc.)

Key Log Patterns

If the following log pattern appears, take the corresponding action:

PatternMeaning
Engine started successfullyEngine started normally
Pipeline queue overflowPipeline queue exceeded — check processing speed
Cassandra connection failedCassandra connection failed — check cluster status
OPC connection lostOPC server connection lost — check network and OPC server
Rate limit exceededProcessing rate exceeded — adjust engine.pipeline.ratelimit value

Database Monitoring

Regular monitoring of database status helps prevent performance degradation and failures beforehand.

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 Status Codes:

StatusDescription
UNUp / Normal — healthy state
DNDown / Normal — node is down
UJUp / Joining — joining the cluster
ULUp / Leaving — leaving the cluster

Redis

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

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

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

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

JMX Monitoring

Note: JMX (Java Management Extensions) is a technology that allows monitoring the internal state of Java applications from outside. PlantPulse provides over 150 attributes via JMX.

JMX Connection

# 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
  • Categories: engine, cache, storage, network, pipeline, cep, scheduler, monitoring, and 12 others

Key JMX Attributes

AttributeDescription
engine.statusEngine status
engine.uptimeUptime
pipeline.queue.sizePipeline queue size
pipeline.mpsMessages processed per second
cache.tag.countNumber of cached tags
storage.cassandra.statusCassandra connection status

Codahale Metrics

Note: Codahale Metrics is a library for collecting application performance metrics. PlantPulse collects over 70 metrics, which can be queried at the /admin/tool/metrics path.

Metric Types

TypeDescription
CounterCumulative counter (event count, error count, etc.)
TimerMeasures processing time (average, p95, p99)
HistogramShows value distribution (queue depth, batch size)
GaugeShows current value (active connections, memory)

Standard Health Check API

Web apps / plugin services provide a health check endpoint GET /api/health following the platform common spec. For major web apps (server / batch / cep / sql / data-gateway), this endpoint is readiness-semantic — it does not report UP just because the process (context) is alive; instead it returns UP only when the internal engine / critical dependencies are healthy and ready to receive traffic (2026-06 platform design decision).

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":{...}}
  • readiness200 UP only when ready. Reports 503 STARTING if still starting, and 503 DEGRADED if some dependencies go down after startup, making the distinction clear.
  • No dependency ping — checks only read in-memory state flags that each service already maintains (live DB query / network ping forbidden — polling does not load data stores).
  • Anonymous access — can be called without authentication (operational inspection / deployment auto-validation).
  • No caching — headers of type Cache-Control: no-cache are always included.
  • Response fields are status / service (artifact name) / ts (epoch ms) + checks (detailed checks per service) for readiness-promoted services.
ServiceHealth URLSemanticchecks / Notes
serverhttp://HOST:80/api/healthreadinessengine — engine lifecycle state (UP only when all startup phases complete RUNNING)
batchhttp://HOST:9500/api/healthreadinesstimer (batch pipeline running) / redis (InMemory connection)
cephttp://HOST:7400/api/healthreadinessengine (CEP engine + consumer + recovery complete) / redis (InMemory connection)
sqlhttps://HOST:4001/api/healthreadinessdatabase_manager (DB manager initialized) — served via HTTPS
data-gatewayhttp://HOST:5500/api/healthreadinessdatabase / inmemory / query_log — only this path exempt from HTTPS enforce (CONFIDENTIAL), localhost HTTP probe allowed
warehouse (s3 service)http://HOST:9600/api/healthreadinesstemporal — Temporal worker registration complete. If not registered, STARTING + 503 (web server starts first, workers follow, so 503 right after boot is normal). Includes common 3 fields + system/JVM metrics
plugin — AAS V3http://HOST:8090/api/healthlivenessreadiness not promoted
plugin — OPC-UA Browse UIhttp://HOST:12780/api/healthlivenessport is opc.ua.browser.ui.port setting (default 12780)

There are two use cases:

  1. Operational inspection — manual checks, crontab / external monitoring readiness probes
  2. CI deployment auto-validationdeploy:dev job polls this URL after deployment (DEPLOY_HEALTH, 240 seconds) to confirm startup. Since it is readiness-semantic, 503 during boot is normal; polling waits for UP transition.

Role distinction: plantpulse-monitor (:4950) is the infrastructure monitoring agent that collects and exposes host / JVM / module metrics, while /api/health is the readiness endpoint provided by each web app itself. They are complementary, not interchangeable.

In container environments, each app's readiness is already being judged by compose's healthcheck, so operators get the judgment of all eight containers together with bin/status.sh.

Health Check Script

Using health check scripts allows you to automatically verify that key platform services are operating normally.

Automatic Health Check

Below is an example script that automatically checks the status of key services:

#!/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

You can register it in crontab for periodic execution:

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

Grafana Monitoring Dashboard

Platform monitoring is provided visually through Grafana. Access URL: http://localhost:3000/

Note: Grafana is an open-source data visualization tool that displays various PlantPulse metrics as graphs and charts. Five dashboards are provided by default under the PLANTPULSE folder.


1. PlantPulse - Server

The core dashboard for understanding the overall status of the platform server at a glance.

SUMMARY

PanelTypeDescription
VERSIONStatPlatform version information
Server Start DateStatEngine first start timestamp
CPU LoadGaugeServer CPU usage
Memory UsageGaugeServer memory usage
Received per SecondStatMessages received per second (MPS)
Total Saved CountStatAccumulated saved data count
Network LatencyStatMessage receive network latency (ms)
DiagnosisStatDiagnostic event status

SERVER-METRICS

PanelTypeDescription
CACHE / MQTT / KAFKA / WEBSOCKET / DATABASE / TSEStatConnection status of each service
Server CPU UsageGraphCPU usage time series trend
Server Memory UsageGraphMemory usage time series trend
JAVA Heap UsageGraphJVM heap memory usage
Data DISK R/W StatusGraphDisk read/write traffic
Messages Received by ProtocolGraphReceived volume by protocol (OPC, MQTT, Kafka, etc.)
Message Receive Network LatencyGraphNetwork latency time series
Total Message ReceivedGraphCumulative message received count
Message Received Count BY 1SECGraphMessages received per second trend
Pipeline Waiting QueueGraphPipeline queue depth
Pipeline Offload Queue SizeGraphRocksDB offload queue
Pipeline Validation FailuresGraphValidation failure count
Pipeline Worker Processing TimeGraphWorker processing duration
Timeout Message Backup ProcessingGraphTimeout message backup count
Pipeline CollectorGraphCollector operation status
Storage Save BufferGraphStorage buffer size
Streaming Processing CountGraphWebSocket streaming throughput
Streaming Operating Thread CountGraphStreaming active threads
Streaming Waiting Queue CountGraphStreaming queue wait count
Storage Save CountGraphDB save count
Storage Batch CountGraphBatch save count
Storage Worker CountGraphStorage worker count
DDS Processing CountGraphKafka DDS distribution count
Async Thread Active CountGraphAsync execution active threads
Async Thread Pool SizeGraphThread pool size
Diagnosis Error CountGraphDiagnosis error occurrence trend
Logging ExceptionsGraphException log occurrence trend
GC TimeGraphJVM GC duration
DISK UsageGraphDisk usage trend

2. PlantPulse - Data Lake House

Dashboard for monitoring the performance and status of the database and storage layers.

DATA-GATEWAY

PanelDescription
TOTAL_QUERYTotal query count
QPSQueries per second (Gauge)
QUERY_LATENCYQuery latency time series
QUERY_LATENCY_MAXMaximum query latency
SUCCESS / ERRORSuccess and failure count

CACHE (REDIS)

PanelDescription
CLIENTSRedis client connection count
ALLOCATORMemory allocator status
KEY_COUNTNumber of stored keys
FRAGMENTATIONMemory fragmentation ratio

CEP (ESPER)

PanelDescription
JAVA_HEAP_USEDCEP engine heap memory
EVENT_INGESTION_RATEEvent ingestion rate
EQL_CPU_TIMEEPL query CPU time
EQL_MAP_COUNTEPL map count
EVENT_INGEST_DIFFEvent ingestion difference
EVENT_DELAY_HISTOGRAMEvent delay distribution
CEP_STATEMENT_MATCH_RATEStatement match rate
EQL_STATEMENT_OUTPUT_RATEStatement output rate

META-STORE (POSTGRES)

PanelDescription
TOTAL_CONNECTIONSTotal connections
QUERY_LATENCYQuery latency
TOTAL_READS_HITSRead hit count
TOTAL_DB_SIZETotal DB size

EVENT-STORE (CASSANDRA)

PanelDescription
NATIVE_CLIENTNative client connections
LATENCYRead/write latency
READ_PER_SECONDS / WRITE_PER_SECONDSReads/writes per second
HEAP / DIRECT_MAPPED_MEMORYJVM memory
CACHE / CACHE_HIT_RATECache and hit rate
TOTAL_DATA_SIZETotal data size
MEMTABLEMemtable status
COMPACTION / COMPACTION_BYTESCompaction status
TABLE_COMPACTIONS / TABLE_SSTABLE_COUNTCompaction and SSTable per table
BLOOM_FILTER_FALSE_RATIOBloom filter false positive ratio
TABLE_READ_LATENCY / TABLE_RANGE_LATENCY / TABLE_WRITE_LATENCYLatency per table
PENDINGS / FLUSH / THREAD_POOLPending, flush, thread pool
STATEMENT / COMMITLOG / EXCEPTION / MUTATIONInternal metrics
COMPRESSION / TOTAL_SSTABLECompression and SSTable status

TIMESERIES-STORE (TSE)

PanelDescription
TSE_MEMORYTimeseries engine memory
TSE_HTTP_TIMEHTTP response time
TSE_DATASTOREDatastore status
TSE_QUEUE_PROCESS_COUNTQueue process count

ANALYTICS-STORE (SPARK)

PanelDescription
MEMORY_USEDSpark memory usage
CONNECTIONConnection count
OPERATIONOperation count
REQUEST_RATERequest rate

3. PlantPulse - Edge Gateway

Dashboard for monitoring edge device status, PLC connections, and data reception.

Summary Panels

PanelDescription
Total Edge GatewaysNumber of registered edge gateways
Power (Healthy/Abnormal)Power status healthy and abnormal counts
PLCPLC connection count
Total Data CapacityTotal collected data size
Received per Second TotalTotal per-second receive sum across all edges (Gauge)
Maximum Data Receive LatencyMaximum receive latency (ms) (Gauge)
LogLog status

PLC STATUS

PanelDescription
PLC Ping Failure CountPLC connection ping failure trend
PLC Connected / DisconnectedPLC connection state trend
PLC Value Read Success CountData read success trend
PLC Data Read Failure CountData read failure trend
System Error Count TrendSystem error trend

DATA POINT

PanelDescription
Total Sent per Second SUM(MPS)Total per-second send sum across all edges
Point Transmission CountPoint transmission count trend
Transmitted Point BytesTransmitted data bytes
Receive Minimum/Average/Maximum LatencyReceive latency distribution

EDGE H/W

PanelDescription
CPUEdge device CPU usage
MemoryMemory usage
Disk (SSD)Disk usage
Network Upload/DownloadNetwork traffic
TemperatureDevice temperature

4. PlantPulse - Statistics

Dashboard for tracking long-term statistics such as daily data growth and peak resource usage. Useful for understanding long-term system growth trends.

PanelDescription
Total Data CapacityTotal stored data size
Daily Data Total CapacityDaily data capacity trend
Daily Message VolumeDaily message count
Daily Data GrowthDaily data growth trend
Message Received CountMessage received count trend
Network Latency Average/MaximumNetwork latency statistics
SSTABLE GrowthCassandra SSTable growth trend
Maximum DB Client ConnectionsDB connection peak
Maximum Async Thread Execution CountAsync processing peak
Maximum JAVA GC TimeGC maximum duration
Maximum CQL Prepared CountCQL Prepared Statement peak
Maximum Partition SizeCassandra partition maximum
Minimum JAVA Heap Free SizeJVM heap minimum free
Maximum Async Thread Wait CountAsync queue maximum wait
Maximum Memory Buffer SizeMemory buffer peak
Backup Message Processing CountBackup processing count

5. PlantPulse - Messaging

Dashboard for monitoring MQTT, Kafka, and WebSocket message broker status.

SUMMARY

PanelDescription
MQTT / KAFKA / WEBSOCKETConnection status of each broker
CPUServer CPU usage
JAVA_HEAPJVM heap usage
NETWORK_READ_BYTESNetwork receive bytes

MQTT

PanelDescription
CPU_USEDMQTT broker CPU (Gauge)
MEMORY_USEDMemory usage
CONNECTIONSClient connection count
NETWORK IN/OUTNetwork input/output
GC_COUNT / GC_TIME_MSGC count and duration
THREAD_COUNTThread count
INCOMMING / OUTGOINGIncoming and outgoing messages
RETAINED_COUNTRetained message count
SUBSCRIPTIONSSubscription count
TOTAL_MESSAGETotal message count

KAFKA

PanelDescription
CPU_USEDKafka broker CPU (Gauge)
MEMORY_USEDMemory usage
GLOBAL_TOPICGlobal topic status
NETWORK IN/OUTNetwork input/output
TOPIC_BYTE_IN/OUT_PER_SECTopic bytes per second
MESSAGE_PER_SEC_MEAN_RATE / 1M_RATEMessages per second throughput
NETWORK_REQUEST_FETCHFetch request count
OFFLINE_PARTITION_COUNTOffline partition count
ACTIVE_CONTROLLER_COUNTActive controller count

WEBSOCKET

PanelDescription
CPU_USEDWebSocket server CPU (Gauge)
MEMORY_USEDMemory usage
CONNECTION_COUNTWebSocket connection count
ENQUEUE / DEQUEUEQueue input/output count

Monitoring Tool Integration

ELK Stack

You can build a log search and analysis environment by collecting container logs through a Filebeat → Logstash → Elasticsearch → Kibana pipeline. If you wish to efficiently manage logs in a large-scale operational environment, consider adoption. Container standard output is collected via docker logging driver, and file logs inside containers are collected via host mount (PLANTPULSE_LOG_DIR).