跳到主要内容

属性参考

本文档由部署的实物配置模板(*.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 值替换的地方。

配置三阶段模型

阶段位置修改方法
全局配置plantpulse-startup/env.sh直接编辑后 ./configure.sh → 重启相关模块
站点覆盖plantpulse-startup/env.local.shenv.sh 全是 ${PP_VAR:-default} 形式,已导出的值占上风
模块配置各模块的 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 应用 classpath(WAR 内置默认值) — 回退

外部文件以 UTF-8 读取。外部配置正常加载时,启动日志输出:

Properties loaded from external conf: <absolute-path>

外部文件读取失败则记录 error 日志并回退到 classpath。

日志配置(log4j2.xml)也通过相同链外部化(自种子 — 外部文件不存在时,WAR 默认值首次复制到模块 config/log4j2.xml 后使用)。应用时启动日志输出 Logging reconfigured from external conf: <absolute-path>日志级别变更修改模块 config/log4j2.xml 后重启生效,WAR 重新部署后保留。详见配置和部署指南。

警告:勿直接修改 Web 应用内部文件(server/webapps/ROOT/WEB-INF/classes/ 等) — WAR 重新部署时消失。

${ENV:기본값} 替换发生两次

模板中的 ${PP_XXX} / ${PP_XXX:기본값} 标记在两个时点被解释。

时点主体动作
部署时configure.shTemplateProcessor.resolvePlaceholdersenv.sh 替换。顺序为 replacements map → 环境变量 → :기본값 → 原样保留。不支持嵌套 placeholder
运行时PropertiesUtils.resolveEnvPlaceholders加载的 Properties 的所有值再次解释 ${ENV_VAR[:default]}

即部署后留存的 ${...} 也可由进程环境变量填充。Docker -e VAR=... 注入优于模板默认值的原因在此。

env.sh 中不存在的 PP_* 变量(模板默认值直接应用)

以下变量由模板 ${PP_XXX:기본값} 引用,但 env.sh 不导出。无额外注入时,始终使用模板默认值。

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_* 故意不导出env.sh 注释所说的,导出环境变量会覆盖模板默认值(Brevo 中继 SSOT),曾发生过 SMTP 登录组合无声破损的事故(2026-07-22,陈旧的 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.parallelism256异步工作线程池并行度(总核心数 ~= 256)
engine.pipeline.threads36管道线程数
engine.pipeline.ratelimit40000管道每秒处理上限(速率限制)
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 服务器端口(自动按协议对齐: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_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() (故障安全)
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 硬删除。每 24 小时运行 1 次(启动 60s 后首次)
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}原生协议端口
storage.keyspace${PP_KEYSPACE}使用的 keyspace
storage.user${PP_CASSANDRA_USER}访问账户
storage.passwordcassandra${PP_STORAGE_PASSWORD:cassandra}密码。PP_STORAGE_PASSWORD 是 env.sh 未导出 → 应用默认值
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标签数据点行缓存 — ⚠️ 无读取代码

合并

属性基本值说明
storage.table.compaction.strategyUCS默认策略(TWCS:时间窗口,UCS:统一)。CassandraCreateDAO 读取(代码回退 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 大小(代码回退 100MiB)
storage.table.compaction.strategy.ucs.target_sstable_size512MiBUCS 目标 sstable 大小
storage.table.compaction.strategy.ucs.base_shard_count8UCS 基础分片数
storage.table.compaction.strategy.ucs.max_sstables_to_compact6一次合并最大 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 端口(代码回退 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 相关两个键改为 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 + 可选 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.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 日志并跳过(不尝试 SMTP)。站点选入
mail.smtp.hostsmtp-relay.brevo.com${PP_MAIL_SMTP_HOST:...}SMTP 主机
mail.smtp.port587${PP_MAIL_SMTP_PORT:587}SMTP 端口(25:明文,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 导出。本模板(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-minigpt-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 允许源列表
ai.chat.enabledfalse${PP_AI_CHAT_ENABLED:false}server-web 控制台 AI 聊天抽屉。ai.openai.* 网关须启用才能动作

其他模板

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 集成配置(两模块共享同一模板)
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.propertiesplantpulse-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.enabledtrue分发到 TSE
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.enabledtrue基于 Redis 的 HA 杀死开关(重启时保留部署/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线程存活
cep.async.shutdown_timeout_seconds30优雅关闭等待
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}⚠️ 明文 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单节点或集群 master
db_typeCASSANDRA监控对象 DB 类型
master / host${PP_MASTER_IP} / ${PP_HOST_IP}master / 自身主机
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 两个键。

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 ,部署版本中仅此时启用 — 删除这三行则 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 系列(合并节)
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 一处
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 classpath) — 调度器架构
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.sh source env.sh 时即死,部署失败。

建议措施

# 설정 파일 권한 제한
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

密钥不提交到库。