メインコンテンツまでスキップ

プロパティリファレンス

この文書は配布される実物設定テンプレート(*.properties)から再生成される (2026-07-28) — テンプレートの現在の場所は plantpulse-datalake-cli/config/templates で、ホストの /etc/kopens/conf がその場所へバインドマウントされる 配布パスマッピングの正本は plantpulse-startup/src/plantpulse/startup/config/ConfigTemplates.java、 ロード優先順位の正本は plantpulse-core/src/plantpulse/core/engine/utils/PropertiesUtils.java である。

キーを追加/削除/改名した場合は この文書ではなくテンプレートが正本である。文書を手で埋めず、テンプレートから再抽出せよ。 各表の「デフォルト値」はテンプレートに記載されたとおりであり、${PP_XXX}configure.shenv.sh 値に置換する箇所である。

設定3段モデル

段階位置変更方法
グローバル設定plantpulse-startup/env.sh直接編集後 ./configure.sh → 該当モジュール再起動
サイトオーバーライドplantpulse-startup/env.local.shenv.sh は全部 ${PP_VAR:-default} 形式なので すでに export された値が勝つ
モジュール設定各モジュールの config/直接編集可能だが次回 configure.sh 実行時に 上書きされる

推奨: 運用環境では env.sh(または env.local.sh)のみ編集し configure.sh が全モジュール設定を生成するようにせよ。

env.sh 変更の標準手順

cd /opt/kopens/plantpulse-platform/plantpulse-datalake-cli/bin

vi env.sh # 1. 편집
./env-validate.sh # 2. 검증 (선택)
./configure.sh # 3. 템플릿 치환 + 각 모듈 config/ 로 배포
./restart.sh # 4. 재시작 (또는 ./restart-<module>.sh)
./status.sh # 5. 확인

configure.sh設定ファイルを再レンダリングするだけでサービスを再起動しない。 再起動するまでは新しい設定はディスク上にのみあり、旧プロセスは生きている状態である。

設定ファイルのロード優先順位

Webアプリケーション(server / batch / cep / sql / data-gateway)は次の順序で設定ファイルを探す。実装は PropertiesUtils.readExternalFirst() である。

  1. -Dpp.conf.dir システムプロパティで指定したディレクトリ (定数 PropertiesUtils.CONF_DIR_SYSTEM_PROPERTY = "pp.conf.dir")
  2. ${catalina.base}/../config — モジュールの config/ ディレクトリ
  3. Webアプリのクラスパス (WAR に含まれるデフォルト値) — fallback

外部ファイルは UTF-8 で読む。外部設定が正常にロードされると起動ログに以下が出力される。

Properties loaded from external conf: <absolute-path>

外部ファイルの読み込みに失敗するとerrorログを残し、クラスパスへfallbackする。

ロギング設定(log4j2.xml)も同じチェーンで外部化されている(自己シーディング — 外部ファイルがなければWARデフォルト値をモジュールの config/log4j2.xml に1回コピー後使用)。適用時に起動ログに Logging reconfigured from external conf: <absolute-path> が出力される。ログレベルの変更はモジュールの config/log4j2.xml 修正後の再起動で適用され、WAR再デプロイにも保持される。詳細は設定及び配布ガイド参照。

注意: Webアプリ内部のファイル(server/webapps/ROOT/WEB-INF/classes/ など)は直接修正しないこと — WAR再デプロイ時に消える。

${ENV:기본값} 置換は2回起こる

テンプレートの ${PP_XXX} / ${PP_XXX:기본값} 表記は 2つの時点で解釈される。

時点主体動作
デプロイ時configure.shTemplateProcessor.resolvePlaceholdersenv.sh に置換。順序は replacements map → 環境変数 → :기본값 → 原本維持。入れ子placeholderは未サポート
ランタイムPropertiesUtils.resolveEnvPlaceholdersロードしたPropertiesの すべての値に対して ${ENV_VAR[:default]} を再解釈

つまりデプロイ後に残っている ${...} もプロセスの環境変数で埋められうる。Docker -e VAR=... の注入がテンプレートデフォルト値より優先される理由である。

env.sh にない PP_* 変数 (テンプレートデフォルト値がそのまま適用される)

以下の変数はテンプレートが ${PP_XXX:기본값} として参照しているが、env.shexport しない。 したがって別途の注入がなければ常にテンプレートデフォルト値が使われる。

PP_STORAGE_PASSWORD · PP_METASTORE_PASSWORD · PP_EXTERNAL_DB_PASSWORD · PP_MAIL_SMTP_HOST · PP_MAIL_SMTP_PORT · PP_MAIL_SMTP_AUTH · PP_MAIL_SMTP_USER · PP_MAIL_SMTP_PASSWORD · PP_MAIL_SMTP_STARTTLS · PP_DIAGNOSTIC_EMAIL · PP_AI_OPENAI_CHAT_PATH · PP_AI_OPENAI_RESPONSES_PATH · PP_AI_MCP_ENABLED · PP_AI_MCP_ALLOWED_ORIGINS · PP_AI_CHAT_ENABLED

PP_MAIL_SMTP_*意図的にexportしない。 env.sh のコメントが示すとおり、exportされた環境変数がテンプレートデフォルト値(Brevoリレー SSOT)を上書きし、SMTPログイン組み合わせが静かに壊れた事故があった(2026-07-22、stale 25/no-auth 値がBrevo 587/auth値を覆い隠した)。サイト別オーバーライドは env.local.sh に置く。

サーバー管理設定5種

ConfigTemplates.SERVER_CONFIGS 配列が定義する、plantpulse-server/config/ でデプロイされる設定ファイルは 5個である。

#テンプレート配布パス
1plantpulse-engine.properties/plantpulse-server/config/plantpulse-engine.properties
2plantpulse-storage.properties/plantpulse-server/config/plantpulse-storage.properties
3plantpulse-mq.properties/plantpulse-server/config/plantpulse-mq.properties
4plantpulse-mail.properties/plantpulse-server/config/plantpulse-mail.properties
5plantpulse-ai.properties/plantpulse-server/config/plantpulse-ai.properties

このうち1~4は PropertiesLoader.load() が一括で読み込み(engine/mail/mq/storage)、タイプドコンフィグBean EngineConfig · StorageConfig · MqConfig を再構成する。5(plantpulse-ai.properties)は AIConfig が同じ外部チェーンで別途読み込む。

plantpulse-startup/sh/server-managed-webapp-files.list は現在 空である(コメントのみ)。2026-06 の設定外部化完了により、WAR内部にサーバー管理設定が残っていないためである。

application.properties (削除済み)

application.properties は2026.06に削除された。このファイルを読むコードがなく(全リポジトリ使用箇所0件)、既存の項目は次に移管された。

  • テーマ / ホームページなどコンソール動作設定 → コンソール システム > 設定管理 (PostgreSQL mm_config テーブル)
  • alarm.duplicate.check.minutesplantpulse-engine.properties 系統 (EngineConfig が読む)

plantpulse-engine.properties

パス: plantpulse-server/config/plantpulse-engine.properties · テンプレート: template/plantpulse-engine.properties

データ処理エンジンのコア動作を制御する。

非同期 / パイプライン

プロパティデフォルト値置換説明 (テンプレートコメント)
engine.async.parallelism256Async worker pool parallelism (total cores ~= 256)
engine.pipeline.threads36パイプラインスレッド数
engine.pipeline.ratelimit40000パイプライン秒間処理上限 (rate limit)
engine.pipeline.queue.size1200000パイプラインキューサイズ (バックプレッシャー限界)
engine.pipeline.queue.o3.delay50順序が乱れた(out-of-order)データの許容遅延 (ms)
engine.pipeline.task.modeSINGLEタスク実行モード (SINGLE / PARALLEL)

NTP

プロパティデフォルト値置換説明
engine.ntpdate.server.ip127.0.0.1NTPサーバーIP
engine.ntpdate.syncfalseブート時にNTP同期を実行するか

ストリーム / CEP

プロパティデフォルト値置換説明
engine.stream.processorDIRECTストリーム処理モード (DIRECT/BUFFERED)
engine.cep.server.ip127.0.0.1${PP_CEP_HOST:127.0.0.1}CEPサーバーIP
engine.cep.server.port7400${PP_CEP_CONNECT_PORT:7400}CEPサーバーポート (protocolに自動整列: http→7400, https→7401)
engine.cep.server.protocolhttp${PP_CEP_PROTOCOL:http}CEPプロトコル。内部通信デフォルトはhttp、分散/コンテナはhttps
engine.cep.server.api.key(なし)${PP_CEP_API_KEY}CEPClient X-API-Key ヘッダー用。CEPサーバー cep.api.key と一致すべき

ストリーミングメッセージ配信

プロパティデフォルト値置換説明
engine.streaming.messaging.warning.ms5000メッセージ配信遅延警告 (ms)
engine.streaming.messaging.timeout.ms10000メッセージ配信タイムアウト (ms)
engine.streaming.messaging.timeout.store.typeFILE_QUEUEタイムアウトメッセージの保存方式 (FILE_QUEUE/MEMORY)
engine.streaming.messaging.timeout.recovery.typeDBタイムアウトメッセージ復旧ソース (DB/FILE)

ジョブワーカースレッド

プロパティデフォルト値置換説明
engine.job.thread.asset8アセットジョブスレッド数
engine.job.thread.point8ポイントジョブスレッド数

DDS

プロパティデフォルト値置換説明
engine.dds.enabledtrueDDSグローバル有効化
engine.dds.data.tag.enabledtrueタグデータDDS発行
engine.dds.data.asset.enabledtrueアセットデータDDS発行

異常検知 / データフロー

プロパティデフォルト値置換説明
engine.data.anomaly.enabledfalse異常検知有効化 (外部サービス連携)
engine.data.anomaly.urlhttps://127.0.0.1:8970異常検知サービスURL
engine.dataflow.classplantpulse.core.engine.pipeline.dataflow.BaseDataFlowデータフロー実装クラス
engine.dataflow.server-timestamp.overridefalseサーバータイムスタンプ強制有無 (true: 収集時刻、false: 原本)
engine.dataflow.negative-timestamp.overridetrue負のタイムスタンプ補正有無
engine.factory.model.updater.classplantpulse.core.engine.model.impl.DefaultFactoryMetaModelUpdaterファクトリーメタモデルアップデーター
engine.event.handler.classplantpulse.core.engine.event.DefaultEventHanlderイベントハンドラー実装 (クラス名誤記 Hanlder は実際のクラス名そのまま)
engine.javagc.enabledfalse明示的な System.gc() 呼び出しの許可有無

Flowエンジン

プロパティデフォルト値置換説明
flow.debug.execution.logfalseノード実行INFOログ。デバッグセッションのみtrue
flow.stats.prune.interval.ms86400000カウンタークリーンアップ実行周期 (ms, 24時間)。Cassandraカウンターテーブルは default_time_to_live を使えないためアプリケーションレベルで整理
flow.stats.prune.hourly.days30tm_flow_stats_hourlyhour_bucket 保存日数
flow.stats.prune.daily.days90tm_flow_stats_dailyday_bucket 保存日数
flow.health.check.interval.ms600000Flowヘルスチェック周期 (ms, 10分)。現在時刻バケットのerrors > 0ならERROR、そうでなければNORMAL (KST基準)
flow.webhook.api.keydev-webhook-19ba7a54-1132-49f2-967e-3c6f5cd989a0${PP_FLOW_WEBHOOK_API_KEY:...}Flowエンジン外部Webhook認証

Flowヘルスチェックが使うCassandraテーブル: tm_flow_health_status(flow_id, hour_bucket — 現在時刻累積器)、tm_flow_health_status_10m(flow_id, min10_bucket — 10分単位時系列)。

エッジヘルスチェック

プロパティデフォルト値置換説明
edge.health.check.interval.ms600000エッジヘルスチェック周期 (ms, 10分)

判定ソースはCassandra tm_edge_status payloadの _ON / _NORMAL フラグである。RT REST呼び出しがないため負荷が0で1秒以内に終わる。テーブルは tm_edge_health_status(edge_id, hour_bucket)、tm_edge_health_status_10m(edge_id, min10_bucket)。

認証 / セキュリティ

プロパティデフォルト値置換説明
api.key(なし)${PP_API_KEY}プラットフォーム内部APIキー (サーバー ↔ エッジエージェント認証)
engine.api.v5.auth.bruteforce.enabledtrueV5 API認証ブルートフォース防御
engine.api.v5.auth.bruteforce.ip_limit30IPあたりの試行制限
engine.api.v5.auth.bruteforce.user_limit10ユーザーあたりの試行制限
engine.api.v5.auth.bruteforce.window.seconds60カウントウィンドウ (秒)
engine.api.v5.trusted_proxies(空値)信頼プロキシIPホワイトリスト。設定時のみ remoteAddr がこのリストにあるとき X-Forwarded-For の最初のIPをクライアントIPとして使用。空なら getRemoteAddr() のみ使用(fail-safe)
engine.session.bruteforce.enabledtrue/login/login ブラウザセッションブルートフォース防御
engine.session.bruteforce.ip_limit30IPあたりの試行制限
engine.session.bruteforce.user_limit10ユーザーあたりの試行制限
engine.session.bruteforce.window.seconds300カウントウィンドウ (秒)

セッションブルートフォースカウンターはCaffeineインメモリである — マルチノード共有(Redis)は未実装。

APIトークン

プロパティデフォルト値置換説明
engine.api.token.cleanup.enabledtrue期限切れ(expires_at < now)/回収(revoked_at IS NOT NULL)トークン整理
engine.api.token.cleanup.retention_days30この期間経過後 mm_token でhard delete。毎24時間1回(起動60秒後に初回実行)
engine.api.token.default_ttl_days90新規トークン発行時の デフォルト 有効期限(日)。0 = 永久トークン。発行リクエストが ttl_days を渡すとその値が優先される → APIトークン発行

既存の expires_at がNULLのトークンは永久アクティブとして維持される(下位互換)。


plantpulse-storage.properties

パス: plantpulse-server/config/plantpulse-storage.properties · テンプレート: template/plantpulse-storage.properties

メタストア(PostgreSQL) · キャッシュ(Valkey) · 時系列(Cassandra) · TSE · Data Gateway接続とストレージポリシーを管理する。

⚠️ このファイルには誤記キーが実在する。 3個のキーがコードが読む綴りと異なる — 誤記キー警告 節を必ず読むこと。

PostgreSQLメタストア

プロパティデフォルト値置換説明
metastore.driverorg.postgresql.DriverJDBCドライバークラス
metastore.urljdbc:postgresql://...${PP_POSTGRES_HOST} · ${PP_POSTGRES_PORT} · ${PP_DB_NAME}メタストアJDBC URL。クエリ文字列 ?characterEncoding=UTF-8&reWriteBatchedInserts=true を含む
metastore.user${PP_PG_USER}メタストアアカウント
metastore.password${PP_PG_PASSWORD}メタストアパスワード

キャッシュ (Valkey / Redis互換)

プロパティデフォルト値置換説明
cache.host${PP_REDIS_HOST}キャッシュホスト
cache.port${PP_REDIS_PORT}キャッシュポート (内部平文Valkeyバックエンド)
cache.password${PP_REDIS_PASSWORD}キャッシュパスワード
cache.ssl.enabledfalseキャッシュTLS。内部クライアントは redis:// デフォルト
cache.ssl.truststore.location/var/security/plantpulse/master/master.truststore.p12トラストストアパス
cache.ssl.truststore.passwordkopens123!${PP_TLS_TRUSTSTORE_PASSWORD:kopens123!}トラストストアパスワード
cache.ssl.truststore.typePKCS12トラストストアタイプ
cache.ssl.endpoint.identification.enabledfalseエンドポイント識別検証

キー定数の正本は plantpulse-inmemoryInMemoryConfigKeys である。

TSE (TimeSeries Engine)

プロパティデフォルト値置換説明
tse.protocolhttp${PP_TSE_PROTOCOL:http}TSEプロトコル。内部通信のため平文httpがデフォルト (2026-08)
tse.host${PP_TSE_HOST}TSEホスト
tse.port7800${PP_TSE_CONNECT_PORT:7800}TSEポート。平文リスナー7800がデフォルト
tse.usertse${PP_TSE_USER:tse}TSEアカウント
tse.passwordtse123!${PP_TSE_PASSWORD:tse123!}TSEパスワード

Cassandra時系列ストレージ

プロパティデフォルト値置換説明
storage.db_typeCASSANDRADB種類 (テンプレートコメントはCASSANDRA/DSE/SCYLLADBのまま残っているが現在はCassandra 5.0専用)
storage.db_version5.0DBバージョン (ドライバ/機能互換性を決定)
storage.host${PP_CASSANDRA_HOST}contact pointホスト
storage.port9042${PP_STORAGE_PORT:9042}nativeプロトコルポート
storage.keyspace${PP_KEYSPACE}使用keyspace
storage.user${PP_CASSANDRA_USER}接続アカウント
storage.passwordcassandra${PP_STORAGE_PASSWORD:cassandra}パスワード。PP_STORAGE_PASSWORD はenv.sh未export → デフォルト値適用
storage.durable_writestruecommit log使用有無 (⚠️ 読むコードなし — 下記参照)
storage.append_columns[]ユーザー定義カラム自動追加
storage.replication{ 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 }レプリケーション戦略 (単一ノードデフォルト)
storage.data.disk.name${PP_DATA_DISK_NAME}データディスク名

TTL (単位: 日)

プロパティデフォルト値説明
storage.tag.point.ttl62タグ時系列原本
storage.tag.point.map.ttl1タグポイントマップ
storage.tag.point.sampling.ttl93タグサンプリング
storage.tag.point.snapshot.ttl93タグスナップショット
storage.tag.point.aggregation.ttl93タグ集計
storage.tag.point.archive.ttl365タグアーカイブ (長期保存)
storage.tag.blob.ttl93タグBLOB
storage.asset.data.ttl10アセットデータ
storage.asset.data.sampling.ttl31アセットサンプリング

アセットスナップショット周期

プロパティデフォルト値説明
storage.asset.data.snapshot.interval10 SECONDSサイクル毎に全資産のタグマップ(data_map)を asset_data 系列(data/second/timestamp + 分/時/日境界)に記録

テンプレートコメントが根拠を示している: 1 SECONDS は資産121基準で毎分約22K書き込み(Cassandra全体の約4%)で過密であった。タグ原本(秒単位)は tm_tag_point/TSEに完全保存されるため、アセットビュースナップショットは10s(コードデフォルト値と一致)に下げた — 書き込み-90%、記録完全性維持。

この値はスケジューラーの ASSET_DATA_JOB 周期になる。"<n> <unit>" 2トークン形式でなければならず、規則はスケジューラーアーキテクチャ参照。

内部メタストア同期 (実験的)

プロパティデフォルト値説明
storage.internal.metastore.enabledfalse内部メタストア同期有効化
storage.internal.metastore.thread.count4同期ワーカースレッド数
storage.internal.metastore.queue.size12000000同期キューサイズ
storage.internal.metastore.point.retation.days10ポイント保存日数 (⚠️ 誤記キー — 下記参照)

行キャッシュ

プロパティデフォルト値説明
storage.asset.data.row.cache.sizeNONEアセットデータ行キャッシュ (NONE/ROWS_ONLY/ALL) — ⚠️ 読むコードなし
storage.tag.point.row.cache.sizeNONEタグポイント行キャッシュ — ⚠️ 読むコードなし

Compaction

プロパティデフォルト値説明
storage.table.compaction.strategyUCSデフォルト戦略 (TWCS: TimeWindow, UCS: Unified)。CassandraCreateDAO が読む(コードfallbackは TWCS)
storage.table.compaction.strategy.twcs.window_size1TWCSウィンドウサイズ — ⚠️ 読むコードなし
storage.table.compaction.strategy.twcs.window_unitDAYSTWCSウィンドウ単位 — ⚠️ 読むコードなし
storage.table.compaction.strategy.ucs.scailing_parameterT8UCSスケーリングパラメータ (T8 = tiered 8 levels)。キー綴り scailing はコードと一致
storage.table.compaction.strategy.ucs.min_sstable_size128MiBUCS最小sstableサイズ (コードfallback 100MiB)
storage.table.compaction.strategy.ucs.target_sstable_size512MiBUCS目標sstableサイズ
storage.table.compaction.strategy.ucs.base_shard_count8UCS baseシャード数
storage.table.compaction.strategy.ucs.max_sstables_to_compact6一度にcompactionする最大sstable数
storage.table.compaction.strategy.ucs.sstable_growth0.7UCS sstable増加比率

圧縮 / クエリ上限 / バックアップ / Data Gateway

プロパティデフォルト値置換説明
storage.compresion.zstd.level3zstd圧縮レベル (1~22) — ⚠️ 誤記キー、下記参照
storage.tag.point.select.limit.size1000000単一タグポイントselect最大行数
storage.doamin.model.changed.to.metastore.backuptrueドメインモデル変更時のメタストアバックアップ — ⚠️ 誤記キー + 読むコードなし
data.gateway.protocolhttp${PP_DATA_GATEWAY_PROTOCOL:http}Data Gatewayプロトコル
data.gateway.host127.0.0.1${PP_DATA_GATEWAY_HOST:127.0.0.1}Data Gatewayホスト (ローカル同居前提)
data.gateway.port5500${PP_DATA_GATEWAY_CONNECT_PORT:5500}Data Gatewayポート (コードfallback 5501)
data.gateway.api.key${PP_DATA_GATEWAY_API_KEY}Data Gateway APIキー

⚠️ 誤記キー — 編集しても無視される

テンプレートに実際に存在する下記3個のキーは コードが読む綴りと異なる。 管理者がこの行の値を変えても 静かに無視され、コードデフォルト値が適用される。

テンプレートのキー (誤記)コードが実際に読むキーコードデフォルト値読む位置
storage.compresion.zstd.levelstorage.compression.zstd.level3StorageConfigCassandraCreateDAO
storage.internal.metastore.point.retation.daysstorage.internal.metastore.point.retention.days10StorageConfigPointDAO
storage.doamin.model.changed.to.metastore.backupなし (正しい綴りでも読むコードがない)

値を実際に変えるにはコード綴りのキーを同じファイルに追加せよ。 例えばzstdレベルを6に上げるには storage.compression.zstd.level=6 を入れる必要がある(誤記キーを直すのではなく 正しい綴りの行を追加する)。誤記行は残しても無害だが、テンプレート自体を直す方が根本解決である。

storage.doamin.model.changed.to.metastore.backup はどちらの綴りでも読むコードがない。ドメインモデル変更時のバックアップはこのキーではなく MetastoreBackupDeployer(cron 0 0 12 1 1/1 ? *、毎月1日12:00)が担当する — スケジューラーアーキテクチャ参照。

テンプレートにはないがコードが読むstorageキー

プロパティコードデフォルト値説明
storage.compression.zstd.typeZstdCompressor圧縮器クラス名

読むコードがないstorageテンプレートキー (編集しても無効)

storage.durable_writes · storage.asset.data.row.cache.size · storage.tag.point.row.cache.size · storage.table.compaction.strategy.twcs.window_size · storage.table.compaction.strategy.twcs.window_unit (+ 上記誤記キー3個)

TWCS関連の2つのキーは storage.table.compaction.strategy=TWCS に変えてもウィンドウサイズ/単位を制御できない。


plantpulse-mq.properties

パス: plantpulse-server/config/plantpulse-mq.properties · テンプレート: template/plantpulse-mq.properties

Kafka / MQTTブローカー接続とDDS発行トピックを管理する。コード側SSOTは MqConfig(接続) と UNSTopicDefaults(トピック)である。

ブローカー接続

プロパティデフォルト値置換説明
mq.host${PP_KAFKA_HOST}ブローカーホスト (Kafka/MQTT共用)
mq.user${PP_MQ_USER}ブローカー管理アカウント
mq.password${PP_MQ_PASSWORD}ブローカーパスワード
mq.kafka.port9092${PP_KAFKA_PORT:9092}Kafkaポート
mq.kafka.security.protocolSASL_PLAINTEXTKafkaセキュリティプロトコル
mq.ssl.truststore.location/var/security/plantpulse/master/master.truststore.p12メッセージングTLSトラストストア (MQTT + 選択的KafkaTLS)
mq.ssl.truststore.passwordkopens123!${PP_TLS_TRUSTSTORE_PASSWORD:kopens123!}トラストストアパスワード
mq.ssl.truststore.typePKCS12トラストストアタイプ
mq.ssl.endpoint.identification.algorithm(空値)ホスト名検証アルゴリズム (空値 = 検証しない)
mq.mqtt.port${PP_MQTT_TLS_PORT}MQTT接続ポート
mq.mqtt.ssl.enabledtrueMQTT TLS使用

MqConfig は上記キーの他にKafka専用トラストストアオーバーライド mq.kafka.ssl.truststore.location / .password / .typemq.kafka.ssl.endpoint.identification.algorithm も読む(テンプレートにはなく、なければ mq.ssl.* を使う)。

DDSトピック

Kafka 14種(mq.dds.kafka.topic.*) + MQTT UNS 14種(mq.dds.mqtt.topic.*) + SparkplugB 2種(mq.dds.mqtt.sparkplugb.*)。

キー・デフォルト値の全量は メッセージングアーキテクチャ → DDS発行トピック に整理されている。トピック値はKafka/MQTTワイヤ契約であり UNSTopicDefaultsContractTest がリテラルを凍結しているため 任意変更禁止

${PP_TOPIC_PREFIX} がKafkaトピックの接頭(pp-)とMQTT UNSパスのルート(pp/)、SparkplugBグループIDを同時に決定する。


plantpulse-mail.properties

パス: plantpulse-server/config/plantpulse-mail.properties · テンプレート: template/plantpulse-mail.properties

アラーム/レポート送信用SMTP・SMS設定である。

プロパティデフォルト値置換説明
mail.send.enabledfalse${PP_MAIL_SEND_ENABLED:false}マスター送信ゲート。 true でなければすべてのメール送信がWARNログのみ残してskipされる(SMTP試行自体をしない)。サイト別opt-in
mail.smtp.hostsmtp-relay.brevo.com${PP_MAIL_SMTP_HOST:...}SMTPホスト
mail.smtp.port587${PP_MAIL_SMTP_PORT:587}SMTPポート (25:plain, 465:SSL, 587:STARTTLS)
mail.smtp.authtrue${PP_MAIL_SMTP_AUTH:true}SMTP認証使用有無
mail.smtp.userb2df89001@smtp-brevo.com${PP_MAIL_SMTP_USER:...}SMTP送信元アカウント
mail.smtp.passwordbskHIVJqcFQaFtb${PP_MAIL_SMTP_PASSWORD:...}SMTPパスワード (dev デフォルト値 — 納品時に交換)
mail.smtp.starttls.enabletrue${PP_MAIL_SMTP_STARTTLS:true}STARTTLS使用有無
sms.sender.classplantpulse.cep.listener.alarm.sms.DefaultSMSSenderSMS送信実装クラス (CEPリスナー)
diagnostic.log.emaildiag@kopens.com${PP_DIAGNOSTIC_EMAIL:diag@kopens.com}診断通知受信メール — ⚠️ 読むコードなし

PP_MAIL_SMTP_*env.sh がexportしない。 このテンプレート(Brevoリレー)がSSOTであり、環境変数で上書きするとログイン組み合わせが静かに壊れる。サイトオーバーライドは env.local.sh に置く。詳しい背景は置換節参照。


plantpulse-ai.properties

パス: plantpulse-server/config/plantpulse-ai.properties · テンプレート: template/plantpulse-ai.properties

OpenAI互換AIゲートウェイとAI機能フラグを管理する。コード側は plantpulse.core.service.ai.AIConfig が同じ外部設定チェーンで読む。

ゲートウェイ

プロパティデフォルト値置換説明
ai.openai.enabledfalse${PP_AI_OPENAI_ENABLED:false}マスター機能フラグ。 falseならAI UI・エンドポイントが隠され無効化される
ai.openai.base.urlhttps://api.openai.com${PP_AI_OPENAI_BASE_URL:...}OpenAI互換ゲートウェイ。末尾スラッシュ禁止
ai.openai.chat.path/v1/chat/completions${PP_AI_OPENAI_CHAT_PATH:...}chat completionsパス
ai.openai.responses.path/v1/responses${PP_AI_OPENAI_RESPONSES_PATH:...}responsesパス
ai.openai.api.key(空値)${PP_AI_OPENAI_API_KEY:}LiteLLM仮想キー / プロキシキー。リポジトリデフォルト値なし
ai.openai.modelgpt-5-mini${PP_AI_OPENAI_MODEL:gpt-5-mini}LiteLLM config.yaml が公開するモデル名
ai.openai.timeout.ms15000リクエストタイムアウト (ms)
ai.openai.max.output.tokens1200最大出力トークン
ai.openai.temperature-1サンプリングtemperature。負の値ならリクエストbodyからパラメータを完全に省略する

⚠️ ai.openai.temperature の落とし穴。 gpt-5系(gpt-5-mini, gpt-5.5 など)はtemperatureをサポートせず、デフォルト値1以外を送ると 400 Unsupported value になる。そのため負の値(省略sentinel)にしておくべきである。テンプレートコメントの「デフォルト値0.1」の言及はLiteLLM/vLLMゲートウェイ(gpt-4oなど)基準であり、現在のテンプレートの実際の値は -1 である。

運用アシスタント

プロパティデフォルト値説明
ai.alarm.rca.enabledtrueアラーム根本原因分析
ai.alarm.eql.enabledtrueアラームEQL補助
ai.uns.topic.enabledtrueUNSトピックアシスト
ai.result.audit.enabledtrueAI結果監査
ai.similar.incident.enabledtrue類似障害事例推薦
ai.similar.incident.max.items5推薦最大件数
ai.similar.incident.min.score40推薦最低スコア
2026-08になくなったキー6個

ai.diagnostic.summary.* 3個(診断ログAI要約)と ai.operations.report.* 3個(AI運用 レポート)は 2026-08-25に製品から削除されました。画面・JS・コントローラーまで一緒に取り除いたため 値を戻しても機能は復活しません。

アップグレード前の設定ファイルにこれらのキーが残っていても害にはなりません — 読むコードがなく そのまま無視されます。整理したければ削除しても構いません。

MCP / チャット

プロパティデフォルト値置換説明
ai.mcp.enabledtrue${PP_AI_MCP_ENABLED:true}MCP (AI chat-opsエンドポイント)
ai.mcp.allowed.origins(空値)${PP_AI_MCP_ALLOWED_ORIGINS:}MCP許可Originリスト
ai.chat.enabledfalse${PP_AI_CHAT_ENABLED:false}server-webコンソールAIチャットdrawer。ai.openai.* ゲートウェイがONである必要がある

その他のテンプレート

template/ には上記5種以外にもアプリケーション・インフラ設定テンプレートがある。配布パスマッピングの正本は ConfigTemplates.java である。

テンプレート配布パス用途
plantpulse-batch.properties/plantpulse-batch/config/バッチ(時系列同期/集計)
plantpulse-cep.properties/plantpulse-cep/config/CEPエンジン
plantpulse-jdbc.properties/plantpulse-data-gateway/config/ 及び /plantpulse-sql/config/JDBC統合設定 (2つのモジュールが同一テンプレートを共有)
plantpulse-data-gateway.properties/plantpulse-data-gateway/config/Data Gateway動作
plantpulse-warehouse.properties/plantpulse-warehouse/config/Cassandra → Iceberg(S3)アーカイブ
plantpulse-monitor.properties/plantpulse-monitor/config/モニター(JMX収集)
plantpulse-plugin-opcua.properties/plantpulse-plugin/opc-ua/config/OPC UAサーバープラグイン
plantpulse-plugin-aas.properties/plantpulse-plugin/aasx-server/config/AAS V3 (aasx-server)プラグイン
kafka.properties/plantpulse-messaging/kafka/config/kafka.propertiesKafka(KRaft)ブローカー
kafka-jaas.conf/plantpulse-messaging/kafka/config/jaas.confKafka JAAS
hivemq.xml/plantpulse-messaging/mqtt/conf/config.xmlHiveMQブローカー
plantpulse-mq-auth.properties/plantpulse-messaging/mqtt/conf/auth.propertiesHiveMQ認証ソース
hive-auth.properties/plantpulse-analytics/spark/conf/Hive/分析アカウント認証ソース
plantpulse-timeseries-engine.conf/plantpulse-timeseries/engine/conf/ (2箇所)TSE
valkey.conf · postgresql.conf · pg_hba.conf · cassandra.yaml · jvm-server.options/plantpulse-storage/...ストレージ
spark-env.sh · spark-defaults.conf · hive-site.xml · kyuubi-defaults.conf · gravitino-iceberg-rest-server.conf/plantpulse-analytics/...分析
workflow.yaml · application.yaml/plantpulse-workflow/...Temporal / Kestra
plantpulse-startup.properties(startup自体使用)起動時のデータレイクヘルスチェック接続情報

plantpulse-sql.properties は存在しない。 SQLモジュールは plantpulse-jdbc.properties を受け取る。 plantpulse-websocket.properties も存在しない。 WebSocket/STOMP系設定ファイルはない。 template/cluster/ はワーカーノード専用オーバーライドである — masterテンプレートを直せばここも同期させる必要がある。

plantpulse-batch.properties

接続ブロック(プラットフォーム/メタストア/キャッシュ/TSE/Kafka/Cassandra/Spark)とバッチ動作設定で構成される。接続キーはstorage/jdbcと名前が異なるので注意 — 例: Cassandraは storage.db.host / storage.db.port / storage.db.keyspace (serverは storage.host / storage.port / storage.keyspace)。

プロパティデフォルト値説明
platform.host${PP_MASTER_IP}プラットフォーム(server-web)ホスト
mq.port9092Kafkaポート (リテラル — 置換ではない)
kafka.topicpp-batchバッチ入力トピック
kafka.group.idPP-BATCH-GROUPバッチコンシューマーグループ
batch.timer_schedule_delay5000バッチタイマー周期 (ms)
batch.thread_pool_batch_thread_size4バッチワーカースレッド数
batch.buffer_drain_limit_size10000一度に空ける最大件数
batch.sync.inmemory.enabledfalseインメモリ同期
batch.sync.inmemory.ttl.minute10インメモリ同期TTL (分)
batch.sync.tse.enabledtrueTSEへ分配
batch.sync.external.db.enabledfalse外部DB同期
external.db.nameTIMESCALEDB外部DB種類。INFLUXDB/QUESTDBブロックはテンプレートにコメント状態で存在する
analytics.urljdbc:spark://${PP_SPARK_HOST}:${PP_KYUUBI_PORT}/defaultSpark Thrift JDBC

plantpulse-cep.properties

プロパティデフォルト値説明
cep.ha.enabledtrueRedisベースのハイアベイラビリティキルスイッチ (再起動時にデプロイメント/named window/単一キーテーブル状態を保持)
cep.ha.snapshot.interval_ms1000スナップショット周期 (イベントスレッド非ブロッキングバックグラウンド)
cep.ha.snapshot.named_windowstruenamed windowスナップショット
cep.ha.snapshot.tablestrueテーブルスナップショット
cep.async.core_pool_size32非同期コアプール
cep.async.max_pool_size256非同期最大プール
cep.async.queue_capacity50000非同期キュー
cep.async.keep_alive_seconds60スレッドkeep-alive
cep.async.shutdown_timeout_seconds30graceful shutdown待機
cep.consumer.thread_count16コンシューマースレッド
cep.stream.shard_count16ストリームシャード数
cep.stream.drain_limit_size1000ドレイン上限
cep.stream.drain_warn_ms1000ドレイン警告 (ms)
cep.monitor.initial_delay_seconds5モニター初回遅延
cep.monitor.interval_seconds1モニター周期
cep.monitor.store_interval_seconds60EQL文別メトリクスCassandra保存周期
cep.monitor.statement_metrics_enabledtrue文別メトリクス収集
cep.performance.cpu_warn_threshold_ns1000000000CPU警告閾値 (ns)
cep.performance.wall_warn_threshold_ns1000000000wall警告閾値 (ns)
cep.api.key${PP_CEP_API_KEY}EQL管理エンドポイント認証 (X-API-Key)
cep.api.max_eql_text_length100000EQLテキスト最大長 (DoS防御)
cep.storage.request_timeout_seconds10Cassandraリクエストタイムアウト
cep.storage.max_inflight_writes256インフライト書き込み上限
cep.storage.connect_max_retries3接続再試行
cep.storage.ttl_seconds864000メトリクスTTL (秒, 10日)
cep.stream.pending_idle_threshold_ms60000pendingアイドル閾値
cep.stream.cleaner_initial_delay_ms60000クリーナー初回遅延
cep.stream.cleaner_interval_ms10000クリーナー周期
cep.stream.max_clean_duration_ms30000クリーン最大所要時間
cep.stream.cleaner_max_claim_count5000クレーム最大件数
cep.stream.ack_chunk_size500ACKチャンクサイズ

cep.monitor.store_interval_seconds60 には根拠がある — 文の数(資産×EMS/アラームルール、dev実測1,263個)に比例して書き込みが発生し、10sでは毎分7.6K行だった。オンデマンド照会専用のため60sに緩和(-83%)した。

HA専用Redis接続(cep.ha.redis.host/port/password)はテンプレートにコメント状態で存在する — キャッシュと異なるRedisを使う場合のみ解除する。

plantpulse-jdbc.properties

外部JDBCクライアント(SQLモジュール · Data Gateway)の統合接続設定である。プレフィックスは jdbc.<tech> (postgres/cassandra/spark/tse)。

プロパティ説明
jdbc.postgres.driverorg.postgresql.DriverMETA / PQL
jdbc.postgres.urljdbc:postgresql://${PP_POSTGRES_HOST}:${PP_POSTGRES_PORT}/${PP_DB_NAME}?characterEncoding=UTF-8
jdbc.cassandra.driverplantpulse.cassandra.jdbc.CassandraDriverOLTP時系列(CQL)。ドライバー値は設定一貫性用(機能上未使用)
jdbc.cassandra.urljdbc:cassandra://${PP_CASSANDRA_HOST}:${PP_CASSANDRA_PORT}/${PP_SCHEME}
jdbc.tse.driverplantpulse.timeseries.tql.TQLDriverOTAP / TQL
jdbc.tse.urljdbc:ts://${PP_TSE_HOST}:${PP_TSE_PORT}/${PP_SCHEME}⚠️ plain http(ts/7800)固定
jdbc.spark.driverplantpulse.spark.jdbc.SparkSQLDriverOLAP分析
jdbc.spark.urljdbc:spark://${PP_SPARK_HOST}:${PP_KYUUBI_PORT}/default/${PP_SCHEME}
data.gateway.api.key${PP_DATA_GATEWAY_API_KEY}JDBC呼び出し認証用

⚠️ jdbc.tse.url をhttps(tss/7801)に変えてはいけない。 TQL JDBCドライバーは平文TSEリスナー(7800)を使う。TSEクライアントはグローバルに平文http/7800がデフォルトである(2026-08、env.sh TSEセクション)。tss/7801に設定するとJDBC接続失敗 → data-gateway起動失敗 → /api/v1/* 全部404 → analyticsカタログ404へつながる。そのため ts/PP_TSE_PORT にピン固定されている。

jdbc.spark.username は分析専用アカウント ${PP_ANALYTICS_USER} である。Kyuubi内部メタストアアカウント(PP_HIVE_*)とは分離されている。 選択キーとして jdbc.<tech>.pool.initial|min|max (postgres/spark/tse)、jdbc.<tech>.query.timeout|fetch-size を使える(全体レファレンスは plantpulse-jdbc/docs/configuration.md)。 jdbc.cassandra.local-datacenter はテンプレートにコメント状態であり、未設定時は datacenter1 である。

plantpulse-data-gateway.properties

プロパティデフォルト値説明
data.gateway.api.key${PP_DATA_GATEWAY_API_KEY:ADFA-URDV-QWED-1234}API認証キー (必須)。devデフォルト値は納品時に交換
data.gateway.rate.limit1000秒間最大リクエスト数 (IP + APIキー基準)
data.gateway.slow.query.ms10000低速照会警告閾値 (ms)
data.gateway.slow.update.ms2000低速更新警告閾値 (ms)
data.gateway.async.timeout.ms60000非同期タイムアウト (ms)

plantpulse-monitor.properties

単一ノード(type=MASTER)基準の各サービスのJMX/管理エンドポイント集合である。キーにドット(.)ではなくアンダースコア(_) を使う唯一のファイルである。

プロパティデフォルト値説明
typeMASTER単一ノードまたはクラスターマスター
db_typeCASSANDRA監視対象DB種類
master / host${PP_MASTER_IP} / ${PP_HOST_IP}マスター / 自己ホスト
db_host · db_port · db_keyspace · db_username · db_password · db_replication_factor${PP_CASSANDRA_*} · 9042 · ${PP_SCHEME} · 1Cassandra接続
tse_host · tse_port · tse_protocol · tse_username · tse_password${PP_TSE_*} · 7801 · https · tse · tse123!TSE接続(メトリクス積載)
kafka_jmx_uriservice:jmx:rmi:///jndi/rmi://${PP_KAFKA_HOST}:7299/jmxrmiKafka JMX
mqtt_jmx_uri...://${PP_MQTT_HOST}:7279/jmxrmiHiveMQ JMX
cep_jmx_uri...://${PP_HOST_IP}:6499/jmxrmiCEP JMX
datagateway_jmx_uri...://${PP_HOST_IP}:7499/jmxrmiData Gateway JMX
sql_jmx_uri...://${PP_HOST_IP}:7599/jmxrmiSQL JMX
tse_jmx_uri...://${PP_HOST_IP}:7899/jmxrmiTSE JMX
cassandra_jmx_uri...://${PP_CASSANDRA_HOST}:7199/jmxrmiCassandra JMX
spark_jmx_uri...://${PP_SPARK_HOST}:10010/jmxrmiSpark JMX
redis_jmx_uriredis://${PP_REDIS_HOST}:${PP_REDIS_PORT}?password=...Valkey接続URI
redis_ssl_truststore_location / _password / _type / redis_ssl_endpoint_identification_enabledp12 · ${PP_TLS_TRUSTSTORE_PASSWORD:kopens123!} · PKCS12 · falseValkey TLS
postgres_jmx_urijdbc:postgresql://.../${PP_DB_NAME}?user=...&password=...PostgreSQL接続URI

JMXポート要約: HiveMQ 7279、Kafka 7299、CEP 6499、Data Gateway 7499、SQL 7599、TSE 7899、Cassandra 7199、Spark 10010

plantpulse-warehouse.properties

Cassandra → Iceberg(S3)アーカイブバッチ。このファイルのみキーが大文字スネークケース(UPPER_SNAKE) である。

グループ主要キーデフォルト値
TemporalTEMPORAL_SERVER · TEMPORAL_TASK_QUEUE · TEMPORAL_WORKFLOW_ID · TEMPORAL_SCHEDULE_ID · OPTIMIZER_SCHEDULE_ID · OPTIMIZER_WORKFLOW_ID${PP_TEMPORAL_HOST}:${PP_TEMPORAL_PORT} · PP-S3-QUEUE · PP-S3-ARCHIVE-DAILY-WORKFLOW · PP-S3-ARCHIVER-DAILY · PP-S3-OPTIMIZER-WEEKLY · PP-S3-OPTIMIZER-WEEKLY-WORKFLOW
スケジュールDAILY_HOUR · DAILY_MINUTE · OPTIMIZER_DAY_OF_WEEK · OPTIMIZER_HOUR · OPTIMIZER_MINUTE · TIMEZONE2 · 20 · 0(日曜日) · 3 · 0 · ${PP_TZ}
実行モードARCHIVER_MODESHELL (または KESTRA)
KestraKESTRA_SERVER · KESTRA_NAMESPACE · KESTRA_TASK_ID · KESTRA_USER · KESTRA_PASS${PP_KESTRA_HOST}:${PP_KESTRA_PORT} · plantpulse · plantpulse-daily-s3-archiver · admin@plantpulse.io · (空値)
スクリプトS3_SCRIPT_DIR · S3_SCRIPT_NAME · S3_OPTIMIZER_SCRIPT_NAME${PP_HOME}/plantpulse-warehouse/s3 · archive.sh · optimize.sh
SparkSPARK_APP_NAME · SPARK_MASTER · SPARK_JAR_PATH · SPARK_DRIVER_MEMORY · SPARK_EXECUTOR_MEMORY · SPARK_EXECUTOR_CORES · SPARK_NUM_EXECUTORS · ARCHIVER_PARALLELISM · SPARK_CHECKPOINT_DIRPP-SPARK-S3-LAKEHOUSE · local[*] · .../plantpulse-warehouse-s3.jar · 2g · 4g · 4 · 3 · 4 · s3a://${PP_MINIO_BUCKET:-plantpulse}/spark-checkpoint/
ソース/ターゲットCASSANDRA_CATALOG · CASSANDRA_DATABASE · S3_BUCKET · ICEBERG_CATALOG · ICEBERG_DATABASEcassandra · ${PP_SCHEME:pp} · ${PP_MINIO_BUCKET:-plantpulse} · spark_catalog · ${PP_SCHEME:pp}
最適化SNAPSHOT_RETENTION_DAYS · OPTIMIZER_MIN_INPUT_FILES · OPTIMIZER_TARGET_FILE_SIZE_BYTES3 · 10 · 134217728 (128MB)
タイムアウトARCHIVER_WF_EXECUTION/RUN/TASK_TIMEOUT_HOURS · OPTIMIZER_WF_EXECUTION/RUN/TASK_TIMEOUT_HOURS · ACTIVITY_MAX_ATTEMPTS · ACTIVITY_TIMEOUT_HOURS · OPTIMIZER_ACTIVITY_TIMEOUT_HOURS · SCRIPT_TIMEOUT_SECONDS · OPTIMIZER_TIMEOUT_SECONDS · HEARTBEAT_INTERVAL_SECONDS12/12/12 · 8/7/12 · 3 · 12 · 8 · 21600(6h) · 25200(7h) · 60
WebWEB_SERVER_PORT9600

メッセージング / 認証ソーステンプレート

plantpulse-mqtt.properties — HiveMQブローカー設定。

プロパティデフォルト値
mqtt.host · mqtt.user · mqtt.password${PP_MQTT_HOST} · ${PP_MQ_USER} · ${PP_MQ_PASSWORD}
mqtt.port · mqtt.ssl.enabled${PP_MQTT_TLS_PORT} · true
mqtt.websocket_port8888
mqtt.data_dir/data1/pp-data/hivemq

plantpulse-mq-auth.properties — HiveMQ security extension(FileAuthAuthenticator)が HIVEMQ_AUTH_FILE 環境変数で指す認証ソース。キーは mqtt.user / mqtt.password の2つのみである。

hive-auth.propertiesplantpulse-hive-auth(PasswordAuthenticator)が読む。HIVE_AUTH_FILE 環境変数または $PP_HOME/plantpulse-analytics/spark/conf/hive-auth.propertiesキー名自体がplaceholderである点が特異である。

${PP_HIVE_USER}=${PP_HIVE_PASSWORD}
${PP_ANALYTICS_USER}=${PP_ANALYTICS_PASSWORD}

kafka.properties — KRaftモードKafkaブローカー。主要な値: process.roles=broker,controllernode.id=1num.partitions=4、リスナー3種(SASL_PLAINTEXT/CONTROLLER/SASL_SSL)、sasl.enabled.mechanisms=PLAINsuper.users=User:adminallow.everyone.if.no.acl.found=falselog.dirs=${PP_DATA_DIR}/kafka/kraft_combined_logslog.retention.ms=3600000(1時間)、message.max.bytes=157286400default.replication.factor=1auto.create.topics.enable=true

⚠️ log.retention.ms=3600000 = 1時間。 Kafkaはバッファ役割であり、永続化はCassandra/TSEが担う前提である。コンシューマーが1時間以上停止するとデータが失われる。

プラグインテンプレート

plantpulse-plugin-opcua.properties — PostgreSQL / Cassandra / Valkey / Kafka接続 + OPC UAサーバーエンドポイント。

プロパティデフォルト値説明
kafka.topicpp-tag-point⚠️ リテラル${PP_TOPIC_PREFIX} 置換ではない
kafka.thread · kafka.group.id8 · opcua-plugin-group
opc.ua.server.domain · opc.ua.server.port${PP_HOST_IP} · 8007
opc.ua.server.user · password · anonymousopcua · 설치-시-변경 · false
opc.ua.server.tcp.port · tls.port${PP_OPCUA_TCP_PORT:11004} · ${PP_OPCUA_TLS_PORT:11005}
redis.thread · redis.ssl.enabled4 · false

plantpulse-plugin-aas.properties — AAS V3サーバー + Kafka消費設定。

プロパティデフォルト値説明
aas.v3.port${PP_AAS_V3_PORT:8090}V3 HTTPポート
kafka.topic${PP_TOPIC_PREFIX}-tag-pointリアルタイムタグポイント受信
kafka.thread · kafka.poll.count8 · 1000
group.id · auto.offset.reset · enable.auto.commitpp-plugin-aas-server · earliest · false
session.timeout.ms · auto.commit.interval.ms30000 · 1000
plugin.message.listenerplantpulse.plugin.opcua.messaging.KafkaPluginMessageListener

BaSyx V2のregistry/AASポートは設定ではなくコードハードコーディングである — AASServer.javaREGISTRY_PORT=4800AAS_PORT=4801

plantpulse-startup.properties

起動時に Checker がデータレイク/ヘルスチェックに使う接続情報である。platform.host · metastore.* · cache.* · tse.* · storage.db.* · analytics.* · object.*(MinIO)ブロックで構成される。値はすべて env.sh 置換であり、バッチテンプレートと同じキー名規約(storage.db.*)を使う。


テンプレートにないがコードが読むエンジンキー

EngineConfig は下記のキーも読む。テンプレート(plantpulse-engine.properties)にはないため通常はコードデフォルト値が適用され、値を変えるには plantpulse-server/config/plantpulse-engine.properties直接行を追加する必要がある。

エッジ時計 / 状態ポーリング

プロパティコードデフォルト値
edge.clock.poll.term.sec60
edge.clock.skew.threshold.ms10000
edge.clock.rtt.max.ms2000
edge.clock.autosync.enabledtrue
edge.clock.autosync.cooldown.ms600000
edge.clock.warn.cooldown.ms600000
edge.clock.skip.warn.count5
edge.status.poll.seconds30
edge.status.poll.jitter.max.ms3000

edge.clock.poll.term.secedge.status.poll.seconds はスケジューラージョブ周期を決定する — 値制約はスケジューラーアーキテクチャのEdge節参照。

DDS / イベントバス / プッシュ / バッファ

プロパティコードデフォルト値
engine.dds.queue.size80000
engine.dds.worker.threads4
engine.dds.latency.warn.ms1000
engine.eventbus.queue.capacity65536
engine.push.threads4
engine.push.queue.size10000
engine.storage.buffer.typeKAFKA
engine.streaming.timeout.backup.queue.capacity12000000

engine.dds.enabled · engine.dds.data.tag.enabled · engine.dds.data.asset.enabledコードデフォルト値は false である。テンプレートが true と明示しているため、配布版でのみONになっている — この3行を削除するとDDSが静かにOFFになる。

ジョブスレッド (テンプレート未記載分)

プロパティコードデフォルト値
engine.job.thread.oee10
engine.job.thread.ram5
engine.job.thread.ems5
engine.job.thread.system4
engine.job.asset.slow.threshold.ms20000

⚠️ engine.job.thread.point のコードデフォルト値は 4 だがテンプレートは 8 である(engine.job.thread.asset は両方 8 で一致)。テンプレート行を削除すると値が半分に落ちる。

Flowエンジン (テンプレート未記載分)

プロパティコードデフォルト値
flow.engine.enabledtrue
flow.executor.parallelism64
flow.executor.queue.capacity10000
flow.executor.queue.size10000
flow.executor.poll.timeout.ms50
flow.scheduler.pool.size4
flow.timer.pool.size2
flow.jdbc.trigger.pool.size2
flow.shutdown.timeout.sec5
flow.enabled.cache.ttl.ms5000
flow.webhook.auth.enabledtrue

アラーム / ISO指標 / OEE

プロパティコードデフォルト値
alarm.duplicate.check.minutes10
engine.oee.debounce.ms100
iso.oee.rolling.window.minutes10
iso.ems.rolling.window.minutes10
iso.ram.rolling.window.minutes1440

異常検知詳細 (アセットポイント / システム)

engine.data.anomaly.enabled=true でONにしたときのみ意味を持つ。

プロパティコードデフォルト値
engine.data.anomaly.asset.point.intervalMINUTE
engine.data.anomaly.asset.point.lookback.minutes14400
engine.data.anomaly.asset.point.recent.seconds600
engine.data.anomaly.asset.point.limit2100
engine.data.anomaly.asset.point.context.length2048
engine.data.anomaly.asset.point.prediction.length96
engine.data.anomaly.asset.point.score.history60
engine.data.anomaly.asset.point.threshold.k3.5
engine.data.anomaly.asset.point.threshold.min0.80
engine.data.anomaly.asset.point.threshold.max0.98
engine.data.anomaly.asset.point.topk.request5
engine.data.anomaly.asset.point.topn.report5
engine.data.anomaly.system.lookback.minutes1440
engine.data.anomaly.system.recent.seconds60
engine.data.anomaly.system.limit2100
engine.data.anomaly.system.context.length2048
engine.data.anomaly.system.pred.length96
engine.data.anomaly.system.threshold.min0.80
engine.data.anomaly.system.topk2

存在しない設定

下記の名前は過去の文書・外部資料に登場するがテンプレートにもコードにもない。 この名前で設定を追加しても何の効果もない。

探していたもの実際の位置
storage.postgresql.*metastore.driver / metastore.url / metastore.user / metastore.password
storage.redis.*cache.host / cache.port / cache.password / cache.ssl.*
storage.cassandra.*storage.host / storage.port / storage.keyspace / storage.user / storage.password
storage.tse.*tse.protocol / tse.host / tse.port / tse.user / tse.password
storage.ttl.realtime などテーブル別 storage.tag.point.ttl / storage.asset.data.ttl など (TTL節)
storage.compression.enable / .algorithmstorage.compression.zstd.level / storage.compression.zstd.type (テンプレート行は誤記 — 誤記キー警告)
storage.compaction.enable / .schedulestorage.table.compaction.strategy 系統 (Compaction節)
storage.metastore.* / storage.cache.*なし
mq.type / mq.kafka.bootstrap.servers / mq.kafka.group.idmq.host + mq.kafka.port。コンシューマーグループは設定ではなくコード定数(PP-KAFKA-POINT-GROUP など、メッセージングアーキテクチャ)
mail.*plantpulse-server/config/ の外でplantpulse-mail.properties の1箇所
websocket.* / plantpulse-websocket.propertiesなし。 STOMP/WebSocketは2026-07に退役、ブラウザプッシュはSSE(/push/sse) — メッセージングアーキテクチャ
scheduler.enabled / scheduler.thread.count / scheduler.misfire.* / scheduler.history.*なし。 Quartz設定は plantpulse-server-web/src/quartz.properties(WARクラスパス) — スケジューラーアーキテクチャ
engine.ntp.enable / engine.ntp.serverengine.ntpdate.sync / engine.ntpdate.server.ip
engine.cep.enable / engine.cep.host / engine.cep.portengine.cep.server.ip / engine.cep.server.port / engine.cep.server.protocol
engine.anomaly.*engine.data.anomaly.*
engine.dds.enable / engine.dds.topic.prefixengine.dds.enabled、トピック接頭は PP_TOPIC_PREFIX(mqテンプレート)
engine.async.queue.size / engine.async.timeout / engine.pipeline.batch.size / engine.timeout.* / engine.dataflow.threads / engine.dataflow.buffer.sizeなし
PP_STOMP_* / PP_WEBSOCKET_* env変数env.sh にない

パスワードが含まれるプロパティ

納品前に必ず交換すべき値である。dev平文デフォルト値は env.sh(またはテンプレート)のplaceholderであり、運用/顧客納品時は顧客専用値に変えるかDocker -e VAR=... / export で上書きする。

ファイルキー
plantpulse-storage.propertiesmetastore.password · cache.password · cache.ssl.truststore.password · storage.password · tse.password · data.gateway.api.key
plantpulse-engine.propertiesapi.key · flow.webhook.api.key · engine.cep.server.api.key
plantpulse-mq.propertiesmq.password · mq.ssl.truststore.password
plantpulse-mail.propertiesmail.smtp.password
plantpulse-ai.propertiesai.openai.api.key
plantpulse-cep.propertiescache.password · storage.password · cep.api.key
plantpulse-batch.propertiesmetastore.password · cache.password · tse.password · mq.password · storage.db.password · analytics.password · external.db.password
plantpulse-jdbc.propertiescache.password · jdbc.postgres.password · jdbc.cassandra.password · jdbc.tse.password · jdbc.spark.password · data.gateway.api.key
plantpulse-data-gateway.propertiesdata.gateway.api.key
plantpulse-monitor.propertiesdb_password · tse_password · redis_jmx_uri(URL内password) · redis_ssl_truststore_password · postgres_jmx_uri(URL内password)
plantpulse-mqtt.properties · plantpulse-mq-auth.propertiesmqtt.password
plantpulse-plugin-opcua.propertiespostgres.password · cassandra.password · redis.password · kafka.password · opc.ua.server.password
plantpulse-plugin-aas.propertiesaas.db.password · cassandra.password · kafka.password
kafka.propertiesssl.keystore.password · ssl.key.password · ssl.truststore.password
hive-auth.properties値全体がパスワード

APIキーポリシー: PP_API_KEY · PP_DATA_GATEWAY_API_KEY · PP_FLOW_WEBHOOK_API_KEY · PP_CEP_API_KEY はdev平文デフォルト値フォールバック(${VAR:-<dev-default>})にしておく — dev/テストが追加シークレット注入なしで起動・デプロイできるようにするためである。ハードフェイル(:?)に変えるなrestart-server.shenv.sh をsourceする際に即死しデプロイが失敗する。

推奨措置

# 설정 파일 권한 제한
chmod 600 /opt/kopens/plantpulse-platform/plantpulse-*/config/*.properties

# 사이트별 비밀값은 env.local.sh 로 분리 (env.sh 는 SSOT 유지)
vi /opt/kopens/plantpulse-platform/plantpulse-startup/env.local.sh

シークレットはリポジトリにコミットしない。