プロパティリファレンス
この文書は配布される実物設定テンプレート(
*.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.shがenv.sh値に置換する箇所である。
設定3段モデル
| 段階 | 位置 | 変更方法 |
|---|---|---|
| グローバル設定 | plantpulse-startup/env.sh | 直接編集後 ./configure.sh → 該当モジュール再起動 |
| サイトオーバーライド | plantpulse-startup/env.local.sh | env.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() である。
-Dpp.conf.dirシステムプロパティで指定したディレクトリ (定数PropertiesUtils.CONF_DIR_SYSTEM_PROPERTY = "pp.conf.dir")${catalina.base}/../config— モジュールのconfig/ディレクトリ- 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.sh → TemplateProcessor.resolvePlaceholders | env.sh に置換。順序は replacements map → 環境変数 → :기본값 → 原本維持。入れ子placeholderは未サポート |
| ランタイム | PropertiesUtils.resolveEnvPlaceholders | ロードしたPropertiesの すべての値に対して ${ENV_VAR[:default]} を再解釈 |
つまりデプロイ後に残っている ${...} もプロセスの環境変数で埋められうる。Docker -e VAR=... の注入がテンプレートデフォルト値より優先される理由である。
env.sh にない PP_* 変数 (テンプレートデフォルト値がそのまま適用される)
以下の変数はテンプレートが ${PP_XXX:기본값} として参照しているが、env.sh が export しない。 したがって別途の注入がなければ常にテンプレートデフォルト値が使われる。
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個である。
| # | テンプレート | 配布パス |
|---|---|---|
| 1 | plantpulse-engine.properties | /plantpulse-server/config/plantpulse-engine.properties |
| 2 | plantpulse-storage.properties | /plantpulse-server/config/plantpulse-storage.properties |
| 3 | plantpulse-mq.properties | /plantpulse-server/config/plantpulse-mq.properties |
| 4 | plantpulse-mail.properties | /plantpulse-server/config/plantpulse-mail.properties |
| 5 | plantpulse-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.minutes→plantpulse-engine.properties系統 (EngineConfigが読む)
plantpulse-engine.properties
パス: plantpulse-server/config/plantpulse-engine.properties · テンプレート: template/plantpulse-engine.properties
データ処理エンジンのコア動作を制御する。
非同期 / パイプライン
| プロパティ | デフォルト値 | 置換 | 説明 (テンプレートコメント) |
|---|---|---|---|
engine.async.parallelism | 256 | — | Async worker pool parallelism (total cores ~= 256) |
engine.pipeline.threads | 36 | — | パイプラインスレッド数 |
engine.pipeline.ratelimit | 40000 | — | パイプライン秒間処理上限 (rate limit) |
engine.pipeline.queue.size | 1200000 | — | パイプラインキューサイズ (バックプレッシャー限界) |
engine.pipeline.queue.o3.delay | 50 | — | 順序が乱れた(out-of-order)データの許容遅延 (ms) |
engine.pipeline.task.mode | SINGLE | — | タスク実行モード (SINGLE / PARALLEL) |
NTP
| プロパティ | デフォルト値 | 置換 | 説明 |
|---|---|---|---|
engine.ntpdate.server.ip | 127.0.0.1 | — | NTPサーバーIP |
engine.ntpdate.sync | false | — | ブート時にNTP同期を実行するか |
ストリーム / CEP
| プロパティ | デフォルト値 | 置換 | 説明 |
|---|---|---|---|
engine.stream.processor | DIRECT | — | ストリーム処理モード (DIRECT/BUFFERED) |
engine.cep.server.ip | 127.0.0.1 | ${PP_CEP_HOST:127.0.0.1} | CEPサーバーIP |
engine.cep.server.port | 7400 | ${PP_CEP_CONNECT_PORT:7400} | CEPサーバーポート (protocolに自動整列: http→7400, https→7401) |
engine.cep.server.protocol | http | ${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.ms | 5000 | — | メッセージ配信遅延警告 (ms) |
engine.streaming.messaging.timeout.ms | 10000 | — | メッセージ配信タイムアウト (ms) |
engine.streaming.messaging.timeout.store.type | FILE_QUEUE | — | タイムアウトメッセージの保存方式 (FILE_QUEUE/MEMORY) |
engine.streaming.messaging.timeout.recovery.type | DB | — | タイムアウトメッセージ復旧ソース (DB/FILE) |
ジョブワーカースレッド
| プロパティ | デフォルト値 | 置換 | 説明 |
|---|---|---|---|
engine.job.thread.asset | 8 | — | アセットジョブスレッド数 |
engine.job.thread.point | 8 | — | ポイントジョブスレッド数 |
DDS
| プロパティ | デフォルト値 | 置換 | 説明 |
|---|---|---|---|
engine.dds.enabled | true | — | DDSグローバル有効化 |
engine.dds.data.tag.enabled | true | — | タグデータDDS発行 |
engine.dds.data.asset.enabled | true | — | アセットデータDDS発行 |
異常検知 / データフロー
| プロパティ | デフォルト値 | 置換 | 説明 |
|---|---|---|---|
engine.data.anomaly.enabled | false | — | 異常検知有効化 (外部サービス連携) |
engine.data.anomaly.url | https://127.0.0.1:8970 | — | 異常検知サービスURL |
engine.dataflow.class | plantpulse.core.engine.pipeline.dataflow.BaseDataFlow | — | データフロー実装クラス |
engine.dataflow.server-timestamp.override | false | — | サーバータイムスタンプ強制有無 (true: 収集時刻、false: 原本) |
engine.dataflow.negative-timestamp.override | true | — | 負のタイムスタンプ補正有無 |
engine.factory.model.updater.class | plantpulse.core.engine.model.impl.DefaultFactoryMetaModelUpdater | — | ファクトリーメタモデルアップデーター |
engine.event.handler.class | plantpulse.core.engine.event.DefaultEventHanlder | — | イベントハンドラー実装 (クラス名誤記 Hanlder は実際のクラス名そのまま) |
engine.javagc.enabled | false | — | 明示的な System.gc() 呼び出しの許可有無 |
Flowエンジン
| プロパティ | デフォルト値 | 置換 | 説明 |
|---|---|---|---|
flow.debug.execution.log | false | — | ノード実行INFOログ。デバッグセッションのみtrue |
flow.stats.prune.interval.ms | 86400000 | — | カウンタークリーンアップ実行周期 (ms, 24時間)。Cassandraカウンターテーブルは default_time_to_live を使えないためアプリケーションレベルで整理 |
flow.stats.prune.hourly.days | 30 | — | tm_flow_stats_hourly の hour_bucket 保存日数 |
flow.stats.prune.daily.days | 90 | — | tm_flow_stats_daily の day_bucket 保存日数 |
flow.health.check.interval.ms | 600000 | — | Flowヘルスチェック周期 (ms, 10分)。現在時刻バケットのerrors > 0ならERROR、そうでなければNORMAL (KST基準) |
flow.webhook.api.key | dev-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.ms | 600000 | — | エッジヘルスチェック周期 (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.enabled | true | — | V5 API認証ブルートフォース防御 |
engine.api.v5.auth.bruteforce.ip_limit | 30 | — | IPあたりの試行制限 |
engine.api.v5.auth.bruteforce.user_limit | 10 | — | ユーザーあたりの試行制限 |
engine.api.v5.auth.bruteforce.window.seconds | 60 | — | カウントウィンドウ (秒) |
engine.api.v5.trusted_proxies | (空値) | — | 信頼プロキシIPホワイトリスト。設定時のみ remoteAddr がこのリストにあるとき X-Forwarded-For の最初のIPをクライアントIPとして使用。空なら getRemoteAddr() のみ使用(fail-safe) |
engine.session.bruteforce.enabled | true | — | /login/login ブラウザセッションブルートフォース防御 |
engine.session.bruteforce.ip_limit | 30 | — | IPあたりの試行制限 |
engine.session.bruteforce.user_limit | 10 | — | ユーザーあたりの試行制限 |
engine.session.bruteforce.window.seconds | 300 | — | カウントウィンドウ (秒) |
セッションブルートフォースカウンターはCaffeineインメモリである — マルチノード共有(Redis)は未実装。
APIトークン
| プロパティ | デフォルト値 | 置換 | 説明 |
|---|---|---|---|
engine.api.token.cleanup.enabled | true | — | 期限切れ(expires_at < now)/回収(revoked_at IS NOT NULL)トークン整理 |
engine.api.token.cleanup.retention_days | 30 | — | この期間経過後 mm_token でhard delete。毎24時間1回(起動60秒後に初回実行) |
engine.api.token.default_ttl_days | 90 | — | 新規トークン発行時の デフォルト 有効期限(日)。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.driver | org.postgresql.Driver | — | JDBCドライバークラス |
metastore.url | jdbc: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.enabled | false | — | キャッシュTLS。内部クライアントは redis:// デフォルト |
cache.ssl.truststore.location | /var/security/plantpulse/master/master.truststore.p12 | — | トラストストアパス |
cache.ssl.truststore.password | kopens123! | ${PP_TLS_TRUSTSTORE_PASSWORD:kopens123!} | トラストストアパスワード |
cache.ssl.truststore.type | PKCS12 | — | トラストストアタイプ |
cache.ssl.endpoint.identification.enabled | false | — | エンドポイント識別検証 |
キー定数の正本は plantpulse-inmemory の InMemoryConfigKeys である。
TSE (TimeSeries Engine)
| プロパティ | デフォルト値 | 置換 | 説明 |
|---|---|---|---|
tse.protocol | http | ${PP_TSE_PROTOCOL:http} | TSEプロトコル。内部通信のため平文httpがデフォルト (2026-08) |
tse.host | — | ${PP_TSE_HOST} | TSEホスト |
tse.port | 7800 | ${PP_TSE_CONNECT_PORT:7800} | TSEポート。平文リスナー7800がデフォルト |
tse.user | tse | ${PP_TSE_USER:tse} | TSEアカウント |
tse.password | tse123! | ${PP_TSE_PASSWORD:tse123!} | TSEパスワード |
Cassandra時系列ストレージ
| プロパティ | デフォルト値 | 置換 | 説明 |
|---|---|---|---|
storage.db_type | CASSANDRA | — | DB種類 (テンプレートコメントはCASSANDRA/DSE/SCYLLADBのまま残っているが現在はCassandra 5.0専用) |
storage.db_version | 5.0 | — | DBバージョン (ドライバ/機能互換性を決定) |
storage.host | — | ${PP_CASSANDRA_HOST} | contact pointホスト |
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.ttl | 62 | タグ時系列原本 |
storage.tag.point.map.ttl | 1 | タグポイントマップ |
storage.tag.point.sampling.ttl | 93 | タグサンプリング |
storage.tag.point.snapshot.ttl | 93 | タグスナップショット |
storage.tag.point.aggregation.ttl | 93 | タグ集計 |
storage.tag.point.archive.ttl | 365 | タグアーカイブ (長期保存) |
storage.tag.blob.ttl | 93 | タグBLOB |
storage.asset.data.ttl | 10 | アセットデータ |
storage.asset.data.sampling.ttl | 31 | アセットサンプリング |
アセットスナップショット周期
| プロパティ | デフォルト値 | 説明 |
|---|---|---|
storage.asset.data.snapshot.interval | 10 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.enabled | false | 内部メタストア同期有効化 |
storage.internal.metastore.thread.count | 4 | 同期ワーカースレッド数 |
storage.internal.metastore.queue.size | 12000000 | 同期キューサイズ |
storage.internal.metastore.point.retation.days | 10 | ポイント保存日数 (⚠️ 誤記キー — 下記参照) |
行キャッシュ
| プロパティ | デフォルト値 | 説明 |
|---|---|---|
storage.asset.data.row.cache.size | NONE | アセットデータ行キャッシュ (NONE/ROWS_ONLY/ALL) — ⚠️ 読むコードなし |
storage.tag.point.row.cache.size | NONE | タグポイント行キャッシュ — ⚠️ 読むコードなし |
Compaction
| プロパティ | デフォルト値 | 説明 |
|---|---|---|
storage.table.compaction.strategy | UCS | デフォルト戦略 (TWCS: TimeWindow, UCS: Unified)。CassandraCreateDAO が読む(コードfallbackは TWCS) |
storage.table.compaction.strategy.twcs.window_size | 1 | TWCSウィンドウサイズ — ⚠️ 読むコードなし |
storage.table.compaction.strategy.twcs.window_unit | DAYS | TWCSウィンドウ単位 — ⚠️ 読むコードなし |
storage.table.compaction.strategy.ucs.scailing_parameter | T8 | UCSスケーリングパラメータ (T8 = tiered 8 levels)。キー綴り scailing はコードと一致 |
storage.table.compaction.strategy.ucs.min_sstable_size | 128MiB | UCS最小sstableサイズ (コードfallback 100MiB) |
storage.table.compaction.strategy.ucs.target_sstable_size | 512MiB | UCS目標sstableサイズ |
storage.table.compaction.strategy.ucs.base_shard_count | 8 | UCS baseシャード数 |
storage.table.compaction.strategy.ucs.max_sstables_to_compact | 6 | 一度にcompactionする最大sstable数 |
storage.table.compaction.strategy.ucs.sstable_growth | 0.7 | UCS sstable増加比率 |
圧縮 / クエリ上限 / バックアップ / Data Gateway
| プロパティ | デフォルト値 | 置換 | 説明 |
|---|---|---|---|
storage.compresion.zstd.level | 3 | — | zstd圧縮レベル (1~22) — ⚠️ 誤記キー、下記参照 |
storage.tag.point.select.limit.size | 1000000 | — | 単一タグポイントselect最大行数 |
storage.doamin.model.changed.to.metastore.backup | true | — | ドメインモデル変更時のメタストアバックアップ — ⚠️ 誤記キー + 読むコードなし |
data.gateway.protocol | http | ${PP_DATA_GATEWAY_PROTOCOL:http} | Data Gatewayプロトコル |
data.gateway.host | 127.0.0.1 | ${PP_DATA_GATEWAY_HOST:127.0.0.1} | Data Gatewayホスト (ローカル同居前提) |
data.gateway.port | 5500 | ${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.level | storage.compression.zstd.level | 3 | StorageConfig → CassandraCreateDAO |
storage.internal.metastore.point.retation.days | storage.internal.metastore.point.retention.days | 10 | StorageConfig → PointDAO |
storage.doamin.model.changed.to.metastore.backup | なし (正しい綴りでも読むコードがない) | — | — |
値を実際に変えるにはコード綴りのキーを同じファイルに追加せよ。 例えばzstdレベルを6に上げるには
storage.compression.zstd.level=6を入れる必要がある(誤記キーを直すのではなく 正しい綴りの行を追加する)。誤記行は残しても無害だが、テンプレート自体を直す方が根本解決である。
storage.doamin.model.changed.to.metastore.backupはどちらの綴りでも読むコードがない。ドメインモデル変更時のバックアップはこのキーではなくMetastoreBackupDeployer(cron0 0 12 1 1/1 ? *、毎月1日12:00)が担当する — スケジューラーアーキテクチャ参照。
テンプレートにはないがコードが読むstorageキー
| プロパティ | コードデフォルト値 | 説明 |
|---|---|---|
storage.compression.zstd.type | ZstdCompressor | 圧縮器クラス名 |
読むコードがない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.port | 9092 | ${PP_KAFKA_PORT:9092} | Kafkaポート |
mq.kafka.security.protocol | SASL_PLAINTEXT | — | Kafkaセキュリティプロトコル |
mq.ssl.truststore.location | /var/security/plantpulse/master/master.truststore.p12 | — | メッセージングTLSトラストストア (MQTT + 選択的KafkaTLS) |
mq.ssl.truststore.password | kopens123! | ${PP_TLS_TRUSTSTORE_PASSWORD:kopens123!} | トラストストアパスワード |
mq.ssl.truststore.type | PKCS12 | — | トラストストアタイプ |
mq.ssl.endpoint.identification.algorithm | (空値) | — | ホスト名検証アルゴリズム (空値 = 検証しない) |
mq.mqtt.port | — | ${PP_MQTT_TLS_PORT} | MQTT接続ポート |
mq.mqtt.ssl.enabled | true | — | 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を同時に決定する。
plantpulse-mail.properties
パス: plantpulse-server/config/plantpulse-mail.properties · テンプレート: template/plantpulse-mail.properties
アラーム/レポート送信用SMTP・SMS設定である。
| プロパティ | デフォルト値 | 置換 | 説明 |
|---|---|---|---|
mail.send.enabled | false | ${PP_MAIL_SEND_ENABLED:false} | マスター送信ゲート。 true でなければすべてのメール送信がWARNログのみ残してskipされる(SMTP試行自体をしない)。サイト別opt-in |
mail.smtp.host | smtp-relay.brevo.com | ${PP_MAIL_SMTP_HOST:...} | SMTPホスト |
mail.smtp.port | 587 | ${PP_MAIL_SMTP_PORT:587} | SMTPポート (25:plain, 465:SSL, 587:STARTTLS) |
mail.smtp.auth | true | ${PP_MAIL_SMTP_AUTH:true} | SMTP認証使用有無 |
mail.smtp.user | b2df89001@smtp-brevo.com | ${PP_MAIL_SMTP_USER:...} | SMTP送信元アカウント |
mail.smtp.password | bskHIVJqcFQaFtb | ${PP_MAIL_SMTP_PASSWORD:...} | SMTPパスワード (dev デフォルト値 — 納品時に交換) |
mail.smtp.starttls.enable | true | ${PP_MAIL_SMTP_STARTTLS:true} | STARTTLS使用有無 |
sms.sender.class | plantpulse.cep.listener.alarm.sms.DefaultSMSSender | — | SMS送信実装クラス (CEPリスナー) |
diagnostic.log.email | diag@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.enabled | false | ${PP_AI_OPENAI_ENABLED:false} | マスター機能フラグ。 falseならAI UI・エンドポイントが隠され無効化される |
ai.openai.base.url | https://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.model | gpt-5-mini | ${PP_AI_OPENAI_MODEL:gpt-5-mini} | LiteLLM config.yaml が公開するモデル名 |
ai.openai.timeout.ms | 15000 | — | リクエストタイムアウト (ms) |
ai.openai.max.output.tokens | 1200 | — | 最大出力トークン |
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.enabled | true | アラーム根本原因分析 |
ai.alarm.eql.enabled | true | アラームEQL補助 |
ai.uns.topic.enabled | true | UNSトピックアシスト |
ai.result.audit.enabled | true | AI結果監査 |
ai.similar.incident.enabled | true | 類似障害事例推薦 |
ai.similar.incident.max.items | 5 | 推薦最大件数 |
ai.similar.incident.min.score | 40 | 推薦最低スコア |
ai.diagnostic.summary.* 3個(診断ログAI要約)と ai.operations.report.* 3個(AI運用
レポート)は 2026-08-25に製品から削除されました。画面・JS・コントローラーまで一緒に取り除いたため
値を戻しても機能は復活しません。
アップグレード前の設定ファイルにこれらのキーが残っていても害にはなりません — 読むコードがなく そのまま無視されます。整理したければ削除しても構いません。
MCP / チャット
| プロパティ | デフォルト値 | 置換 | 説明 |
|---|---|---|---|
ai.mcp.enabled | true | ${PP_AI_MCP_ENABLED:true} | MCP (AI chat-opsエンドポイント) |
ai.mcp.allowed.origins | (空値) | ${PP_AI_MCP_ALLOWED_ORIGINS:} | MCP許可Originリスト |
ai.chat.enabled | false | ${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.properties | Kafka(KRaft)ブローカー |
kafka-jaas.conf | /plantpulse-messaging/kafka/config/jaas.conf | Kafka JAAS |
hivemq.xml | /plantpulse-messaging/mqtt/conf/config.xml | HiveMQブローカー |
plantpulse-mq-auth.properties | /plantpulse-messaging/mqtt/conf/auth.properties | HiveMQ認証ソース |
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.port | 9092 | Kafkaポート (リテラル — 置換ではない) |
kafka.topic | pp-batch | バッチ入力トピック |
kafka.group.id | PP-BATCH-GROUP | バッチコンシューマーグループ |
batch.timer_schedule_delay | 5000 | バッチタイマー周期 (ms) |
batch.thread_pool_batch_thread_size | 4 | バッチワーカースレッド数 |
batch.buffer_drain_limit_size | 10000 | 一度に空ける最大件数 |
batch.sync.inmemory.enabled | false | インメモリ同期 |
batch.sync.inmemory.ttl.minute | 10 | インメモリ同期TTL (分) |
batch.sync.tse.enabled | true | TSEへ分配 |
batch.sync.external.db.enabled | false | 外部DB同期 |
external.db.name | TIMESCALEDB | 外部DB種類。INFLUXDB/QUESTDBブロックはテンプレートにコメント状態で存在する |
analytics.url | jdbc:spark://${PP_SPARK_HOST}:${PP_KYUUBI_PORT}/default | Spark Thrift JDBC |
plantpulse-cep.properties
| プロパティ | デフォルト値 | 説明 |
|---|---|---|
cep.ha.enabled | true | Redisベースのハイアベイラビリティキルスイッチ (再起動時にデプロイメント/named window/単一キーテーブル状態を保持) |
cep.ha.snapshot.interval_ms | 1000 | スナップショット周期 (イベントスレッド非ブロッキングバックグラウンド) |
cep.ha.snapshot.named_windows | true | named windowスナップショット |
cep.ha.snapshot.tables | true | テーブルスナップショット |
cep.async.core_pool_size | 32 | 非同期コアプール |
cep.async.max_pool_size | 256 | 非同期最大プール |
cep.async.queue_capacity | 50000 | 非同期キュー |
cep.async.keep_alive_seconds | 60 | スレッドkeep-alive |
cep.async.shutdown_timeout_seconds | 30 | graceful shutdown待機 |
cep.consumer.thread_count | 16 | コンシューマースレッド |
cep.stream.shard_count | 16 | ストリームシャード数 |
cep.stream.drain_limit_size | 1000 | ドレイン上限 |
cep.stream.drain_warn_ms | 1000 | ドレイン警告 (ms) |
cep.monitor.initial_delay_seconds | 5 | モニター初回遅延 |
cep.monitor.interval_seconds | 1 | モニター周期 |
cep.monitor.store_interval_seconds | 60 | EQL文別メトリクスCassandra保存周期 |
cep.monitor.statement_metrics_enabled | true | 文別メトリクス収集 |
cep.performance.cpu_warn_threshold_ns | 1000000000 | CPU警告閾値 (ns) |
cep.performance.wall_warn_threshold_ns | 1000000000 | wall警告閾値 (ns) |
cep.api.key | ${PP_CEP_API_KEY} | EQL管理エンドポイント認証 (X-API-Key) |
cep.api.max_eql_text_length | 100000 | EQLテキスト最大長 (DoS防御) |
cep.storage.request_timeout_seconds | 10 | Cassandraリクエストタイムアウト |
cep.storage.max_inflight_writes | 256 | インフライト書き込み上限 |
cep.storage.connect_max_retries | 3 | 接続再試行 |
cep.storage.ttl_seconds | 864000 | メトリクスTTL (秒, 10日) |
cep.stream.pending_idle_threshold_ms | 60000 | pendingアイドル閾値 |
cep.stream.cleaner_initial_delay_ms | 60000 | クリーナー初回遅延 |
cep.stream.cleaner_interval_ms | 10000 | クリーナー周期 |
cep.stream.max_clean_duration_ms | 30000 | クリーン最大所要時間 |
cep.stream.cleaner_max_claim_count | 5000 | クレーム最大件数 |
cep.stream.ack_chunk_size | 500 | ACKチャンクサイズ |
cep.monitor.store_interval_seconds の 60 には根拠がある — 文の数(資産×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.driver | org.postgresql.Driver | META / PQL |
jdbc.postgres.url | jdbc:postgresql://${PP_POSTGRES_HOST}:${PP_POSTGRES_PORT}/${PP_DB_NAME}?characterEncoding=UTF-8 | |
jdbc.cassandra.driver | plantpulse.cassandra.jdbc.CassandraDriver | OLTP時系列(CQL)。ドライバー値は設定一貫性用(機能上未使用) |
jdbc.cassandra.url | jdbc:cassandra://${PP_CASSANDRA_HOST}:${PP_CASSANDRA_PORT}/${PP_SCHEME} | |
jdbc.tse.driver | plantpulse.timeseries.tql.TQLDriver | OTAP / TQL |
jdbc.tse.url | jdbc:ts://${PP_TSE_HOST}:${PP_TSE_PORT}/${PP_SCHEME} | ⚠️ plain http(ts/7800)固定 |
jdbc.spark.driver | plantpulse.spark.jdbc.SparkSQLDriver | OLAP分析 |
jdbc.spark.url | jdbc: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.limit | 1000 | 秒間最大リクエスト数 (IP + APIキー基準) |
data.gateway.slow.query.ms | 10000 | 低速照会警告閾値 (ms) |
data.gateway.slow.update.ms | 2000 | 低速更新警告閾値 (ms) |
data.gateway.async.timeout.ms | 60000 | 非同期タイムアウト (ms) |
plantpulse-monitor.properties
単一ノード(type=MASTER)基準の各サービスのJMX/管理エンドポイント集合である。キーにドット(.)ではなくアンダースコア(_) を使う唯一のファイルである。
| プロパティ | デフォルト値 | 説明 |
|---|---|---|
type | MASTER | 単一ノードまたはクラスターマスター |
db_type | CASSANDRA | 監視対象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} · 1 | Cassandra接続 |
tse_host · tse_port · tse_protocol · tse_username · tse_password | ${PP_TSE_*} · 7801 · https · tse · tse123! | TSE接続(メトリクス積載) |
kafka_jmx_uri | service:jmx:rmi:///jndi/rmi://${PP_KAFKA_HOST}:7299/jmxrmi | Kafka JMX |
mqtt_jmx_uri | ...://${PP_MQTT_HOST}:7279/jmxrmi | HiveMQ JMX |
cep_jmx_uri | ...://${PP_HOST_IP}:6499/jmxrmi | CEP JMX |
datagateway_jmx_uri | ...://${PP_HOST_IP}:7499/jmxrmi | Data Gateway JMX |
sql_jmx_uri | ...://${PP_HOST_IP}:7599/jmxrmi | SQL JMX |
tse_jmx_uri | ...://${PP_HOST_IP}:7899/jmxrmi | TSE JMX |
cassandra_jmx_uri | ...://${PP_CASSANDRA_HOST}:7199/jmxrmi | Cassandra JMX |
spark_jmx_uri | ...://${PP_SPARK_HOST}:10010/jmxrmi | Spark JMX |
redis_jmx_uri | redis://${PP_REDIS_HOST}:${PP_REDIS_PORT}?password=... | Valkey接続URI |
redis_ssl_truststore_location / _password / _type / redis_ssl_endpoint_identification_enabled | p12 · ${PP_TLS_TRUSTSTORE_PASSWORD:kopens123!} · PKCS12 · false | Valkey TLS |
postgres_jmx_uri | jdbc: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) である。
| グループ | 主要キー | デフォルト値 |
|---|---|---|
| Temporal | TEMPORAL_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 · TIMEZONE | 2 · 20 · 0(日曜日) · 3 · 0 · ${PP_TZ} |
| 実行モード | ARCHIVER_MODE | SHELL (または KESTRA) |
| Kestra | KESTRA_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 |
| Spark | SPARK_APP_NAME · SPARK_MASTER · SPARK_JAR_PATH · SPARK_DRIVER_MEMORY · SPARK_EXECUTOR_MEMORY · SPARK_EXECUTOR_CORES · SPARK_NUM_EXECUTORS · ARCHIVER_PARALLELISM · SPARK_CHECKPOINT_DIR | PP-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_DATABASE | cassandra · ${PP_SCHEME:pp} · ${PP_MINIO_BUCKET:-plantpulse} · spark_catalog · ${PP_SCHEME:pp} |
| 最適化 | SNAPSHOT_RETENTION_DAYS · OPTIMIZER_MIN_INPUT_FILES · OPTIMIZER_TARGET_FILE_SIZE_BYTES | 3 · 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_SECONDS | 12/12/12 · 8/7/12 · 3 · 12 · 8 · 21600(6h) · 25200(7h) · 60 |
| Web | WEB_SERVER_PORT | 9600 |
メッセージング / 認証ソーステンプレート
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_port | 8888 |
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はバッファ役割であり、永続化はCassandra/TSEが担う前提である。コンシューマーが1時間以上停止するとデータが失われる。
プラグインテンプレート
plantpulse-plugin-opcua.properties — PostgreSQL / Cassandra / Valkey / Kafka接続 + OPC UAサーバーエンドポイント。
| プロパティ | デフォルト値 | 説明 |
|---|---|---|
kafka.topic | pp-tag-point | ⚠️ リテラル — ${PP_TOPIC_PREFIX} 置換ではない |
kafka.thread · kafka.group.id | 8 · opcua-plugin-group | |
opc.ua.server.domain · opc.ua.server.port | ${PP_HOST_IP} · 8007 | |
opc.ua.server.user · password · anonymous | opcua · 설치-시-변경 · false | |
opc.ua.server.tcp.port · tls.port | ${PP_OPCUA_TCP_PORT:11004} · ${PP_OPCUA_TLS_PORT:11005} | |
redis.thread · redis.ssl.enabled | 4 · 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.count | 8 · 1000 | |
group.id · auto.offset.reset · enable.auto.commit | pp-plugin-aas-server · earliest · false | |
session.timeout.ms · auto.commit.interval.ms | 30000 · 1000 | |
plugin.message.listener | plantpulse.plugin.opcua.messaging.KafkaPluginMessageListener |
BaSyx V2のregistry/AASポートは設定ではなくコードハードコーディングである —
AASServer.javaのREGISTRY_PORT=4800、AAS_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.sec | 60 |
edge.clock.skew.threshold.ms | 10000 |
edge.clock.rtt.max.ms | 2000 |
edge.clock.autosync.enabled | true |
edge.clock.autosync.cooldown.ms | 600000 |
edge.clock.warn.cooldown.ms | 600000 |
edge.clock.skip.warn.count | 5 |
edge.status.poll.seconds | 30 |
edge.status.poll.jitter.max.ms | 3000 |
edge.clock.poll.term.sec と edge.status.poll.seconds はスケジューラージョブ周期を決定する — 値制約はスケジューラーアーキテクチャのEdge節参照。
DDS / イベントバス / プッシュ / バッファ
| プロパティ | コードデフォルト値 |
|---|---|
engine.dds.queue.size | 80000 |
engine.dds.worker.threads | 4 |
engine.dds.latency.warn.ms | 1000 |
engine.eventbus.queue.capacity | 65536 |
engine.push.threads | 4 |
engine.push.queue.size | 10000 |
engine.storage.buffer.type | KAFKA |
engine.streaming.timeout.backup.queue.capacity | 12000000 |
engine.dds.enabled·engine.dds.data.tag.enabled·engine.dds.data.asset.enabledの コードデフォルト値はfalseである。テンプレートがtrueと明示しているため、配布版でのみONになっている — この3行を削除するとDDSが静かにOFFになる。
ジョブスレッド (テンプレート未記載分)
| プロパティ | コードデフォルト値 |
|---|---|
engine.job.thread.oee | 10 |
engine.job.thread.ram | 5 |
engine.job.thread.ems | 5 |
engine.job.thread.system | 4 |
engine.job.asset.slow.threshold.ms | 20000 |
⚠️
engine.job.thread.pointのコードデフォルト値は4だがテンプレートは8である(engine.job.thread.assetは両方8で一致)。テンプレート行を削除すると値が半分に落ちる。
Flowエンジン (テンプレート未記載分)
| プロパティ | コードデフォルト値 |
|---|---|
flow.engine.enabled | true |
flow.executor.parallelism | 64 |
flow.executor.queue.capacity | 10000 |
flow.executor.queue.size | 10000 |
flow.executor.poll.timeout.ms | 50 |
flow.scheduler.pool.size | 4 |
flow.timer.pool.size | 2 |
flow.jdbc.trigger.pool.size | 2 |
flow.shutdown.timeout.sec | 5 |
flow.enabled.cache.ttl.ms | 5000 |
flow.webhook.auth.enabled | true |
アラーム / ISO指標 / OEE
| プロパティ | コードデフォルト値 |
|---|---|
alarm.duplicate.check.minutes | 10 |
engine.oee.debounce.ms | 100 |
iso.oee.rolling.window.minutes | 10 |
iso.ems.rolling.window.minutes | 10 |
iso.ram.rolling.window.minutes | 1440 |
異常検知詳細 (アセットポイント / システム)
engine.data.anomaly.enabled=true でONにしたときのみ意味を持つ。
| プロパティ | コードデフォルト値 |
|---|---|
engine.data.anomaly.asset.point.interval | MINUTE |
engine.data.anomaly.asset.point.lookback.minutes | 14400 |
engine.data.anomaly.asset.point.recent.seconds | 600 |
engine.data.anomaly.asset.point.limit | 2100 |
engine.data.anomaly.asset.point.context.length | 2048 |
engine.data.anomaly.asset.point.prediction.length | 96 |
engine.data.anomaly.asset.point.score.history | 60 |
engine.data.anomaly.asset.point.threshold.k | 3.5 |
engine.data.anomaly.asset.point.threshold.min | 0.80 |
engine.data.anomaly.asset.point.threshold.max | 0.98 |
engine.data.anomaly.asset.point.topk.request | 5 |
engine.data.anomaly.asset.point.topn.report | 5 |
engine.data.anomaly.system.lookback.minutes | 1440 |
engine.data.anomaly.system.recent.seconds | 60 |
engine.data.anomaly.system.limit | 2100 |
engine.data.anomaly.system.context.length | 2048 |
engine.data.anomaly.system.pred.length | 96 |
engine.data.anomaly.system.threshold.min | 0.80 |
engine.data.anomaly.system.topk | 2 |
存在しない設定
下記の名前は過去の文書・外部資料に登場するがテンプレートにもコードにもない。 この名前で設定を追加しても何の効果もない。
| 探していたもの | 実際の位置 |
|---|---|
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 / .algorithm | storage.compression.zstd.level / storage.compression.zstd.type (テンプレート行は誤記 — 誤記キー警告) |
storage.compaction.enable / .schedule | storage.table.compaction.strategy 系統 (Compaction節) |
storage.metastore.* / storage.cache.* | なし |
mq.type / mq.kafka.bootstrap.servers / mq.kafka.group.id | mq.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.server | engine.ntpdate.sync / engine.ntpdate.server.ip |
engine.cep.enable / engine.cep.host / engine.cep.port | engine.cep.server.ip / engine.cep.server.port / engine.cep.server.protocol |
engine.anomaly.* | engine.data.anomaly.* |
engine.dds.enable / engine.dds.topic.prefix | engine.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.properties | metastore.password · cache.password · cache.ssl.truststore.password · storage.password · tse.password · data.gateway.api.key |
plantpulse-engine.properties | api.key · flow.webhook.api.key · engine.cep.server.api.key |
plantpulse-mq.properties | mq.password · mq.ssl.truststore.password |
plantpulse-mail.properties | mail.smtp.password |
plantpulse-ai.properties | ai.openai.api.key |
plantpulse-cep.properties | cache.password · storage.password · cep.api.key |
plantpulse-batch.properties | metastore.password · cache.password · tse.password · mq.password · storage.db.password · analytics.password · external.db.password |
plantpulse-jdbc.properties | cache.password · jdbc.postgres.password · jdbc.cassandra.password · jdbc.tse.password · jdbc.spark.password · data.gateway.api.key |
plantpulse-data-gateway.properties | data.gateway.api.key |
plantpulse-monitor.properties | db_password · tse_password · redis_jmx_uri(URL内password) · redis_ssl_truststore_password · postgres_jmx_uri(URL内password) |
plantpulse-mqtt.properties · plantpulse-mq-auth.properties | mqtt.password |
plantpulse-plugin-opcua.properties | postgres.password · cassandra.password · redis.password · kafka.password · opc.ua.server.password |
plantpulse-plugin-aas.properties | aas.db.password · cassandra.password · kafka.password |
kafka.properties | ssl.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する際に即死しデプロイが失敗する。
推奨措置
# 설정 파일 권한 제한
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
シークレットはリポジトリにコミットしない。