관리 콘솔
데이터레이크 노드의 운영 콘솔입니다. 브라우저로 상태 · 지표 · 로그 · 진단 · 설정 · 백업 · 워커를 한 화면에서 보고, 허용된 pd 명령을 실행하고, 같은 주소로 외부 모니터링 시스템(Grafana · Prometheus · Zabbix)에 헬스 API 를 제공합니다.
| 항목 | 값 |
|---|---|
| 백엔드 모듈 | plantpulse-datalake-admin-api (2026-09-03 까지 plantpulse-monitor) |
| 어디서 도나 | plantpulse-datalake 컨테이너 안 — 마스터 · 워커 노드 모두 |
| 주소 (TLS) | https://<서버IP>:4950/ |
| 주소 (평문) | http://<서버IP>:4949/ — 같은 콘솔 · 같은 API |
| 로그인 | PP_DATALAKE_ADMIN_USER(기본 admin) / PP_DATALAKE_ADMIN_PASSWORD |
| 기본 언어 | 영문. ?lang=ko 를 붙이면 한국어 |
접속
브라우저에서 두 주소 중 하나로 들어갑니다. 같은 콘솔이고 스킴만 다릅니다.
https://<서버IP>:4950/?lang=ko # TLS — 권장
http://<서버IP>:4949/?lang=ko # 평문 — 4950 으로 리다이렉트하지 않습니다
로그인 비밀번호와 세션 쿠키가 그대로 흐릅니다. 신뢰할 수 없는 망에서는 반드시 4950 을 쓰세요. 4949 를 남겨 둔 것은 실수가 아니라 선택입니다 — 자체 서명 인증서 경고가 실제로 운영자를 막아 세우는 상자가 있기 때문입니다.
TLS 로 접속하면 자체 서명 인증서 경고가 뜰 수 있습니다. 실제 인증서로 바꾸는 방법은 보안 설정에 있습니다.
로그인
로그인 화면에는 이 노드의 이름과 역할(마스터 / 워커) 이 함께 표시됩니다. 여러 노드를 열어 놓고 작업할 때 어느 상자인지 확인하세요.
| 변수 | 기본값 | 설명 |
|---|---|---|
PP_DATALAKE_ADMIN_USER | admin | 로그인 이름 |
PP_DATALAKE_ADMIN_PASSWORD | 2026-09-05 이후 설치본은 개발용 기본값, 그 전은 비어 있음 | 비어 있으면 콘솔이 열리지 않습니다 |
PP_DATALAKE_ADMIN_API_KEY | 없음 | 로그 엔드포인트를 기계가 호출할 때의 X-API-Key |
비밀번호를 바꾸거나 처음 넣는 방법은 웹 화면 로그인 계정 — 관리 콘솔에 있습니다.
PP_DATALAKE_ADMIN_PASSWORD 가 비어 있다는 뜻입니다. 콘솔만 안 켜지고 데이터레이크는 정상 기동합니다. 장애가 아니라 커미셔닝에서 빠뜨린 것이니, 값을 넣고 재시작하세요.
화면 구성 — 레일과 사이드바
왼쪽의 좁은 세로 띠가 레일이고 그룹 8개가 아이콘으로 놓입니다. 레일은 아이콘만 보여줍니다 — 이름은 마우스를 올리면 툴팁으로 나옵니다.
그룹을 고르면 그 그룹의 화면들이 사이드바로 펼쳐집니다. 단, 화면이 하나뿐인 그룹은 사이드바가 없습니다 — 고를 것이 없는데 칸만 차지하기 때문입니다.
레일의 순서는 장애 때 사람이 묻는 순서입니다 — «지금 이상이 있나» → «어디가» → «무엇이 참인가» → «누구에게 알리나» → «무엇을 바꾸나» → «명령» → «다른 화면으로» → «무슨 일이 있었나».
| 그룹 | 구역 | 화면 | 무엇을 답하나 |
|---|---|---|---|
| 개요 | — | 대시보드 | 지금 이상이 있는가 |
| 토폴로지 | — | 토폴로지 (탭: 데이터 흐름 · 노드) | 파이프라인의 어디가 막혔나, 나머지로는 데이터가 흐르나 |
| 관측 | 상태 | 상태 · 메트릭 | 지금의 판정과, 지난 한 시간~이레의 추이 |
| 자원 | 스토리지 | 볼륨 · WAL · 복제 슬롯 · 저장소 크기 | |
| 활동 | 이벤트 · 로그 · 진단 · 작업 | 무슨 일이 있었나 — 이벤트 저널, 서비스 로그, pd doctor, 백업 · 아카이브 잡 이력 | |
| 알람 | — | 알람 | 누구에게, 언제 알리는가 |
| 운영 | 설정 | 설정 | 템플릿과 렌더 결과의 diff, 템플릿 편집과 되돌리기 |
| 유지 | 업그레이드 · 워커 | 모듈별 버전, 클러스터 워커에 대해 무엇을 바꿔야 하나 | |
| 백업 | 백업 | 백업 세트 · 스케줄 편집 · 실행 · 복원 | |
| 명령 | — | 명령 | 허용된 pd 동사를 화면에서 실행 |
| 도구 | — | 도구 | 다른 제품 웹 UI 로 가는 카드 |
| 기록 | — | 감사 | 이 콘솔에서 누가 무엇을 바꿨나 |
레일의 점 읽는 법
레일의 그룹 아이콘 옆에 붙는 점은 그 그룹에 속한 화면들의 «최악» 상태입니다.
폴링이 멈췄거나 응답이 비었거나 상태가 UNKNOWN 인 컴포넌트는 점 자체가 없습니다. 초록으로 칠하지 않습니다. 즉 점이 없는 것과 초록 점은 다릅니다. «아무 색도 없으니 괜찮겠지» 로 읽지 마세요 — 못 쟀다는 뜻입니다.
알람 그룹의 점은 헬스가 아니라 알람 목록 자체를 봅니다.
| 점 | 뜻 |
|---|---|
| FAIL | 소리를 내고 있는 알람이 하나라도 있다 |
| WARN | 활성 알람이 있는데 전부 음소거돼 있다 |
| OK | 활성 알람이 아예 없다 |
| 점 없음 | 알람 폴링이 멈췄다 — 조용한 것이 아니라 못 본 것 |
조용한 것은 정상이 아닙니다. 음소거 · 규칙 꺼짐 · 최소 심각도 미만 · 억제 구간 · 채널 없음 — 알람이 소리를 내지 않는 이유는 다섯 가지이고, 콘솔은 그 다섯을 각각 다른 문장으로 알려 줍니다.
화면별로 알아 둘 것
| 화면 | 알아 둘 것 |
|---|---|
| 토폴로지 | 두 탭은 한 시스템의 두 그림입니다 — 데이터 흐름(MQTT → Kafka → 소비자)과 노드(마스터 · 워커). 대시보드가 «이상이 있다» 고 하면 여기서 어느 구간인지 봅니다 |
| 상태 → 컴포넌트 | 행을 누르면 컴포넌트 상세로 들어갑니다. pd status 표와 같은 행이고 15초마다 갱신됩니다. 기동 직후 몇십 초의 STOPPED 는 창(window)입니다 |
| 로그 | pd logs --list 가 선언한 파일만 보여 줍니다. 앱 컨테이너(서버 · 배치 · 웨어하우스)의 로그는 여기 없습니다 — 호스트의 logs.sh 를 쓰세요 |
| 진단 | pd doctor 의 결과. «검사 실행» 버튼이 즉시 한 번 더 돌립니다. 한 번에 하나만 받으므로 «busy» 가 뜨면 잠깐 뒤 다시 누릅니다 |
| 작업 | 백업 · 아카이브 · 유지 작업의 이력을 한 곳에서. 백업 화면은 백업만 따로 봅니다 |
| 설정 | «지금 렌더하면 무엇이 바뀌나»(pd config diff)와 «내 템플릿이 이미지 기본값과 다른가»(pd config diff --templates). 템플릿을 화면에서 고치면 리비전이 남아 되돌릴 수 있습니다. 값(비밀번호 · 주소)의 정본은 여전히 호스트입니다 → 설정 바꾸는 법 |
| 업그레이드 | 모듈별 PlantPulse 버전과 커밋. 이미지가 굽는 /etc/plantpulse-modules.json 을 읽습니다 |
| 워커 | 클러스터 워커에 대해 무엇을 바꿔야 하는지 명령을 보여 줄 뿐, 실행하지는 않습니다. 실행은 호스트에서 합니다 → 클러스터 설치 |
| 백업 | 세트 목록 · 타이머 일정 · 지금 도는 것. «Schedule editor» 가 pd backup schedule set 을 부릅니다 → 백업 · 복원 |
| 명령 | 서버가 정한 허용 목록의 pd 동사만 실행됩니다(목록이 화면에 보입니다). 그 밖의 명령은 컨테이너 셸에서 → pd CLI |
| 도구 | 다른 제품의 웹 UI 를 카드로 모아 새 탭으로 엽니다. 주소의 호스트는 지금 접속한 호스트를 따라가므로 어느 상자에서 열든 그 상자의 도구로 갑니다. 이 노드에 없는 서비스의 카드는 그려지지 않습니다 |
| 감사 | 이 콘솔에서 누가 무엇을 바꿨는지. 워커 노드에는 감사 저장소가 없어 항상 «읽을 수 없음» 으로 나옵니다 — 조용한 한 주가 아닙니다 |
아직 데이터를 제공하지 않는 화면은 비어 있다고 알려 주면서, 그것이 «이상 없음» 이라는 뜻이 아니라고 함께 적습니다. 빈 화면을 정상으로 읽지 마세요.
도구 화면의 카드
| 카드 | 주소 | 무엇 |
|---|---|---|
| CEP | https://<호스트>:7401/ | EQL 규칙과 그것이 매칭한 이벤트 |
| Grafana | https://<호스트>:3000/ | 시계열 데이터의 대시보드 |
| Timeseries Engine | https://<호스트>:7801/ | 시계열 데이터가 아니라 엔진 자체의 관리 화면 |
| Spark | http://<호스트>:4440/ | Spark 마스터 · 워커 · 실행 중인 애플리케이션 |
| Temporal | http://<호스트>:8233/ | 워크플로 실행과 이력 |
| Kestra | https://<호스트>:8380/ | 데이터 파이프라인 — 플로 · 실행 · 로그 |
| MinIO | http://<호스트>:9001/ | 오브젝트 스토리지 — 버킷 · 객체 · 액세스 키 |
| Data Gateway | https://<호스트>:5501/ | SQL 실행 콘솔. 옛 SQL 도구 카드는 이것으로 합쳐졌습니다(2026-09-07) |
TLS 쌍둥이 포트가 있는 화면은 TLS 쪽으로 링크됩니다. 이 콘솔이 TLS(4950)라, 평문 주소를 건네지 않기 위해서입니다.
콘솔이 pd 를 얼마나 자주 부르나
콘솔의 화면은 요청마다 pd 를 돌리지 않습니다. 백엔드의 수집 루프가 한 번에 하나씩 돌리고 마지막 문서를 캐시하며, 화면은 그 캐시를 읽습니다.
| 동사 | 주기 |
|---|---|
pd status --json · pd logs --list | 15초 |
pd node status --json · pd storage --json | 30초 |
pd flow --json · pd config diff --json · pd env --json | 60초 |
pd doctor --json · pd retention --json · pd config diff --templates --json | 300초 |
주기대로면 60초 중 약 46초가 pd 를 돌리는 데 쓰입니다. 그래서 콘솔이 떠 있는 상자에서 pd status 가 가끔 느린 것은 정상입니다.
헬스 API
콘솔이 그리는 화면은 전부 /api/* 위에 있고, 전체 목록과 스키마는 콘솔이 /api/openapi.json 을 읽어 API 표로 보여 줍니다.
curl -kfsS https://<서버IP>:4950/api/health | jq # TLS
curl -fsS http://<서버IP>:4949/api/health | jq # 평문 — 같은 API
docker exec plantpulse-datalake curl -kfsS https://127.0.0.1:4950/api/health | jq # 컨테이너 안 — 어떤 구성에서도
curl -kfsS https://<서버IP>:4950/api/services | jq # 서비스 목록과 상태
호스트의 status.sh · ops-check.sh · doctor.sh · stack-verify-boot.sh 가 모두 이 /api/health 를 읽습니다. /api/health 는 인증 없이 답하고, 그 밖의 API 는 로그인 세션이나 X-API-Key(로그 엔드포인트)가 필요합니다.
Prometheus 연동
https://<서버IP>:4950/metrics 를 스크레이프합니다. 자체 서명 CA 면 insecure_skip_verify 를 켭니다. 플랫폼 동봉 Grafana(3000)나 외부 Grafana 에서 데이터 소스로 연결하세요.
자주 발생하는 문제
| 증상 | 원인 | 조치 |
|---|---|---|
| 콘솔이 열리지 않음 · «설정되지 않았습니다» | PP_DATALAKE_ADMIN_PASSWORD 가 비어 있음 | 웹 화면 로그인 계정 |
| 4949 는 되는데 4950 이 안 됨 | 인증서 문제 | 브라우저 경고를 확인하거나 보안 설정에서 인증서 교체 |
| 헬스 엔드포인트 응답 없음 | 데이터레이크 컨테이너 이상 | 호스트에서 status.sh → logs.sh plantpulse-datalake |
| 화면 전체가 «Not measured» | 폴링이 멈췄거나 옛 이미지 | pd env 의 IMAGE_BUILT_AT 을 봅니다. 2026-09-04 이전 admin-api 는 «Another job is already running» 을 자주 냈습니다 |
| 도구 카드가 안 그려짐 | 그 서비스가 이 노드에 없음(워커) 또는 폴링 미응답 | 마스터 노드의 콘솔로 |
| Prometheus 스크레이프 5xx | 백엔드 모듈 다운 | status.sh 로 의존 모듈 확인 |
| 감사 화면이 «읽을 수 없음» | 워커 노드 | 정상 — 마스터에서 보세요 |
관련 문서
- 웹 화면 로그인 계정
pdCLI — 콘솔이 보여 주는 것의 원본- 시스템 모니터링 — 각 웹앱의 readiness 헬스체크
- 포트 및 서비스 관리