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

プロパティリファレンス

このドキュメントは、配布される実物の設定テンプレート(*.properties)から再生成されます。 テンプレートの正本は plantpulse-datalake-cli/config/templates であり、ホストの /etc/kopens/conf がその場所に バインドマウントされます。どのテンプレートがどこにレンダリングされるかは config/render.map のページで定義されています。 ロード優先順位の正本は plantpulse-core/src/plantpulse/core/engine/utils/PropertiesUtils.java です。

キーを追加・削除・改名した場合は、このドキュメントではなくテンプレートが正本となります。ドキュメントを手動で編集せず、 テンプレートから再度抽出してください。各表の「デフォルト値」はテンプレートに記載されている通りであり、${PP_XXX} は レンダリング時に環境変数で置換される箇所です。

値のソースと流れ​

項目場所権限変更方法
機密情報 — DBパスワード · APIキー/etc/kopens/plantpulse-platform.env0600bin/passwd.sh (サーバーアカウント変更 → サイドカー更新 → 再レンダリング → 再起動を一連のコマンドで実行)
このボックス固有の値 — PP_MASTER_IP · Kafka広告アドレス · イメージタグピン/etc/kopens/platform.node.env0600直接編集後 bin/restart-datalake.sh
設定 — ポート · イメージタグ · ロケール · データパスrepo の .env (.env.example のみコミット)—直接編集後再起動
エンジン設定の«行» — postgresql.conf パラメータ, Kafka保存, Aster TSDBヒープ/etc/kopens/conf/<파일>.template—テンプレート編集 → pd config render → pd restart <서비스>
コンポーネントの設定ファイルを直接修正すると、次回の起動時に消失します

pd start は 毎回 テンプレートをレンダリングして各コンポーネントの設定箇所に上書きします。cassandra.yaml · postgresql.conf · kafka.properties を開いて修正しても、次回の起動時に元に戻ります。 修正すべき場所は テンプレート です → 設定の変更方法

機密情報とノード値を1つのファイルにまとめないでください

機密情報ファイルは split install 時にアプリノードへ コピーされます が、ノードファイルは コピーされてはいけません。 これらをまとめると、1つのボックスの PP_MASTER_IP とイメージタグピンが他のボックスに漏洩します。 形式は VAR=값 の1種類のみです — export を付加すると env_file: がパースできなくなります。

テンプレート変更の標準手順​

ホストで値を修正し、コンテナ内の pd に反映させます。

vi /etc/kopens/conf/<템플릿> # 1. 호스트의 템플릿을 고칩니다

docker exec plantpulse-datalake pd doctor # 2. 검사 (선택)
docker exec plantpulse-datalake pd config diff # 3. 무엇이 달라지는지 봅니다
docker exec plantpulse-datalake pd config render # 4. 실제로 씁니다
docker exec plantpulse-datalake pd restart <서비스> # 5. 재시작
docker exec plantpulse-datalake pd status # 6. 확인

pd config render は 設定ファイルを書き直すだけで、サービスを再起動しません。 再起動まで、新しい設定はディスク上にのみ存在し、古いプロセスが生きています。そのため、4番と5番はセットで実行してください。

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

ウェブアプリケーション(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. ウェブアプリクラスパス (WAR に含まれるデフォルト値) — fallback

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

Properties loaded from external conf: <absolute-path>

外部ファイルの読み込みに失敗した場合はエラーログを記録し、クラスパスへ fallback します。

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

注意: ウェブアプリ内部ファイル(server/webapps/ROOT/WEB-INF/classes/ など)は直接修正しないでください — WAR の再デプロイ時に消失します。

${ENV:기본값} 置換は2回行われる​

テンプレートの ${PP_XXX} / ${PP_XXX:기본값} 表記は、 2つのタイミング で解釈されます。

タイミング主体動作
起動時pd config renderサイドカー(plantpulse-platform.env · platform.node.env)とコンテナ環境に置換。順序は 環境変数 → :기본값 → 元の値を保持。 ネストされた placeholder は非対応
ランタイムPropertiesUtils.resolveEnvPlaceholdersロードした Properties の すべての値 に対して ${ENV_VAR[:default]} を再解釈

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

サイドカーに存在しない PP_* 変数 (テンプレートのデフォルト値がそのまま適用される)​

以下の変数はテンプレートが ${PP_XXX:기본값} で参照していますが、サイドカーファイルでは 定義されていません 。そのため、個別の注入がない限り、常にテンプレートのデフォルト値が使用されます。

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_* はこのリストにありましたが、現在は何も動作しません

PP_AI_OPENAI_* · PP_AI_MCP_* · PP_AI_CHAT_ENABLED を指定しても 静かに無視されます 。これらの値を 読み取っていた層が 2026-09-18 に廃止されました — AI設定を参照してください。

PP_STORAGE_PASSWORD · PP_METASTORE_PASSWORD はこのリストにありましたが、「存在しない変数」です

テンプレートもサイドカーもその名前を参照していません。実際の名前は以下の通りです —

項目実際の変数
時系列ストレージ(Aster TSDB)接続PP_CASSANDRA_HOST · PP_CASSANDRA_PORT · PP_CASSANDRA_USER · 🔑 PP_CASSANDRA_PASSWORD
メタストア(PostgreSQL)接続PP_POSTGRES_HOST · PP_POSTGRES_PORT · PP_PG_USER · 🔑 PP_PG_PASSWORD

🔴 PP_MAIL_SMTP_* も 現在は何も動作しません 。メール設定の正本は pp.mm_config であり、値はコンソール(/config/index)またはその表で変更します — メール設定。一貫性が求められる値(ホスト · ポート · 認証有無 · アカウント)を一箇所でのみ修正可能にしたことが、この移管の理由です。

サーバー管理設定 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

これら3つのファイルは PropertiesLoader.load() が一括して読み込み(engine/mq/storage)、タイプ定義された設定Bean EngineConfig · StorageConfig · MqConfig を再構成します。

メール・AI設定はファイルではありません — pp.mm_config が正本です

plantpulse-mail.properties と plantpulse-ai.properties は 2026-09-17 に削除され 、外部設定ディレクトリに残っている可能性のある旧コピーを読み取って表に転記していた経路も 2026-09-18 に完全に廃止されました 。つまり、ファイルを作成しても 何も読み込まれません 。

値が適用される経路は コンソールと PostgreSQL pp.mm_config の2つのみです。キー名とデフォルト値の正本はコードの MailConfigKeys · AiConfigKeys であり、表に行がないキーはデフォルト値で読み込まれます — 以下2つのセクションのキー表は引き続き有効です。

application.properties (削除済み)​

application.properties は 2026.06 に削除されました。このファイルを読み込むコードは存在せず(全リポジトリでの使用箇所 0件)、既存の項目は以下に移管されました。

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

plantpulse-engine.properties​

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

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

非同期 / パイプライン​

プロパティデフォルト値置換説明 (テンプレート注釈)
engine.async.parallelism256—Async 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.1—NTPサーバー 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.enabledtrue—DDS 全局有効化
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時間)。Aster TSDBカウンタテーブルは default_time_to_live を利用できないためアプリケーションレベルで整理
flow.stats.prune.hourly.days30—tm_flow_stats_hourly の hour_bucket 保存期間
flow.stats.prune.daily.days90—tm_flow_stats_daily の day_bucket 保存期間
flow.health.check.interval.ms600000—Flowヘルスチェック周期 (ms, 10分)。現在時刻バケット errors > 0 ならば ERROR, それ以外は NORMAL (KST基準)
flow.webhook.api.keydev-webhook-19ba7a54-1132-49f2-967e-3c6f5cd989a0${PP_FLOW_WEBHOOK_API_KEY:...}Flowエンジン外部ウェブフック認証

Flowヘルスチェックが使用する Aster TSDB テーブル: 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分)

判定ソースは Aster TSDB 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.enabledtrue—V5 API 認証ブルートフォース防御
engine.api.v5.auth.bruteforce.ip_limit30—IPあたり試行制限
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 を client IP として使用。空の場合は getRemoteAddr() のみ使用(fail-safe)
engine.session.bruteforce.enabledtrue—/login/login ブラウザセッションブルートフォース防御
engine.session.bruteforce.ip_limit30—IPあたり試行制限
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) · 時系列(Aster TSDB) · TSE · Data Gateway 接続とストレージポリシーを管理します。

⚠️ このファイルには誤字キーが存在します。 3つのキーがコードで読み取っている綴りと異なります — 誤字キー警告 セクションを必ず読んでください。

PostgreSQL メタストア​

プロパティデフォルト値置換説明
metastore.driverorg.postgresql.Driver—JDBC ドライバクラス
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}キャッシュポート (内部 plaintext Valkey backend)
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-inmemory の InMemoryConfigKeys です。

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 パスワード

Aster TSDB 時系列ストレージ​

プロパティデフォルト値置換説明
storage.db_typeCASSANDRA—DB 種類。テンプレート注釈に CASSANDRA/DSE/SCYLLADB が残っていますが、 現在サポートされている値は CASSANDRA のみ です
storage.db_version5.0—サーバーバージョンではなく«機能互換レベル» です — 以下の注記を参照
storage.host—${PP_CASSANDRA_HOST}contact point ホスト
storage.db_version が 5.0 なのに nodetool version は 6.0.0 と表示される

どちらも正解です。 同じものを指している値ではありません。

値内容
storage.db_version5.0ドライバが どの機能セットで通信するか を決定する互換レベル
実際の中継サーバー6.0.0apache-cassandra-timeseries-6.0.0.jar — cassandra-6.0 の社内フォーク

5.0 を見て「サーバーが 5.0 なのだな」と解釈しないでください。サーバー側の仕様は 時系列データベースに記載されています。 この値を任意に 6.0 へ上げないでください — ドライバの動作が変更されます。

| storage.port | 9042 | ${PP_STORAGE_PORT:9042} | native プロトコルポート | | storage.keyspace | — | ${PP_KEYSPACE} | 使用 keyspace | | storage.user | — | ${PP_CASSANDRA_USER} | 接続アカウント | | storage.password | cassandra | ${PP_STORAGE_PASSWORD:cassandra} | パスワード。PP_STORAGE_PASSWORD は env.sh で export されていないためデフォルト値が適用される | | storage.durable_writes | true | — | commit 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 書き込み(Aster TSDB 全体の約 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 shard 数
storage.table.compaction.strategy.ucs.max_sstables_to_compact61回に compaction する最大 sstable 数
storage.table.compaction.strategy.ucs.sstable_growth0.7UCS sstable 増加比率

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

プロパティデフォルト値置換説明
storage.compresion.zstd.level3—zstd 圧縮レベル (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.level3StorageConfig → CassandraCreateDAO
storage.internal.metastore.point.retation.daysstorage.internal.metastore.point.retention.days10StorageConfig → PointDAO
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_PLAINTEXT—Kafka セキュリティプロトコル
mq.ssl.truststore.location/var/security/plantpulse/master/master.truststore.p12—メッセージング TLS トラストストア (MQTT + 選択的 Kafka TLS)
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.enabledtrue—MQTT TLS 使用

MqConfig は上記のキー以外に Kafka 専用トラストストアオーバーライド mq.kafka.ssl.truststore.location / .password / .type と mq.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 を同時に決定します。


メール設定 (pp.mm_config)​

正本: PostgreSQL pp.mm_config · キー正本: plantpulse.core.config.MailConfigKeys. 読み取り側は SMTPMailSender.loadMailConfig() です。

🔴 PP_MAIL_* 環境変数も何も動作しません

AI と同様です — plantpulse-mail.properties と ${PP_MAIL_*} 置換層が 2026-09-17~18 に 廃止されました。 サイドカーや docker run -e で指定しても 静かに無視 されます。値はコンソールの 設定画面(/config/index) または pp.mm_config 表に入力してください。

設定キーデフォルト値説明
MAIL_SEND_ENABLEDfalseマスター送信ゲート。 OFF の場合は SMTP 接続せずにスキップし WARN のみ記録します
MAIL_SMTP_HOSTsmtp-relay.brevo.comSMTP リレーアドレス
MAIL_SMTP_PORT587587 = STARTTLS, 465 = 暗黙的 TLS(MAIL_SMTP_SSL_ENABLE と共に)
MAIL_SMTP_AUTHtrueSMTP ログイン有無。ON でも MAIL_SMTP_USER が空の場合はログインしません
MAIL_SMTP_USER(空値)SMTP アカウント。 リレーが発行した名前のため送信アドレスと異なる場合があります。 空で保存可能です
🔑 MAIL_SMTP_PASSWORD(空値)SMTP パスワードまたは API キー。 ログインが必要なリレーで空の場合、認証が拒否されます
MAIL_SMTP_STARTTLS_ENABLEtrue587 で STARTTLS に昇格させるか
MAIL_SMTP_SSL_ENABLEfalse465 のように最初から TLS で接続するか。 この場合 starttls は OFF にします
MAIL_SMTP_CONNECTIONTIMEOUT10000接続タイムアウト(ms)。 指定がない場合 JavaMail のデフォルト値は「無限待機」です
MAIL_SMTP_TIMEOUT10000読み取りタイムアウト(ms)。 〃
MAIL_SMTP_WRITETIMEOUT10000書き込みタイムアウト(ms)。 〃
MAIL_FROM(空値)送信アドレス。 空にすると MAIL_SMTP_USER を使用しますが、リレーアカウント名は通常有効なアドレスではなく 受信側で拒否される可能性があります — 実際のアドレスを記載してください
sms.sender.classplantpulse.core.service.support.alarm.sms.DefaultSMSSenderSMS 送信機実装 FQN。存在しないクラスを記載するとデフォルト実装に戻ります

TLS は 1.3 · 1.2 のみ使用し、サーバー証明書の名前を検証します。

デフォルト値に SMTP 資格情報が含まれなくなりました

MAIL_SMTP_USER · MAIL_SMTP_PASSWORD のデフォルト値は 空値 です。MAIL_SEND_ENABLED がデフォルト false であるため、運用者が有効にするまで送信を試行しません。

Gmail SMTP リレーでの送信​

Google Workspace の SMTP リレー(smtp-relay.gmail.com)は、送信サーバーの IP アドレスで許可 できます。この場合はアカウントがないため、ログインしない設定にします。まず Google 管理コンソールの SMTP リレー設定に、このサーバーが外部へ抜ける IP を登録してください。

設定キー値
MAIL_SEND_ENABLEDtrue
MAIL_SMTP_HOSTsmtp-relay.gmail.com
MAIL_SMTP_PORT587
MAIL_SMTP_AUTHfalse
MAIL_SMTP_USER(空にする)
MAIL_SMTP_STARTTLS_ENABLEtrue
MAIL_SMTP_SSL_ENABLEfalse
MAIL_FROMWorkspace ドメインの実際のアドレス

保存後、設定画面の 再適用 をクリックします。

アラームメール​

  • ヘッダーには製品ロゴがメール内に添付されます(CID インラインイメージ)。コンソールアドレスがなくても表示され、外部から取得するものもありません。
  • メールの位置行は サイトから 記載されます(サイト › 区域 › ライン › 設備、企業は含めません)。
  • «アラーム確認へ» リンクは PP_UI_CONSOLE_URL(<콘솔 주소>/alarm/view/<알람 번호>)です。空の場合、 メールはそのまま送信され リンクのみが除外されます — アドレス設定。
diagnostic.log.email は廃止されました

読み取るコードが一切なくなり、表から 削除 されました(製品テストがこのキーの再導入をブロックしています)。どこかに残っていても何も動作しません。


AI 設定 (pp.mm_config)​

正本: PostgreSQL pp.mm_config · キー正本: plantpulse.core.config.AiConfigKeys. 読み取り側は AiConfig(+ AiConfig.mcpSettings()) です。

🔴 PP_AI_* 環境変数は 何も動作しません

旧 plantpulse-ai.properties は 2026-09-17 に削除され、 そのファイルを読み取っていた経路と ${PP_AI_*} 置換層まで 2026-09-18 に共に廃止されました。 現在 PP_AI_OPENAI_ENABLED のような名前をサイドカーや docker run -e で指定しても 静かに無視されます — エラーも警告も出ません。

製品がこれらの名前を「念のため」に残さず削除した理由がここにあります。存在しながら無視される 名前は 存在しない名前よりも悪影響です。サーバーが設定されているように見えるためです。

値を設定する経路は2つのみです — コンソールの設定画面(/env), または pp.mm_config 表を直接修正すること。 行がないキーは以下表のデフォルト値で読み込まれ、値を入力した時点で実際に行が作成されます。

LLM ゲートウェイ​

プロパティデフォルト値説明
ai.llm.enabledfalseAI 全局スイッチ。 OFF の場合は AI 画面とエンドポイントがすべて閉じます
ai.llm.base.urlhttps://api.openai.comOpenAI 互換ゲートウェイ(LiteLLM/vLLM)。 末尾に / を付加しません
ai.llm.chat.path/v1/chat/completionsゲートウェイが異なるパスを使用する場合のみ変更します
ai.llm.responses.path/v1/responses〃
🔑 ai.llm.api.key(空値)ゲートウェイキー。 空の場合、呼び出しが 401 で拒否されます
ai.llm.modelgpt-5-miniゲートウェイが公開するモデル名。base.url を変更すれば これも共に 変更します
ai.llm.timeout.ms60000LLM 呼び出しタイムアウト(ms)
ai.llm.max.output.tokens4000応答最大トークン数
ai.llm.temperature-1負数ならリクエストから完全に除外 し、モデルのデフォルト値を使用します
旧名称 ai.openai.* はもはや読み取られません

接頭辞が ai.llm. に変更されました。pp.mm_config に ai.openai.base.url 行が残っていても 読み取るコードがなく、デフォルト値(https://api.openai.com)が使用されます — ゲートウェイを設定しているのに OpenAI へ接続しようとして失敗する 状態になります。アップグレードした環境では、これらの行を確認してください。

ai.llm.temperature はなぜ負数がデフォルトなのか

gpt-5 系列は temperature をサポートしておらず、デフォルト値 1 以外の値を送信すると 400 Unsupported value が 発生します。そのため「送信しない」ことを意味する負数をデフォルトとしています。LiteLLM/vLLM 以外の モデルを使用する場合のみ 0 以上に上げてください。

機能スイッチ​

🔴 デフォルト値が 2026-09-16 に変更されました。 画面に残った AI 機能は チャットのみ であり、それ以外は 製品側で停止しました。値を true に戻せば機能は復帰しますが、それらの画面はこの版で 検証 された状態ではありません。

プロパティデフォルト値説明
ai.chat.enabledtrueAI チャットコンソール — 画面に残った AI 機能はこれ一つです
ai.chat.history.ttl.days90チャット履歴保存(日)。Cassandra TTL として適用され、 再起動後の«新規»メッセージから 反映されます
ai.alarm.rca.enabledfalseアラーム RCA — ON にするとアラーム詳細に AI 原因分析が付随します
ai.alarm.eql.enabledfalseアラーム EQL アシスタント — ON にするとアラーム設定フォームに下書きボタンが付随します
ai.uns.topic.enabledfalseUNS トピック説明 — ON にすると UNS ツリーに説明パネルが付随します
ai.result.audit.enabledfalseAI 結果監査 — 画面のない RCA 内部部品。 RCA を ON にする際に共に ON にします
ai.similar.incident.enabledfalse類似障害エビデンス収集 — 〃
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​

🔴 MCP は ai.llm.enabled と«独立»しています。 画面ではなく 外部クライアント用 であるため、 ゲートウェイが停止していても /api/v5/mcp は開いています。詳細は MCP サーバーを参照してください。

プロパティデフォルト値説明
AI_MCP_ENABLEDtruefalse の場合 /api/v5/mcp が 404 を返します
AI_MCP_ALLOWED_ORIGINS(空値)ブラウザ Origin ホワイトリスト(カンマ区切り)。 空の場合はブラウザリクエストをすべて拒否 し、ネイティブクライアントのみ許可します
AI_MCP_TREE_MAX_NODES2000ツリー応答ノード上限 — モデルコンテキストウィンドウに依存する値のため、モデルが大きくなれば上げてください
AI_MCP_TREE_DEFAULT_DEPTH2ツリー照会デフォルト深度
AI_MCP_TREE_MAX_NODE_TAGS100ノード一つに掲載するタグ数上限
AI_MCP_TREE_ONTOLOGY_MAX_CHARS200000オントロジー応答文字数上限
AI_MCP_TREE_ONTOLOGY_DEFAULT_DEPTH3ツリーデフォルト深度より一段階深くなります — タグ数が掲載される設備ノードまで表示されることで「この設備タグ数個」をデフォルト応答として回答可能になります
AI_MCP_TREE_ONTOLOGY_MAX_TAGS500オントロジー応答 全体 のタグ行予算(ノード別上限とは別)。スリムタグ1件が約 85B となり、サイト全体を掲載するとコンテキストウィンドウの 33~56% を消費します

その他テンプレート​

template/ には上記の5種以外にもアプリケーション・インフラ設定テンプレートが存在します。デプロイパスのマッピング正本は ConfigTemplates.java です。

テンプレートデプロイパス用途
plantpulse-batch.properties/plantpulse-batch/config/バッチ(時系列同期/集計)
plantpulse-cep.properties/plantpulse-cep/config/CEP エンジン
plantpulse-jdbc.properties/plantpulse-data-gateway/config/JDBC 統合設定
plantpulse-data-gateway.properties/plantpulse-data-gateway/config/Data Gateway 動作
plantpulse-warehouse.properties/plantpulse-warehouse/config/Aster TSDB → Iceberg(S3) アーカイブ
plantpulse-datalake-admin-api.properties/plantpulse-datalake-admin-api/config/管理コンソール API · 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-websocket.properties も存在しません。 WebSocket/STOMP 系列の設定ファイルはありません。 template/cluster/ はワーカーノード専用オーバーライドです — master テンプレートを修正した場合、ここも同期させる必要があります。

plantpulse-batch.properties​

接続ブロック(プラットフォーム/メタストア/キャッシュ/TSE/Kafka/Aster TSDB/Spark)とバッチ動作設定で構成されます。接続キーは storage/jdbc と名前が異なるため注意してください — 例: Aster TSDB は 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_size100001回に空にする最大件数
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.backendasterブートするバックエンド (aster · flink)。それ以外の値はブート失敗 — バックエンド
cep.aster.state.enabledtrueAster CEP ルール状態(ウィンドウ · 集計 · 進行中パターン)を cache.* Redis に保存。キーは PP:CEP:ASTER-STATE:<문장>
cep.aster.state.snapshot_interval_ms60000スナップショット周期 — クラッシュ時に消失しうる最大状態。正常停止時は最終スナップショットを撮影して終了します
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_seconds60指標 Aster TSDB 保存周期
cep.api.key${PP_CEP_API_KEY}EQL 管理エンドポイント認証 (X-API-Key)
cep.api.max_eql_text_length100000EQL テキスト最大長 (DoS 防御)
cep.storage.request_timeout_seconds10Aster TSDB リクエストタイムアウト
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.stream.max_deliveries3この回数分だけ配信されても処理されなかったイベントのみデッドレターへ送る
cep.stream.dead_letter.retention_ms86400000デッドレター保存期間(24時間)
cep.stream.dead_letter.max_bytes268435456デッドレターバイト予算(256 MiB, シャード合計)。超過時はシャードごとに古いものから削除

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-datalake-admin-api.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} · 1Aster TSDB 接続
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/jmxrmiAster TSDB 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, Aster TSDB 7199, Spark 10010.

plantpulse-warehouse.properties​

Aster TSDB → 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-ARCHIVER-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_S3_BUCKET:-plantpulse}/spark-checkpoint/
ソース/ターゲットCASSANDRA_CATALOG · CASSANDRA_DATABASE · S3_BUCKET · ICEBERG_CATALOG · ICEBERG_DATABASEcassandra · ${PP_SCHEME:pp} · ${PP_S3_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
ウェブWEB_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.properties — plantpulse-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,controller, node.id=1, num.partitions=4, リスナ3種(SASL_PLAINTEXT/CONTROLLER/SASL_SSL), sasl.enabled.mechanisms=PLAIN, super.users=User:admin, allow.everyone.if.no.acl.found=false, log.dirs=${PP_DATA_DIR}/kafka/kraft_combined_logs, log.retention.ms=3600000(1時間), message.max.bytes=157286400, default.replication.factor=1, auto.create.topics.enable=true.

⚠️ log.retention.ms=3600000 = 1時間。 Kafka はバッファの役割であり、永続化は Aster TSDB/TSE が担うという前提です。コンシューマが 1 時間以上停止した場合、データが消失します。

プラグインテンプレート​

plantpulse-plugin-opcua.properties — PostgreSQL / Aster TSDB / 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.java の REGISTRY_PORT=4800, AAS_PORT=4801.


テンプレートにはないがコードが読み取るエンジンキー​

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.sec と edge.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 と明示しているため、デプロイ版でのみ有効になっています — これらの3行を削除すると DDS が静かに停止します。

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

プロパティコードデフォルト値
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 で有効にした場合のみ意味があります。

プロパティコードデフォルト値
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.* をファイルからpp.mm_config の1箇所(2026-09-17 移管, ファイルは削除)
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
pp.mm_config (メール)mail.smtp.password
pp.mm_config (AI)ai.llm.api.key — 旧名称 ai.openai.* のフォールバックは設けません
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-datalake-admin-api.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.sh が env.sh を source して即死し、デプロイが失敗します。

推奨される処置​

秘密情報は設定ファイルに記載しません。サイドカーファイル一つにまとめ、0600 とします。

ls -l /etc/kopens/plantpulse-platform.env # 비밀 — 0600, repo 밖
ls -l /etc/kopens/platform.node.env # 이 박스 고유 값 — 0600

# 값을 바꿀 때는 파일을 열지 말고 도구를 씁니다
cd /opt/kopens/plantpulse-platform-docker
bin/passwd.sh --list # 바꿀 수 있는 키
bin/passwd.sh PP_PG_PASSWORD # 서버 계정 변경 → 사이드카 → 재렌더 → 재시작

レンダリングされた設定ファイルには置換後の値が入るため、そのファイルをリポジトリにコミットしないでください。