홈 화면 (/ui/main) — 카드 / 액션 / 갱신 주기 완전 가이드
게이트웨이 웹 UI 의 메인 페이지 입니다. 한 화면에 게이트웨이의 모든 운영 상태를 카드 형태로 보여줍니다. 카드들은 1초 주기 로 백엔드(/monitor/bean) 에서 값을 다시 가져와 갱신되며, Sparkplug B 카드 만 별도로 5초 주기 (/api/v1/transfer) 갱신됩니다.
좌측 상단의 PlantPulse 로고 또는 직접 http://<게이트웨이>/ui/main 으로 접속.
- MQTT / Sparkplug B / OPC UA 서버 카드:
app.properties의*.enable/host/port/user키를 직접 lookup. install.sh 가 박스마다 random 비번을 생성하므로 user 가 비어있거나 박스마다 다르게 표시됨. - 도커 카드:
/var/run/docker.sock마운트 필요.plantpulse-edge자기 자신은 self-exclude — list 에 표시되지 않음 (start/stop/delete 차단 안전). - 네트워크 카드 (LAN1/LAN2/WiFi/GSM/VPN/관리):
edge.net.<role>.iface값으로 매핑. dev 박스 처럼enp1s0 / enp2s0 / tailscale0같은 systemd predictable 이름이면app.properties에 직접 설정 (install.sh 의LAN1_IFACE=...env 로 자동 반영 가능). - 컴포넌트 헬스 한 줄 확인:
curl http://localhost/api/v1/system/health(인증 불필요, 8 컴포넌트 status map + 503 분기).
카드 한눈에 보기 (총 ~30개)
가로 6칸 그리드. 카드 종류는 3 가지:
| 종류 | 색 | 의미 |
|---|---|---|
| action_box (흰 배경, 큰 아이콘) | 회색 테두리 | 클릭하면 해당 메뉴로 이동 |
| black_box (검은 배경) | 회색 글자 | 변하지 않는 게이트웨이 정보 |
| gray_box (흰 배경, 회색 헤더) | 라이트 그레이 | 실시간 모니터링 — 값이 1초마다 갱신 |
1. 상단 액션 / 정보 (1행)
1.1 엣지 정보 (black_box)
무엇을 표시하는가: 이 게이트웨이의 바뀌지 않는 정체성 정보. 부팅 시점에 한 번만 측정되어 화면에 박힙니다.
| 필드 | 의미 | 출처 |
|---|---|---|
| HOST명 | OS 의 hostname (예: pe-edge-01) | EdgeContext.hostname |
| O/S | OS 이름 + 아키텍처 (예: Linux (amd64)) | os.name + os.arch |
| 커널 | 커널 버전 (예: 5.14.0-...) | os.version |
| 버전 | 게이트웨이 SW 버전 (예: V2026.05.08) | app.properties |
| 빌드일 | 산출물 빌드 날짜 (예: 2026-05-08) | BUILD_DATE |
⚠ HOST명, O/S 정보는 게이트웨이 재기동 후 OS 가 바뀌었을 때만 변합니다.
1.2 프로토콜 연결 하기 (action_box)
→ 클릭 시 /ui/connect/connect 로 이동. 새 PLC / OPC-UA / MQTT / 시뮬레이터 연결을 추가하는 화면 입니다.
1.3 연결된 목록 (N) (action_box)
→ 클릭 시 /ui/connect/list. 괄호 안의 N 은 현재 등록된 OPC(연결) 개수 (monitor.opc_count).
1.4 애플리케이션 (action_box)
→ /ui/apps. Docker 기반 사용자 애플리케이션을 띄우고/내리고/관리.
1.5 노-코드 플로우 (action_box)
→ /ui/flow (Node-RED 임베드).
자세한 사용법: 플로우 (Node-RED)
1.6 환경 설정 (action_box)
→ /ui/system/config. app.properties 직접 편집 + 시스템 재시작 / 재부팅 / 백업 / 임시파일 정리 등.
2. 게이트웨이 식별 (3 cards)
2.1 엣지 시작 시간 (gray_box)
무엇을 표시: 마지막으로 게이트웨이 (Tomcat) 가 부팅된 정확한 시각 — yyyy년 MM월 dd일 [a] HH시 mm분 ss초 (KST).
재시작 시점이 의심되면 이 값으로 “마지막 재시작” 을 확인하세요.
2.2 엣지 ID (gray_box)
무엇을 표시: 이 게이트웨이의 고유 ID (예: EDGE_00303). Sparkplug, REST API, OPC-UA 노드 트리 등 모든 식별 의 기준 입니다. app.properties 의 edge.id 에서 옴.
2.3 배포 사이트 ID (gray_box)
무엇을 표시: 이 엣지가 어느 사이트(공장 / 라인) 에 배치됐는지 (예: SITE_00001). 외부 SCADA / Sparkplug 의 Group ID 결정에 사용. app.properties 의 site.id 에서 옴.
3. 네트워크 상태 (6 cards)
각 카드는 링크 상태 아이콘 + IP 또는 DISCONNECTED(회색) 를 보여줍니다.
3.1 인터넷 (gray_box)
게이트웨이가 외부 인터넷에 ping 가능한지. 아이콘 색:
- 녹색 globe: 정상 연결
- 빨간 globe: 연결 실패
ping 대상은 app.properties 의 monitor.ping.targets (예: 8.8.8.8).
3.2 이더넷 (gray_box) — 두 칸으로 분할
- 좌: 1 WAN (외부 망 NIC,
net_1_ip) - 우: 2 PLC (PLC 망 NIC,
net_2_ip)
각 칸의 색상은 인터넷 ping 결과 에 따라 같이 바뀝니다 (단순화된 표시).
3.3 WIFI (gray_box)
wifi-1 아이콘 + IP, 또는 wifi-slash 회색 (DISCONNECTED).
3.4 3G/4G/5G (gray_box)
GSM 모뎀의 IP 또는 DISCONNECTED. SIM 카드 아이콘.
3.5 VPN (gray_box)
shield-check 아이콘. VPN 연결 시 IP 표시, 끊겨있으면 회색 + DISCONNECTED.
3.6 관리 포트 (gray_box)
wrench 아이콘. USB / 별도 관리 NIC 의 IP. 일반적으로 사이트 네트워크와 분리된 진단용 채널.
4. 시스템 리소스 (5 cards)
4.1 온도 (gray_box)
CPU 온도. 90°C 이상이면 빨간색 + temperature-high 아이콘 (위험), 이하면 녹색 + temperature-low. 산업 환경에서 팬 막힘 / 고온 알람 의 1차 신호.
4.2 CPU (gray_box)
게이지(0–100%) + 총 코어 수. JustGage 라이브러리. 1초 갱신.
지속적으로 90% 를 넘으면 PLC 폴링 주기 / 태그 수 검토 필요.
4.3 물리 메모리 (gray_box)
게이지 + 사용 / 전체 (KB/MB/GB 자동 단위). swap 과 별개로 RSS 사용량.
4.4 가상 메모리 (gray_box)
스왑(swap) 사용량. 게이지 + 사용 / 전체. 평소 0–10% 정상, 지속적으로 30% 넘으면 RAM 부족 가능성.
4.5 디스크 (gray_box)
/data1 (또는 게이트웨이 홈) 의 사용률. 게이지 + 사용 / 전체.
90% 넘으면 즉시 정리 / 청소 (clean.sh / node-cleanup.sh) 절차 실행.
5. 네트워크 트래픽 (1 card)
5.1 네트워크 사용량 (gray_box)
- 다운로드 (RX) — 누적 수신 바이트
- 업로드 (TX) — 누적 송신 바이트
KB/MB/GB 자동 단위. 부팅 후 누적 값.
6. 수집 / 처리 (4 cards)
6.1 연결 | 태그 건수 (gray_box)
- 상단 큰 숫자: 연결 (OPC) 수 (
opc_count) - 하단 큰 숫자: 태그 수 (
tag_count)
게이트웨이가 알고 있는 OPC/태그의 전체 카운트. 시스템 태그 (EDGE_*) 도 포함.
6.2 PLC 연결 및 수집 상태 (gray_box) — 2x4 매트릭스
| 좌측 (연결) | 의미 |
|---|---|
| 🟢 연결 | TCP/UDP 연결 OK 인 OPC 수 (plc_con_connected_count) |
| 🔴 끊김 | 연결 실패 OPC 수 (plc_con_disconnected_count) |
| 우측 (수집) | 의미 |
|---|---|
| 🟢 정상 | 수집 시작 + read 성공 중 (plc_scan_start_count) |
| 🟧 이상 | 수집 시작했지만 일정 시간 read 실패 (plc_scan_not_collect_count) |
| ⬜ 정지 | 사용자가 중지 누른 OPC (plc_scan_stop_count) |
연결과 수집은 다릅니다: TCP 가 살아있어도 (연결 ✅) 어떤 사유로든 read 가 안 들어오면 수집 이상 으로 분류됩니다.
6.3 PLC 읽기/쓰기 결과 (gray_box)
수집기/REST API 가 누적한 read/write 카운터. K/M/B 단위로 압축 표시.
| 성공 | 실패 | |
|---|---|---|
| 읽기 (R) | plc_value_read_success_count | plc_value_read_error_count |
| 쓰기 (W) | plc_value_write_success_count | plc_value_write_error_count |
우상단 ↻ 새로고침 아이콘 클릭 → /connect/reset-read-error 호출 → 실패 카운터만 0 으로 초기화. 알람 정리 후 다음 사이클부터 새로 카운트하고 싶을 때.
6.4 MPS (gray_box)
Messages Per Second — 초당 처리되는 데이터 포인트 수 (monitor.mps).
바로 밑에 sparkline (최근 추세 미니 차트). 부하 변화를 한눈에.
평소 사이트의 mps 가 100 인데 갑자기 0 으로 떨어지면 → PLC 연결 또는 수집 이상.
7. 전송 / 저장 (5 cards)
7.1 대기 큐 (gray_box)
전송 대기중인 포인트 큐 크기 (queue_size).
평소 0–수 십. 외부 전송이 막히면 (Sparkplug 끊김 등) 빠르게 증가 → 디스크 큐 (
queue_disk_size) 로 넘침. 이 카드가 지속적으로 늘어나면 외부 통신 점검 필요.
7.2 포인트 전송 건수 (gray_box)
부팅 후 외부로 성공적으로 전송 된 누적 포인트 수 (sended_point_count).
7.3 포인트 전송량 (gray_box)
부팅 후 누적 송신 바이트 (sended_point_bytes). 자동 단위. 데이터 사용량 청구 산정에 참고.
7.4 데이터 저장량 (gray_box)
Cassandra 의 keyspace pe 에 저장된 시계열 총 크기 (MBytes 입력 → 자동 단위 변환). 디스크 잔여 공간과 같이 보세요.
7.5 데이터 저장 기간 (gray_box)
tm_tag_point 의 TTL (Time-To-Live) 일 수 (system_db_ttl, 기본 30 일). 이 일수가 지나면 자동 만료됩니다. app.properties 에서 변경.
8. 시스템 오류 (1 card)
8.1 시스템 오류 (오늘) (gray_box)
오늘(00:00–현재) 발생한 ERROR 레벨 시스템 로그 건수 (system_error_count). 빨간 큰 숫자.
숫자 클릭 → /system/log/list 로 이동, 실제 로그 본문 확인.
9. 외부 서비스 / 통합 (5 cards)
각 카드는 상태 띠 (녹색/빨강/회색) + 접속 정보 표.
9.1 플랫폼 API 서버 (gray_box)
상위 PlantPulse 플랫폼 API 와의 연결 상태. 우상단 외부링크 아이콘 클릭 시 새창으로 그 서버 접속.
| 행 | 의미 |
|---|---|
| 띠 | 🟢 연결 성공 / 🔴 연결 실패 (monitor.api) |
| HOST/IP | server.host |
| PORT | server.port |
| USER | server.username |
9.2 OPC-UA 서버 (gray_box)
게이트웨이 내장 OPC-UA 서버 정보. 외부 SCADA 가 여기로 접속해 태그를 구독.
| 행 | 의미 |
|---|---|
| 띠 | 🟢 활성화 (서버는 항상 운영) |
| HOST/IP | opc.ua.server.host |
| PORT | opc.ua.server.tcp.port (기본 12000) |
| USER | opc.ua.server.user |
자세한 노드 트리 / 시계열 차트: OPC-UA 노드 뷰어 사용
9.3 MQTT 서버 (gray_box)
게이트웨이 내장 HiveMQ 정보 + Sparkplug 등을 발행할 토픽.
| 행 | 의미 |
|---|---|
| 띠 | 🟢 활성화 / ⬜ 비활성화 (mqtt.enable) |
| HOST/IP | mqtt.server.host |
| PORT | mqtt.server.port (기본 1883) |
| USER | mqtt.server.user |
| TOPIC | mqtt.server.topic (Sparkplug spBv1.0/... 또는 사용자 토픽) |
9.4 Sparkplug B (gray_box)
Sparkplug 발행 컴포넌트의 실시간 상태 (5초 갱신, /api/v1/transfer 의 Sparkplug 항목).
| 행 | 의미 |
|---|---|
| 띠 | 🟢 활성화 (연결됨) / 🔴 연결끊김 (활성이지만 broker 연결 끊김) / ⬜ 비활성화 (sparkplug.enable=false) |
| GROUP | Sparkplug Group ID (예: Plant1) |
| NODE | Edge Node ID (예: EDGE_00303) |
| 세션 # | bdSeq (디바이스 birth/death 시퀀스 — 재연결 횟수) |
| 메시지 # | seq (현재 출판 메시지 번호 — 0–255 순환) |
메시지 # 가 멈춰있으면 송출 중단. 세션 # 가 자주 증가하면 broker 연결이 불안정.
9.5 도커 (gray_box)
Docker 데몬 상태 + 사용자 애플리케이션 컨테이너 통계.
| 행 | 의미 |
|---|---|
| 띠 | 🟢 운영중 / 🔴 중지됨 (monitor.docker_on) |
| 카운트 | [ 살아있는 / 전체 ] 컨테이너 수 (docker_container_up_count / docker_container_total_count) |
/ui/apps 에서 등록한 애플리케이션이 모두 살아있는지 한눈에.
10. 푸터 (모든 페이지 공통)
화면 하단에 다음이 표시됩니다.
- PlantPulse Edge 텍스트 + 라이선스
- ☁ 소프트웨어 업그레이드 아이콘 — 클릭 시
upgrade.sh호출 (확인 다이얼로그 후)- 아이콘 옆 뱃지:
- 빨간 "업그레이드 가능!" → 다운로드 서버에 새 버전 있음
- 회색 "다운로드 서버 연결 안됨" → 외부 망 /
product.kopens.io접근 실패 - (뱃지 없음) → 현재 버전이 최신
- 아이콘 옆 뱃지:
- 외부 포트 단축 — 기타 외부 서비스 (예: Grafana 3000) 새창 띄우기
내부적으로 /config/upgrade/check 가 server-to-server 로 https://product.kopens.io/.../VERSION.JSON 을 가져와 비교 → CORS 에러 없이 깨끗하게 뱃지 표시.
11. 갱신 주기 / 데이터 출처 정리
| 영역 | 갱신 주기 | 엔드포인트 |
|---|---|---|
| 게이지 / 리소스 / 네트워크 / 카운터 / 큐 / 저장량 / 오류 | 1초 | GET /monitor/bean |
| Sparkplug B 카드 | 5초 | GET /api/v1/transfer |
| 업그레이드 뱃지 | 페이지 로딩 시 1회 | GET /config/upgrade/check |
| 검은 정보 카드 (HOST명/OS/버전 등) | 안 갱신 (페이지 로딩 시점 값) | EdgeContext (서버 부팅 시 결정) |
12. 자주 보는 패턴
| 화면 신호 | 의심 / 행동 |
|---|---|
| 온도 빨강 (90°C↑) | 팬 막힘 / 환경 온도 — 즉시 점검 |
| CPU 90%+ 지속 | 폴링 주기가 너무 빠름 / 태그 수 과다 |
| 디스크 90%+ | 정리 / 청소 — clean.sh + node-cleanup.sh |
| PLC 끊김 카운트가 갑자기 증가 | PLC 망 케이블 / 스위치 / PLC 전원 |
| 수집 이상 > 0 | 연결은 OK 인데 read 실패 — 주소 형식 / PLC 펌웨어 점검 |
| MPS 가 0 으로 떨어짐 | 모든 PLC 가 read 실패 또는 수집기가 멈춤 |
| 대기 큐 가 계속 증가 | 외부 전송 (Sparkplug / MQTT) 가 막힘 — 9.3/9.4 카드 확인 |
| 시스템 오류 빨간 숫자 | 클릭 → /system/log/list 에서 본문 확인 |
| Sparkplug 메시지 # 가 안 변함 | 송출 중단 — app.properties 의 sparkplug.* 점검 |
| 도커 빨강 | systemctl status docker 에서 데몬 상태 확인 |
13. 더 알아보기
- 연결 추가: 새 PLC 연결 추가
- 연결 목록 / 태그 화면: 실시간 값 보기
- OPC-UA 노드 뷰어: OPC-UA 노드 뷰어 사용
- 플로우 자동화: 플로우 (Node-RED) 시작하기
- 시스템 환경설정 / 운영 스크립트: 운영 — 한눈에 보기