plantpulse-data-gateway (数据网关)
角色
外部系统和控制台安全查询数据的 HTTP REST + JDBC 网关。不直接连接存储库,只能通过此网关访问,是安全、权限和审计层。自 2026-09-07 起,也是控制台的 SQL 执行界面。
| 项目 | 值 |
|---|---|
| 模块名 | plantpulse-data-gateway |
| 安装路径 | /opt/kopens/plantpulse-platform/plantpulse-data-gateway/ |
| 端口 | 5500(HTTP)· 5501(TLS) |
pd 服务 | data-gateway — 仅 MASTER |
| API 认证 | X-API-Key: <PP_DATA_GATEWAY_API_KEY> |
| 控制台登录 | PP_DATA_GATEWAY_WEB_USER / PP_DATA_GATEWAY_WEB_PASSWORD — 为空则仅关闭控制台 |
架构
通过 JDBC 连接四个后端 — 因此在控制台一个界面中使用 SQL、CQL、TQL、Spark SQL。
目录结构
plantpulse-data-gateway/
├── config/ # 생성물
│ ├── plantpulse-jdbc.properties # ← plantpulse-jdbc.properties.template — 백엔드 접속과 계정
│ └── plantpulse-data-gateway.properties # ← plantpulse-data-gateway.properties.template — 제한 · 타임아웃
├── bin/start.sh stop.sh
└── server/ # 내장 Tomcat — webapps/ROOT.war · logs/
核心配置
plantpulse-jdbc.properties.template 的关键部分 — 所有后端网络和凭证都在此渲染。
jdbc.postgres.url = jdbc:postgresql://${PP_POSTGRES_HOST}:${PP_POSTGRES_PORT}/${PP_DB_NAME}
jdbc.cassandra.url = jdbc:cassandra://${PP_CASSANDRA_HOST}:${PP_CASSANDRA_PORT}/${PP_SCHEME}
jdbc.tse.url = jdbc:ts://${PP_TSE_HOST}:${PP_TSE_PORT}/${PP_SCHEME}
jdbc.spark.url = jdbc:spark://${PP_SPARK_HOST}:${PP_KYUUBI_PORT}/default/${PP_SCHEME}
data.gateway.api.key = ${PP_DATA_GATEWAY_API_KEY} # X-API-Key
data.gateway.web.user = ${PP_DATA_GATEWAY_WEB_USER} # 콘솔 로그인
data.gateway.web.password = ${PP_DATA_GATEWAY_WEB_PASSWORD}
plantpulse-data-gateway.properties.template — 运维限制:
data.gateway.rate.limit=1000 # 초당 요청
data.gateway.slow.query.ms=10000 # 이보다 느리면 슬로우 로그
data.gateway.async.timeout.ms=60000
SQL 控制台
通过 https://<server-ip>:5501/ 打开,用 PP_DATA_GATEWAY_WEB_USER / PP_DATA_GATEWAY_WEB_PASSWORD 登录。在管理控制台的工具屏幕中有 Data Gateway 卡片。旧版 plantpulse-sql 的 SQL 工具已并入此处 → plantpulse-sql(已弃用)
若密码为空,登录表单将拒绝访问。在 sidecar 中配置后重启 → Web 界面登录账户
主要 API
# 표준 헬스체크 (익명, readiness — DB · InMemory · QueryLog 정상 시에만 UP. 이 경로만 HTTPS 강제 제외)
curl -fsS http://127.0.0.1:5500/api/health
# 200 {"status":"UP","service":"plantpulse-data-gateway-web",…,"checks":{"database":true,"inmemory":true,"query_log":true}}
# 태그 시계열 조회 (API 키 필요)
curl -fsS -H "X-API-Key: ${PP_DATA_GATEWAY_API_KEY}" \
"http://127.0.0.1:5500/api/v1/tags/TAG_001/values?from=2026-05-30T00:00:00Z&to=2026-05-30T23:59:59Z&limit=10000"
# QPS · 지연 메트릭
curl -fsS -H "X-API-Key: ${PP_DATA_GATEWAY_API_KEY}" http://127.0.0.1:5500/api/v1/metrics
运维命令
docker exec plantpulse-datalake pd status data-gateway
docker exec plantpulse-datalake pd restart data-gateway
docker exec plantpulse-datalake pd logs --lines 100 data-gateway
常见问题
| 现象 | 原因 | 处理 |
|---|---|---|
| 403 / 401 | API 密钥不匹配 | passwd.sh PP_DATA_GATEWAY_API_KEY — 服务器和网关一起 |
| 控制台登录被拒 | PP_DATA_GATEWAY_WEB_PASSWORD 为空 | sidecar + restart-datalake.sh |
| 仅 Spark SQL 不工作 | Kyuubi 未启动 | pd status analytics — 启动直后则等待 1 分钟 |
| 响应缓慢 | 后端负载过高 | 检查慢查询日志,缩短查询时间范围 |
| 504 | 反向代理超时 | nginx proxy_read_timeout |