본문으로 건너뛰기

plantpulse-timeseries (시계열)

역할​

시계열 데이터 전용 엔진(TSE)과 PlantPulse Dashboard 입니다. 태그 값을 Aster TSDB 에 행 단위 TTL 로 저장하고, 집계 · 조회 API 를 제공합니다.

항목값
모듈명plantpulse-timeseries
설치 경로/opt/kopens/plantpulse-platform/plantpulse-timeseries/
엔진 포트7800 (HTTP) · 7801 (TLS)
UI 포트3000 (PlantPulse Dashboard, TLS 전용)
pd 서비스timeseries — MASTER 만 (2026-09-05 부터). engine(tse) → dashboard(grafana)
계정PP_TSE_USER / PP_TSE_PASSWORD
워커에서는 뜨지 않습니다 (2026-09-05)

워커의 엔진은 아무도 읽지 않고 마스터가 이미 쓴 행을 같은 링에 다시 복사할 뿐이었습니다(실측 4.4G). 모든 조회 소비자가 마스터의 엔진을 가리키므로 MASTER 전용으로 바뀌었습니다.

구성​

디렉토리 구조​

plantpulse-timeseries/
├── engine/ # 시계열 엔진 (Java)
│ ├── bin/
│ ├── conf/plantpulse-timeseries-engine.conf # 생성물 (옛 이름 timeseries-engine.conf 로도 한 벌)
│ └── logs/
└── dashboard/ # PlantPulse Dashboard
├── bin/
├── conf/custom.ini # protocol = https · http_port = 3000
├── data/ # PlantPulse Dashboard DB — 이미지 트리 안 (볼륨 아님)
└── logs/

시계열 엔진 (7800 · 7801)​

설정 템플릿은 /etc/kopens/conf/plantpulse-timeseries-engine.conf.template 하나이고, 두 이름의 파일로 렌더됩니다. 핵심 항목:

항목값
jetty.port · jetty.ssl.portPP_TSE_PORT(7800) · PP_TSE_TLS_PORT(7801). TLS 는 플랫폼 공용 keystore
service.datastoreAster TSDB 모듈 — 테이블 pp.ts_data_points 등, UnifiedCompactionStrategy
데이터 포인트 TTLPP_TSE_DATAPOINT_TTL — 기본 31536000초(365일). 쓰기마다 찍히므로 새 값은 새 행부터
인증PP_TSE_USER / PP_TSE_PASSWORD — passwd.sh 대상이 아니라 사이드카 갱신 + 재시작
curl -fsS http://127.0.0.1:7800/api/health # 컨테이너 안
curl -kfsS https://<서버IP>:7801/api/health # 밖에서 — 401 은 «로그인 필요» 이지 «없음» 이 아닙니다

관리 콘솔의 도구 화면 «Timeseries Engine» 카드(7801)는 엔진 자체의 관리 화면입니다. 시계열 데이터를 보는 곳은 PlantPulse Dashboard 입니다.

PlantPulse Dashboard (3000)​

https://<서버IP>:3000/ — TLS 로만 답합니다. http:// 로 열면 400.

로그인 계정은 PlantPulse Dashboard 자신의 저장소에 있습니다. 바꾸는 자리는 PlantPulse Dashboard 화면(프로필 → Change password)입니다 → 웹 화면 로그인 계정 — PlantPulse Dashboard

저장소가 PostgreSQL 로 옮겨졌습니다 (2026-09-08)

대시보드 · 데이터소스 · 사용자 · 알림 규칙 · API 키가 PostgreSQL 의 grafana DB 에 들어갑니다. 종전에는 이미지 트리 안의 SQLite(dashboard/data/grafana.db)라 컨테이너를 다시 만들면 전부 되돌아갔는데, 이제는 살아남습니다.

변수값
PP_GRAFANA_DB_USERgrafana (고정 — 스키마가 이 이름으로 역할을 만듭니다)
PP_GRAFANA_DB_PASSWORD🔑 기동 필수 — 없으면 pd start 가 exit 3 로 멈춥니다

역할 비밀번호는 부팅마다 사이드카 값으로 맞춰집니다.

올려 놓은 설치는 «옮기는 절차» 를 거쳐야 합니다

🔴 PlantPulse Dashboard 는 저장소 사이를 스스로 옮기지 않습니다. 빈 PostgreSQL 을 가리키면 그냥 빈 PlantPulse Dashboard 가 됩니다 — 대시보드도, 데이터소스도, 사용자도 없습니다. 종전 SQLite 에 있던 것을 옮기는 절차가 따로 있습니다.

옮긴 뒤 콘솔은 PlantPulse Dashboard 기본 계정으로 열립니다. 매 부팅마다 맞춰 주는 장치가 없으므로 사람이 한 번 바꿔야 합니다. 설정 파일에 관리자 계정을 적어도 소용없습니다 — 저장소에 사용자가 하나라도 생긴 뒤에는 저장소가 이기고, 그 사실을 알려 주는 오류도 없습니다.

운영 명령​

docker exec plantpulse-datalake pd status timeseries
docker exec plantpulse-datalake pd restart timeseries # 엔진 + PlantPulse Dashboard
docker exec plantpulse-datalake pd logs --lines 100 timeseries
docker exec plantpulse-datalake pd retention # ts_data_points 의 크기 · 압축 전략

자주 발생하는 문제​

증상원인조치
Kafka lag 증가엔진 처리 부족 · Aster TSDB I/Opd flow, pd node compactionstats
데이터가 며칠 만에 사라짐TTLPP_TSE_DATAPOINT_TTL — 옛 이미지는 31일 리터럴이었습니다. 이미 쓰인 행은 옛 값대로 만료됩니다
PlantPulse Dashboard 가 비어 있음(대시보드·데이터소스 없음)저장소를 PostgreSQL 로 옮기면서 내용을 안 옮김위 경고 — 옮기는 절차를 거칩니다
pd start 가 exit 3PP_GRAFANA_DB_PASSWORD 가 비어 있음사이드카에 값을 넣고 다시 기동
http://…:3000 이 400TLS 전용https://
대시보드 응답 느림시간 범위 과다범위 단축, 집계 간격 확대

관련 문서​