システムモニタリング
概要
PlantPulse のモニタリングは 3 階層 で構成されています。各階層のツールを組み合わせて使用することで、問題を早期に発見し、迅速に対応できます。
| 階層 | 責務 | 頻度 |
|---|---|---|
| L1 ホスト/スタック | コンテナ状態·ヘルス、リソース使用量、ヘルス応答 | 毎分~5分 (自動/手動) |
| L2 プラットフォーム組込 | モジュール別ビジネスメトリクス (スループット、ラグ、キュー深度、JVM) | リアルタイム |
| L3 外部モニタリング | 長期トレンド、アラーム、マルチホスト統合ビュー | リアルタイム |
プラットフォームサービスモジュール
PlantPulse は plantpulse- プレフィックスで始まる複数のサービスモジュールで構成されています。モジュールとコンテナは 1:1 ではありません — アプリケーション 6 つはそれぞれコンテナを持ち、残りのインフラモジュールは plantpulse-datalake コンテナ 1 つ内で協働します。
| どこにあるか | モジュール |
|---|---|
| 独立コンテナ | plantpulse-server-web · plantpulse-batch-web · plantpulse-warehouse · plantpulse-plugin-opcua-server · plantpulse-plugin-aasx-server · plantpulse-ha |
plantpulse-datalake コンテナ内 | storage · messaging · analytics · timeseries · workflow · cep · data-gateway · sql · monitor · backup |
コンテナ単位の状態はホストから bin/status.sh で、データレイク内のモジュール単位の状態はコンテナ内の status.sh で確認します。以下の «ポート» はそのモジュールが コンテナ内で 開くポートであり、ホストに公開されるのはその一部です → ポート設定情報
コアサービスモジュール
| モジュール | ポート | 説明 |
|---|---|---|
plantpulse-server | 80 / 443 / 7443 | ウェブサーバーおよび管理コンソール、REST API |
plantpulse-cep | 7400 / 7401 | 複合イベント処理エンジン (Esper) |
plantpulse-batch | 9500 | バッチ処理サーバー |
plantpulse-data-gateway | 5500 | データゲートウェイ (HTTP REST ベースのデータ照会) |
plantpulse-sql | 4000 | SQL クエリツール |
plantpulse-monitor | 4950 (HTTPS) | システムモニタリングエージェント。ホストに公開される唯一のヘルスポート |
plantpulse-warehouse | 9600 | データウェアハウス |
plantpulse-plugin-opcua-server | 11004 / 11005 | OPC-UA サーバープラグイン |
plantpulse-plugin-aasx-server | (ホスト非公開) | AASX サーバープラグイン |
plantpulse-ha | 10210 | 冗長化復旧デーモン |
plantpulse-proxy | 80 / 443 / 1883 / 1884 | ユーザー·設備が接する唯一の入口 |
メッセージングモジュール (plantpulse-messaging)
| サービス | ポート | 説明 |
|---|---|---|
| Kafka | 9092 | 分散メッセージストリーミング |
| MQTT | 1883 | IoT 軽量メッセージプロトコル |
| MQTT Enterprise | - | MQTT エンタープライズエディション |
ストレージモジュール (plantpulse-storage)
| サービス | ポート | 説明 |
|---|---|---|
| Cassandra 6.0 | 9042 | 時系列データベース (CQL) |
| PostgreSQL | 5432 | メタデータリレーショナルデータベース |
| Valkey (Redis) | 6379 | インメモリキャッシュ |
| MinIO | 9000 | オブジェクトストレージ (S3 互換) |
| JanusGraph | - | グラフデータベース |
| RustFS / WeedFS | - | 分散ファイルシステム |
分析モジュール (plantpulse-analytics)
| サービス | ポート | 説明 |
|---|---|---|
| Spark Master | 7077 | 分散分析エンジン |
| Spark UI | 4440 | Spark 管理コンソール |
| Kyuubi | 10000 | 分散 SQL ゲートウェイ (JDBC/Thrift) |
| Gravitino | 19001 | データカタログ |
| Hadoop | - | 分散ファイルシステム |
| Hive | - | データウェアハウスクエリエンジン |
時系列モジュール (plantpulse-timeseries)
| サービス | ポート | 説明 |
|---|---|---|
| 時系列エンジン | 7800 | 時系列データ処理エンジン |
| 時系列 UI | 3000 | 時系列データ可視化 UI |
ワークフローモジュール (plantpulse-workflow)
| サービス | ポート | 説明 |
|---|---|---|
| Temporal | 7233 | 分散ワークフローエンジン (Web UI 8233) |
| Kestra | 8380 | ワークフローオーケストレーション / スケジューラ |
ユーティリティモジュール
| モジュール | 説明 |
|---|---|
plantpulse-datalake-cli (pd) | データレイク起動/停止/再起動·設定·ノード管理 CLI |
plantpulse-setup | 初期セットアップツール (モデル、CSV 設定) |
plantpulse-backup | バックアップサービス |
plantpulse-recovery | データ復旧ツール |
plantpulse-exporter | アセットデータエクスポートツール |
plantpulse-migrator | データマイグレーションツール (Spark ベース) |
plantpulse-mirror-maker | データレプリケーションツール |
plantpulse-simulator | データシミュレーター (テスト用) |
plantpulse-api | REST API クライアントライブラリ |
サービス状態確認
ホストから スタック全体の状態を最初に確認します。
cd /opt/kopens/plantpulse-platform-docker/bin
./status.sh # 0 = 정상 / 2 = 비정상
./ops-check.sh # 헬스 + 최근 critical log
インフラモジュールのポート単位の状態は データレイクコンテナ内 で確認します。
./shell.sh
/opt/kopens/plantpulse-platform/plantpulse-datalake-cli/bin/pd status
出力例:
==============================================================================================================
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
データレイク内の status.sh はそのコンテナ内のモジュールのみを確認します。PP_SERVER · PP_BATCH · PP_WAREHOUSE · PP_PLUGIN 項目が STOPPED と表示されたり、まったく表示されなくても障害ではありません — それらのアプリはそれぞれのコンテナで実行されており、判定はホストの bin/status.sh が行います。
環境変数
ホスト側の値は /opt/kopens/plantpulse-platform-docker/bin/env.sh で、コンテナが実際に見る値は compose/docker-compose.yml で調整されます。詳細な関係と優先順位は 環境変数リファレンス に記載されています。以下はコンテナ内で有効な名前です。
| 変数 | 説明 | 例 |
|---|---|---|
PP_SCHEME | スキーマ名 | PP |
PP_MODE | 実行モード | MASTER |
PP_HOST_IP | 内部 IP | 192.168.0.41 |
PP_SERVICE_IP | サービス IP | 192.168.0.41 |
PP_MASTER_IP | マスターノード IP | 192.168.0.41 |
PP_DATA_DIR | データディレクトリ | /data1/pp-data |
PP_TEMP_DIR | テンポラリディレクトリ | /data1/pp-temp |
PP_BACKUP_DIR | バックアップディレクトリ | /data1/pp-backup |
PP_CLUSTER_CORES | クラスター CPU コア数 | 16 |
PP_CLUSTER_MEMORY_BY_CORE | コア当たりメモリ | 2G |
PP_OPTIONS | 追加オプション (JSON) | {"use-infra":true,"use-app":true} |
モニタリング対象
PlantPulse プラットフォームでモニタリングすべき主要対象と項目は以下の通りです。各項目を定期的に確認することで、安定した運用の維持に役立ちます。
| 対象 | モニタリング項目 |
|---|---|
| アプリケーションサーバー | CPU、メモリ、ディスク、スレッド |
| JVM | ヒープメモリ、GC、クラスローディング |
| PostgreSQL | コネクションプール、クエリ性能、ディスク |
| Cassandra | クラスター状態、レイテンシ、コンパクション |
| Redis | メモリ、ヒット率、接続数 |
| エンジン | パイプラインスループット、キュー深度、エラー率 |
| ネットワーク | OPC 接続、WebSocket、レイテンシ |
ウェブコンソールモニタリング
システムモニタリング画面
パス: /monitoring/index
リアルタイムシステム状態をダッシュボード形式で表示します。各指標が下表の「正常範囲」を超える場合、パフォーマンス低下の原因となる可能性があるため確認してください。
| 指標 | 説明 | 正常範囲 |
|---|---|---|
| CPU 使用率 | サーバー CPU 負荷 | < 70% |
| JVM ヒープメモリ | ヒープ使用量/最大 | < 80% |
| アクティブスレッド | 動作中スレッド数 | < 500 |
| MPS (Messages/sec) | 1 秒当たりのメッセージ処理数 | 設定された rate limit 以下 |
| パイプラインキュー | 待機中のメッセージ数 | < 10,000 |
| DB 接続 | アクティブな DB 接続数 | < プール最大値 |
サーバーステータス
パス: /server/status
| 項目 | 説明 |
|---|---|
| サーバー稼働時間 | Uptime |
| エンジン状態 | RUNNING / STOPPED / ERROR |
| 最終起動時刻 | エンジン最終起動日時 |
| バージョン情報 | プラットフォームバージョン |
ログモニタリング
ログはシステムの動作状態を記録するテキストファイルです。問題が発生した場合、ログを確認することで原因の特定に大きく役立ちます。
ホストから — logs.sh
コンテナが 8 個あるため、どのコンテナに問題があるか不明な場合は引数なしで 実行するのが最速です。
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 로 종료)
デフォルトは 最後の N 行 (デフォルト 200) を出力して終了 です。リアルタイムで追跡するには -f を追加してください。
コンテナ内のログファイル
# 웹 서버 — 자기 컨테이너 안에 있습니다
./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
ログをホストに一括コピーするには ./tools/copy-log-to-local.sh を、サポート要求用バンドルは ./doctor.sh を使用します。
ログレベル
| レベル | 説明 |
|---|---|
| INFO | 正常動作情報です |
| WARN | 警告メッセージです (パフォーマンス低下、リトライなどの状況) |
| ERROR | エラーが発生しました (処理失敗、接続エラーなど) |
主要ログパターン
以下のログパターンが表示される場合、対応する処置を実行してください:
| パターン | 意味 |
|---|---|
Engine started successfully | エンジンが正常に起動されました |
Pipeline queue overflow | パイプラインキューが超過しました — 処理速度を確認してください |
Cassandra connection failed | Cassandra 接続に失敗しました — クラスター状態を確認してください |
OPC connection lost | OPC サーバー接続が切断されました — ネットワークおよび OPC サーバーを確認してください |
Rate limit exceeded | 処理率が超過しました — engine.pipeline.ratelimit 値を調整してください |
データベースモニタリング
データベースの状態を定期的にモニタリングすることで、パフォーマンス低下や障害を事前に予防できます。
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 状態コード:
| 状態 | 説明 |
|---|---|
| UN | Up / Normal — 正常状態です |
| DN | Down / Normal — ノードがダウンしている状態です |
| UJ | Up / Joining — クラスターに参加中です |
| UL | Up / Leaving — クラスターから離脱中です |
Redis
# Redis 상태 확인
redis-cli -a 설치-시-변경 INFO
# 메모리 사용량
redis-cli -a 설치-시-변경 INFO memory
# 키 수 확인
redis-cli -a 설치-시-변경 DBSIZE
# 슬로우 로그
redis-cli -a 설치-시-변경 SLOWLOG GET 10
JMX モニタリング
お知らせ: JMX(Java Management Extensions)は Java アプリケーションの内部状態を外部から監視するための技術です。PlantPulse は JMX を通じて 150 個以上の属性を提供しています。
JMX 接続
# 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 - カテゴリ: engine、cache、storage、network、pipeline、cep、scheduler、monitoring など 12 個
主要 JMX 属性
| 属性 | 説明 |
|---|---|
| engine.status | エンジン状態 |
| engine.uptime | 稼働時間 |
| pipeline.queue.size | パイプラインキューサイズ |
| pipeline.mps | 1 秒当たりのメッセージ処理数 |
| cache.tag.count | キャッシュされたタグ数 |
| storage.cassandra.status | Cassandra 接続状態 |
Codahale Metrics
お知らせ: Codahale Metrics はアプリケーションのパフォーマンス指標を収集するライブラリです。PlantPulse では 70 個以上のメトリクスが収集され、
/admin/tool/metricsパスで照会できます。
メトリクスタイプ
| タイプ | 説明 |
|---|---|
| Counter | 累積カウンターです (イベント数、エラー数など) |
| Timer | 処理時間を測定します (平均、p95、p99) |
| Histogram | 値の分布を表示します (キュー深度、バッチサイズ) |
| Gauge | 現在時点の値を表示します (アクティブ接続、メモリ) |
標準ヘルスチェック API
ウェブアプリ / プラグインサービスはプラットフォーム共通仕様のヘルスチェックエンドポイント GET /api/health を提供します。
主要ウェブアプリ(server / batch / cep / sql / data-gateway)において、このエンドポイントは readiness の意味 です —
プロセス(コンテキスト)が生きているだけでは UP を報告せず、内部エンジン / 主要依存関係が正常でトラフィックを受ける準備ができた場合のみ
UP を返します (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 — 準備完了時のみ
200 UP。起動進行中は503 STARTING、起動完了後の依存関係部分障害は503 DEGRADEDで区別報告されます。 - 依存関係ピングなし — checks は各サービスが既に保持する インメモリ状態フラグのみ を読みます (ライブ DB クエリ / ネットワークピング禁止 — ポーリングがデータストアに負荷をかけません)。
- 匿名アクセス — 認証なしで呼び出せます (運用点検 / デプロイ自動検証用)。
- キャッシュなし —
Cache-Control: no-cacheシリーズヘッダが常に含まれます。 - 応答フィールドは
status/service(アーティファクト名) /ts(epoch ms) + readiness 昇格サービスのchecks(サービス別チェック詳細)です。
| サービス | ヘルス URL | 意味 | checks / 備考 |
|---|---|---|---|
| server | http://HOST:80/api/health | readiness | engine — エンジンライフサイクル状態(全段階起動完了 RUNNING の場合のみ UP) |
| batch | http://HOST:9500/api/health | readiness | timer(バッチパイプライン稼働) / redis(InMemory 接続) |
| cep | http://HOST:7400/api/health | readiness | engine(CEP エンジン+コンシューマ+復旧完了) / redis(InMemory 接続) |
| sql | https://HOST:4001/api/health | readiness | database_manager(DB マネージャー初期化完了) — HTTPS で提供 |
| data-gateway | http://HOST:5500/api/health | readiness | database / inmemory / query_log — このパスのみ HTTPS 強制(CONFIDENTIAL)から除外、localhost HTTP プローブ許可 |
| warehouse (s3 サービス) | http://HOST:9600/api/health | readiness | temporal — Temporal ワーカー登録完了。未登録の場合は STARTING + 503 (ウェブサーバーが先に起動し、ワーカーが後続するため、起動直後 503 は正常)。共通 3 フィールド + システム/JVM メトリクス含む |
| plugin — AAS V3 | http://HOST:8090/api/health | liveness | readiness 非昇格 |
| plugin — OPC-UA Browse UI | http://HOST:12780/api/health | liveness | ポートは opc.ua.browser.ui.port 設定 (デフォルト 12780) |
用途は 2 つです。
- 運用点検 — 手動確認、crontab / 外部モニタリングの readiness プローブ
- CI デプロイ自動検証 —
deploy:devジョブがデプロイ後このURL をポーリング(DEPLOY_HEALTH、240秒)して起動を確認します (設定およびデプロイガイド参照)。readiness の意味のため 起動中の 503 は正常 でありポーリングが UP 転換を待ちます。
役割分担:
plantpulse-monitor(:4950)はホスト / JVM / モジュール指標を収集·公開する インフラモニタリングエージェント であり、/api/healthは各ウェブアプリ自身が提供する readiness エンドポイント です。相互置換関係ではなく補完関係です。コンテナ環境では各アプリの readiness を compose の healthcheck が既に判定しているため、運用者は
bin/status.sh1 行で 8 コンテナの判定をまとめて得られます。
ヘルスチェックスクリプト
ヘルスチェックスクリプトを活用することで、プラットフォームの主要サービスが正常に動作しているかを自動で確認できます。
自動ヘルスチェック
以下は主要サービスの状態を自動で点検するスクリプト例です:
#!/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
crontab に登録して定期実行できます:
# 5분마다 헬스체크
*/5 * * * * /opt/scripts/healthcheck.sh >> /var/log/plantpulse-healthcheck.log 2>&1
Grafana モニタリングダッシュボード
プラットフォームモニタリングは Grafana を通じて可視化されます。接続 URL: http://localhost:3000/
お知らせ: Grafana はオープンソースのデータ可視化ツールで、PlantPulse の各種メトリクスをグラフとチャートで表示します。PLANTPULSE フォルダ配下に 5 つのダッシュボードがデフォルトで提供されます。
1. PlantPulse - サーバー
プラットフォームサーバーの全体状態を一目で把握できるコアダッシュボードです。
SUMMARY (サマリ)
| パネル | 種類 | 説明 |
|---|---|---|
| VERSION | Stat | プラットフォームバージョン情報 |
| サーバー起動日 | Stat | エンジン最初の起動日時 |
| CPU 負荷 | Gauge | サーバー CPU 使用率 |
| メモリ使用率 | Gauge | サーバーメモリ使用率 |
| 1 秒当たり受信件数 | Stat | 1 秒当たりのメッセージ受信数 (MPS) |
| 全体保存件数 | Stat | 累積保存データ件数 |
| ネットワーク遅延 | Stat | メッセージ受信ネットワーク遅延(ms) |
| 診断 | Stat | 診断イベント状態 |
SERVER-METRICS (サーバーメトリクス)
| パネル | 種類 | 説明 |
|---|---|---|
| CACHE / MQTT / KAFKA / WEBSOCKET / DATABASE / TSE | Stat | 各サービス接続状態 |
| サーバー CPU 使用率 | Graph | CPU 使用率の時系列推移 |
| サーバーメモリ使用量 | Graph | メモリ使用量の時系列推移 |
| JAVA ヒープ使用量 | Graph | JVM ヒープメモリ使用量 |
| データ DISK R/W 状況 | Graph | ディスク読み書きトラフィック |
| プロトコル別メッセージ受信件数 | Graph | OPC、MQTT、Kafka などプロトコル別受信数 |
| メッセージ受信ネットワーク遅延 | Graph | ネットワーク遅延の時系列 |
| 全体メッセージ受信量 | Graph | 累積メッセージ受信量 |
| メッセージ受信件数 BY 1SEC | Graph | 1 秒当たりのメッセージ受信推移 |
| パイプラインウェイティングキュー | Graph | パイプラインキュー深度 |
| パイプラインオフロードキューサイズ | Graph | RocksDB オフロードキュー |
| パイプラインバリデーション失敗件 | Graph | 有効性検証失敗件数 |
| パイプラインワーカー処理時間 | Graph | ワーカー処理所要時間 |
| タイムアウトメッセージバックアップ処理 | Graph | タイムアウトメッセージバックアップ件数 |
| パイプラインコレクター | Graph | コレクター動作状況 |
| ストレージ保存バッファ | Graph | 保存バッファサイズ |
| ストリーミング処理件数 | Graph | WebSocket ストリーミング処理量 |
| ストリーミング動作スレッド件数 | Graph | ストリーミングアクティブスレッド |
| ストリーミングウェイティングキュー件数 | Graph | ストリーミングキュー待機件数 |
| ストレージ保存件数 | Graph | DB 保存件数 |
| ストレージバッチ件数 | Graph | バッチ保存件数 |
| ストレージワーカー件数 | Graph | 保存ワーカー数 |
| DDS 処理件数 | Graph | Kafka DDS 配分件数 |
| 非同期スレッドアクティブカウント | Graph | 非同期実行アクティブスレッド |
| 非同期スレッドプールサイズ | Graph | スレッドプールサイズ |
| 診断エラー件数 | Graph | 診断エラー発生推移 |
| ロギング例外 | Graph | 例外ログ発生推移 |
| GC 時間 | Graph | JVM GC 所要時間 |
| DISK 使用量 | Graph | ディスク使用量推移 |
2. PlantPulse - データレイクハウス
データベースおよびストレージ層のパフォーマンスと状態をモニタリングするダッシュボードです。
DATA-GATEWAY (データゲートウェイ)
| パネル | 説明 |
|---|---|
| TOTAL_QUERY | 全体クエリ件数 |
| QPS | 1 秒当たりのクエリ処理量 (Gauge) |
| QUERY_LATENCY | クエリ遅延の時系列 |
| QUERY_LATENCY_MAX | 最大クエリ遅延 |
| SUCCESS / ERROR | 成功およびエラー件数 |
CACHE (REDIS)
| パネル | 説明 |
|---|---|
| CLIENTS | Redis クライアント接続数 |
| ALLOCATOR | メモリアロケーター状態 |
| KEY_COUNT | 保存キー数 |
| FRAGMENTATION | メモリ断片化率 |
CEP (ESPER)
| パネル | 説明 |
|---|---|
| JAVA_HEAP_USED | CEP エンジンヒープメモリ |
| EVENT_INGESTION_RATE | イベントインジェスト比率 |
| EQL_CPU_TIME | EPL クエリ CPU 時間 |
| EQL_MAP_COUNT | EPL マップカウント |
| EVENT_INGEST_DIFF | イベントインジェスト差分 |
| EVENT_DELAY_HISTOGRAM | イベント遅延分布 |
| CEP_STATEMENT_MATCH_RATE | ステートメントマッチング比率 |
| EQL_STATEMENT_OUTPUT_RATE | ステートメント出力比率 |
META-STORE (POSTGRES)
| パネル | 説明 |
|---|---|
| TOTAL_CONNECTIONS | 全体接続数 |
| QUERY_LATENCY | クエリ遅延 |
| TOTAL_READS_HITS | 読取ヒット件数 |
| TOTAL_DB_SIZE | 全体 DB サイズ |
EVENT-STORE (CASSANDRA)
| パネル | 説明 |
|---|---|
| NATIVE_CLIENT | ネイティブクライアント接続 |
| LATENCY | 読取/書込遅延 |
| READ_PER_SECONDS / WRITE_PER_SECONDS | 1 秒当たりの読取/書込 |
| HEAP / DIRECT_MAPPED_MEMORY | JVM メモリ |
| CACHE / CACHE_HIT_RATE | キャッシュおよびヒット率 |
| TOTAL_DATA_SIZE | 全体データサイズ |
| MEMTABLE | Memtable 状態 |
| COMPACTION / COMPACTION_BYTES | コンパクション状況 |
| TABLE_COMPACTIONS / TABLE_SSTABLE_COUNT | テーブル別コンパクション及び SSTable |
| BLOOM_FILTER_FALSE_RATIO | ブルームフィルター誤検出率 |
| TABLE_READ_LATENCY / TABLE_RANGE_LATENCY / TABLE_WRITE_LATENCY | テーブル別遅延 |
| PENDINGS / FLUSH / THREAD_POOL | 待機、フラッシュ、スレッドプール |
| STATEMENT / COMMITLOG / EXCEPTION / MUTATION | 内部メトリクス |
| COMPRESSION / TOTAL_SSTABLE | 圧縮および SSTable 状況 |
TIMESERIES-STORE (TSE)
| パネル | 説明 |
|---|---|
| TSE_MEMORY | 時系列エンジンメモリ |
| TSE_HTTP_TIME | HTTP 応答時間 |
| TSE_DATASTORE | データストア状態 |
| TSE_QUEUE_PROCESS_COUNT | キュー処理件数 |
ANALYTICS-STORE (SPARK)
| パネル | 説明 |
|---|---|
| MEMORY_USED | Spark メモリ使用量 |
| CONNECTION | 接続数 |
| OPERATION | 操作数 |
| REQUEST_RATE | リクエスト比率 |
3. PlantPulse - エッジゲートウェイ
エッジデバイスの状態、PLC 接続、データ受信状況をモニタリングするダッシュボードです。
サマリパネル
| パネル | 説明 |
|---|---|
| 全体エッジゲートウェイ | 登録されたエッジゲートウェイ数 |
| 電源 (正常/異常) | 電源状態正常および異常件数 |
| PLC | PLC 接続数 |
| 全体データ容量 | 収集された全体データサイズ |
| 1 秒当たり受信合計件数 | 全体エッジの 1 秒当たり受信合計 (Gauge) |
| データ受信最大遅延 | 最大受信遅延(ms) (Gauge) |
| ログ | ログ状態 |
PLC STATUS (PLC 状態)
| パネル | 説明 |
|---|---|
| PLC ピング失敗件数 | PLC 接続ピング失敗推移 |
| PLC 接続済み / 接続切断 | PLC 接続状態推移 |
| PLC 値読取成功件数 | データ読取成功推移 |
| PLC データ読取失敗件数 | データ読取失敗推移 |
| システムエラー件数トレンド | システムエラー推移 |
DATA POINT (データポイント)
| パネル | 説明 |
|---|---|
| 1 秒当たり全体送信件数 SUM(MPS) | 全体エッジ 1 秒当たり送信合計 |
| ポイント送信件 | ポイント送信件数推移 |
| 送信ポイントバイト | 送信データバイト |
| 受信最低/平均/最大遅延 | 受信遅延分布 |
EDGE H/W (エッジハードウェア)
| パネル | 説明 |
|---|---|
| CPU | エッジデバイス CPU 使用率 |
| メモリ | メモリ使用量 |
| ディスク (SSD) | ディスク使用量 |
| ネットワークアップロード/ダウンロード | ネットワークトラフィック |
| 温度 | デバイス温度 |
4. PlantPulse - 統計
日別データ増加量、システムリソースピーク値などの長期統計を追跡するダッシュボードです。システムの長期的な成長トレンドを把握するのに有用です。
| パネル | 説明 |
|---|---|
| 全体データ容量 | 全体保存データサイズ |
| 日別データ全体容量 | 日別データ容量推移 |
| 日別メッセージ送信量 | 日別メッセージ送信件数 |
| 日別データ増加量 | 日別データ増加推移 |
| メッセージ受信件数 | メッセージ受信件数推移 |
| ネットワーク遅延平均/最大値 | ネットワーク遅延統計 |
| SSTABLE 増加量 | Cassandra SSTable 増加推移 |
| 最大 DB クライアント接続 | DB 接続最大値 |
| 非同期スレッド最大実行件数 | 非同期処理ピーク |
| JAVA 最大 GC 時間 | GC 最大所要時間 |
| CQL 準備最大件数 | CQL Prepared Statement 最大値 |
| 最大パーティションサイズ | Cassandra パーティション最大サイズ |
| JAVA ヒープ最小余裕サイズ | JVM ヒープ余裕最小値 |
| 非同期スレッド最大待機件数 | 非同期キュー最大待機 |
| 最大メモリバッファサイズ | メモリバッファ最大値 |
| バックアップメッセージ処理件数 | バックアップ処理件数 |
5. PlantPulse - メッセージング
MQTT、Kafka、WebSocket メッセージブローカーの状態をモニタリングするダッシュボードです。
SUMMARY (サマリ)
| パネル | 説明 |
|---|---|
| MQTT / KAFKA / WEBSOCKET | 各ブローカー接続状態 |
| CPU | サーバー CPU 使用率 |
| JAVA_HEAP | JVM ヒープ使用量 |
| NETWORK_READ_BYTES | ネットワーク受信バイト |
MQTT
| パネル | 説明 |
|---|---|
| CPU_USED | MQTT ブローカー CPU (Gauge) |
| MEMORY_USED | メモリ使用量 |
| CONNECTIONS | クライアント接続数 |
| NETWORK IN/OUT | ネットワーク入出力 |
| GC_COUNT / GC_TIME_MS | GC 回数および所要時間 |
| THREAD_COUNT | スレッド数 |
| INCOMMING / OUTGOING | 受信および送信メッセージ数 |
| RETAINED_COUNT | Retained メッセージ数 |
| SUBSCRIPTIONS | サブスクリプション数 |
| TOTAL_MESSAGE | 全体メッセージ数 |
KAFKA
| パネル | 説明 |
|---|---|
| CPU_USED | Kafka ブローカー CPU (Gauge) |
| MEMORY_USED | メモリ使用量 |
| GLOBAL_TOPIC | グローバルトピック状況 |
| NETWORK IN/OUT | ネットワーク入出力 |
| TOPIC_BYTE_IN/OUT_PER_SEC | トピック別 1 秒当たりバイト |
| MESSAGE_PER_SEC_MEAN_RATE / 1M_RATE | 1 秒当たりのメッセージ処理量 |
| NETWORK_REQUEST_FETCH | Fetch リクエスト件数 |
| OFFLINE_PARTITION_COUNT | オフラインパーティション数 |
| ACTIVE_CONTROLLER_COUNT | アクティブコントローラー数 |
WEBSOCKET
| パネル | 説明 |
|---|---|
| CPU_USED | WebSocket サーバー CPU (Gauge) |
| MEMORY_USED | メモリ使用量 |
| CONNECTION_COUNT | WebSocket 接続数 |
| ENQUEUE / DEQUEUE | キュー入出力件数 |
モニタリングツール連携
ELK Stack
コンテナログを Filebeat → Logstash → Elasticsearch → Kibana パイプラインで収集し、ログ検索および分析環境を構築できます。大規模運用環境でログを効率的に管理したい場合は、導入検討をお勧めします。コンテナ標準出力は docker ロギングドライバーで、コンテナ内のファイルログはホストマウント(PLANTPULSE_LOG_DIR)で収集します。