ポートおよびサービス管理(オペレーターガイド)
このページでは、稼働中の PlantPulse のポート状態を点検し、問題を解決する手順を案内します。全ポートのカタログは インストールガイド - ポート構成情報 ページを参照してください。
日常点検チェックリスト
1. サービス状態の点検
status.sh — スタック全体の状態(ホスト)
まずホスト上でスタック状態を確認します。サービス一覧・コンテナ状態・health・ボリュームを要約し、終了コードが契約です — 0 が正常、2 が異常で、モニタリング自動化にそのまま利用できます。
cd /opt/kopens/plantpulse-platform-docker/bin
./status.sh
plantpulse-certs も常時動作し (healthy) が正常です。証明書を一度焼き込めば、失効を継続的に監視します。
モジュール別ポート占有(データレイクコンテナ内)
インフラコンポーネントのポート占有 / PID / CPU / メモリ(PSS)を確認するには、データレイクコンテナ内の status.sh を使用します。
cd /opt/kopens/plantpulse-platform-docker/bin
./shell.sh
/opt/kopens/plantpulse-platform/plantpulse-datalake-cli/bin/pd status
出力例:
==============================================================================================================
PLANTPULSE PLATFORM - ALL SERVICE STATUS
==============================================================================================================
<SYSTEM RESOURCE OVERVIEW>
CPU LOAD (AVG) : 12.3% (48 cores)
MEMORY USAGE : 65.2% (123.1G / 188.7G)
DATA DISK USAGE : 45.8% (2.2T / 4.8T)
<SERVICE STATUS BY PORT>
SERVICE | PORT | STATUS | PID | CPU | MEMORY (PSS)
PP_MESSAGING[KAFKA] | 9092 | RUNNING | 12345 | 2.3% | 8.5G ( 4.5%)
PP_STORAGE[CASSANDRA] | 9042 | RUNNING | 12567 | 5.1% | 16.2G ( 8.6%)
PP_SERVER | 80 | RUNNING | 12890 | 1.2% | 4.8G ( 2.5%)
...
<SERVICE SUMMARY>
TOTAL SERVICES : 25 RUNNING / 0 STOPPED
TOTAL CPU (SUM) : 42.3%
TOTAL MEMORY (PSS) : 78.5% (148.0G)
ops-check.sh — ヘルス + 直近の critical ログ
./ops-check.sh
以下を自動実行します。
- HTTPS ヘルスエンドポイント(
https://127.0.0.1:4950/api/health)の応答確認 - 直近の critical / fatal ログメッセージの収集
- モジュール別応答時間の測定
外部ヘルスチェック(モニタリングシステム連携)
# 호스트 / 외부에서 — 4950 이 유일하게 publish 되는 헬스 포트입니다
curl -kfsS https://[HOST]:4950/api/health | jq
# 컨테이너 안에서 — 어떤 구성에서도 동작합니다
docker exec plantpulse-datalake curl -kfsS https://127.0.0.1:4950/api/health | jq
コンソールとヘルス API は両方のポートでサービスされます — 4950(HTTPS) と 4949(平文 HTTP)。同じコンソール・同じ API で、スキームのみ異なります。4949 はもう 4950 へリダイレクトしません。
4949 は平文です — ログインパスワードとセッションクッキーがそのまま流れます。信頼できないネットワークでは 4950 を使用してください。4949 は、自己署名証明書の警告が実際にオペレーターを停止させるボックスのための選択肢です。
2. ポート別クイック診断
| ポート | モジュール | クイック点検 |
|---|---|---|
| 80 / 443 | server | curl -fsS http://[HOST]/api/v5/ping |
| 9042 | Aster TSDB | pd node status クラスタ状態 |
| 5432 | PostgreSQL | pd node psql 接続後 SELECT 1; |
| 6379 | Valkey | redis-cli -a $PP_REDIS_PASSWORD ping |
| 9000 | RustFS | pd status storage — RustFS にはヘルスエンドポイントがありません |
| 9092 | Kafka | kafka-broker-api-versions.sh --bootstrap-server [HOST]:9092 |
| 1883 | MQTT | mosquitto_pub -h [HOST] -p 1883 -u mq -P $PP_MQ_PASSWORD -t test -m hi |
| 7400 | CEP | curl -fsS -H "X-API-Key: $PP_CEP_API_KEY" http://[HOST]:7400/api/v1/status |
| 5500 | Data Gateway | curl -fsS http://[HOST]:5500/api/health (匿名 readiness — UP のときのみ 200) |
| 7800 | TSE | curl -fsS http://[HOST]:7800/api/health |
| 7077 | Spark Master | curl -fsS http://[HOST]:4440/json/ | jq .workers |
| 10000 | Kyuubi | beeline -u "jdbc:hive2://[HOST]:10000" -e "SELECT 1" |
| 19001 | Gravitino | curl -fsS -u gravitino:$PP_GRAVITINO_PASSWORD http://[HOST]:19001/api/metalakes |
| 7233 | Temporal | temporal --address [HOST]:7233 namespace list |
| 8380 | Kestra | curl -fsS -u admin@plantpulse.io:$PP_KESTRA_ADMIN_PASSWORD http://[HOST]:8380/api/v1/flows |
| 11004 | OPC-UA | UaExpert などで opc.tcp://[HOST]:11004 接続 |
| 10210 | HA デーモン | curl -fsS http://[HOST]:10210/api/health |
| 4950 | モニター | curl -kfsS https://[HOST]:4950/api/health | jq .status |
80 · 443 · 1883 · 1884 は plantpulse-proxy が、11004 · 11005 は OPC-UA プラグインが、10210 は HA コンテナが、その他は plantpulse-datalake がホストに publish します。アプリ4つ(server-web · batch-web · warehouse · aasx)はホストポートを開かないため、./status.sh · ./logs.sh <컨테이너> で確認します → ポート構成情報
pd node status · pd node psql のようなツールはデータレイクコンテナ内にあります(./shell.sh で進入)。
3. ポート競合の診断
占有プロセスの確認
# 특정 포트
ss -tlnp | grep ":<port> "
sudo lsof -i :<port>
# 일괄 (PlantPulse 모든 핵심 포트)
ss -tlnp | grep -E ':(80|443|1883|1884|3000|4000|4950|5432|5500|6379|7077|7233|7400|7800|8233|8380|9000|9042|9092|10000|10210|11004|19001)\s'
競合の解決
| 状況 | 対処 |
|---|---|
| 外部サービスがポートを占有 | 外部サービスを別ポートへ移動 |
| 以前の PlantPulse プロセスが残存 | ホストにネイティブで残っている場合 pkill -ef plantpulse。コンテナ側なら bin/down.sh 後 docker ps -a で残存確認 |
| デフォルトポートが会社方針上使用不可 | ホストに公開されるポートは compose/docker-compose.yml の ports: が決定します。マッピング変更後 bin/restart.sh |
4. ファイアウォール運用
現在の許可ルールの照会
# RHEL/Rocky/Oracle (firewalld)
sudo firewall-cmd --list-ports
sudo firewall-cmd --list-rich-rules
sudo firewall-cmd --list-services
# Ubuntu (ufw)
sudo ufw status numbered
sudo ufw status verbose
運用中の新規ポート許可
# firewalld
sudo firewall-cmd --permanent --add-port=<port>/tcp
sudo firewall-cmd --reload
# ufw
sudo ufw allow <port>/tcp
新規 source IP のみ許可
# firewalld rich rule
sudo firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=192.168.10.0/24 port port=9042 protocol=tcp accept"
sudo firewall-cmd --reload
# ufw
sudo ufw allow from 192.168.10.0/24 to any port 9042
5. JMX ポート運用
JMX ポート(6199~7899) は監視 / モニタリングノード IP のみ許可してください。JConsole / VisualVM で接続する場合:
# SSH 터널로 안전하게 접속 (권장)
ssh -L 7099:127.0.0.1:7099 root@[HOST]
# 로컬에서
jconsole 127.0.0.1:7099
詳細な JMX ポートマッピングは インストール: ポート構成情報 - JMX を参照。
6. 頻発する問題
| 症状 | 原因 | 一次対処 |
|---|---|---|
| 一部コンテナが異常 | 依存コンテナ停止 / リソース不足 | ホストで ./status.sh → アプリなら docker compose … restart <서비스>、インフラならコンテナ内で restart-<module>.sh |
| ポートは LISTEN だが health 失敗 | 起動未完了 / バックエンド依存未準備 | ./stack-verify-boot.sh で準備状況を判定。クリーンインストールは安定まで 15〜18分かかります |
| 全体ダウン | スタックが停止 | ホストで ./up.sh (準備完了まで待機、0 = 利用可能) |
address already in use | 外部プロセスが占有 | 上記 ポート競合診断 手順 |
| 外部接続不可 (内部は可) | ホストファイアウォールまたはクラウド SG | firewall-cmd --list-ports およびクラウド SG の点検 |
TLS ハンドシェイク失敗 (TimeoutException でのみ表示) | 証明書 SAN 不一致 | PP_TLS_SAN_DNS / PP_TLS_SAN_IPS を点検。証明書は plantpulse-certs が焼き込みます → セキュリティ設定 |
| リアルタイム更新が途切れる | ファイアウォール・プロキシの idle timeout | 前面プロキシの proxy_read_timeout を引き上げ。リアルタイムプッシュは 443 経由で出ます |
7. 運用自動化
ヘルスチェック cron
# /etc/cron.d/plantpulse-health (호스트에서)
*/5 * * * * root /opt/kopens/plantpulse-platform-docker/bin/ops-check.sh >> /var/log/plantpulse-ops.log 2>&1
終了コードで判定するには status.sh の方が適しています — 0 = 正常 / 2 = 異常 が契約です。
*/5 * * * * root /opt/kopens/plantpulse-platform-docker/bin/status.sh >/dev/null 2>&1 || logger -t plantpulse "status.sh reported unhealthy"
Prometheus / Grafana 連携
管理コンソール API(plantpulse-datalake-admin-api) が公開する /metrics エンドポイントを
Prometheus がスクレイプするように構成します。
# prometheus.yml
scrape_configs:
- job_name: plantpulse
scheme: https
tls_config:
insecure_skip_verify: true # 자체 서명 CA 를 쓰는 경우
static_configs:
- targets: ['[HOST]:4950']
4949 でも同じ API が取得できますが平文です。プライベートネットワーク内で証明書検証が負担なら 4949 を、それ以外は 4950 を使用してください。
4950/metrics が提供するのはコンテナ・ポート・ヘルスといったスタック自身の状態です。
設備から上がった値やシステム指標を PromQL で参照したい場合は、場所が異なります。
| 参照したいもの | どこへ |
|---|---|
| スタックが生きているか (コンテナ・ポート) | ここ — 4950/metrics |
| システム指標を PromQL で (JMX・エッジカウンタ) | Prometheus 連携 — TSE の互換アダプタ |
| システム指標をダッシュボードで | PlantPulse Dashboard でのダッシュボード作成 — バンドル PlantPulse Dashboard(3000) |
| 設備センサー値 | 時系列データベース — CQL |
関連ドキュメント
- インストール: ポート構成情報 — 全ポートカタログ
- モニタリング — Prometheus / PlantPulse Dashboard / 通知
- トラブルシューティング
- 管理コンソール —
/metricsを提供する場所 - モジュール: startup