docs: PostgreSQL/Neo4j TCP 헬스체크 구현 완료 및 플랜 문서 업데이트
- troubleshooting 문서 작성 (260115_postgresql_neo4j_tcp_healthcheck.md) - 플랜 문서에서 완료된 섹션 삭제 및 링크 추가 - 서버별 서비스 상태 구분 API: 목록 형식 표시 요구사항 추가
This commit is contained in:
parent
07a5a50b02
commit
1e74567e48
@ -18,40 +18,25 @@
|
||||
|
||||
## 완료된 작업
|
||||
|
||||
→ 상세: `troubleshooting/251225_admin_dashboard_navigation_structure_refactoring.md`
|
||||
- → 상세: `troubleshooting/251225_admin_dashboard_navigation_structure_refactoring.md`
|
||||
- → PostgreSQL/Neo4j TCP 헬스체크: `troubleshooting/260115_postgresql_neo4j_tcp_healthcheck.md`
|
||||
|
||||
---
|
||||
|
||||
## 남은 작업
|
||||
|
||||
### 백엔드 API 서버 구분 지원
|
||||
- `get_services_status()`에 서버 필터 파라미터 추가 (`server: Optional[str] = None`)
|
||||
- 51123 서버 서비스 목록과 51124 서버 서비스 목록 분리
|
||||
- 프론트엔드 `loadSystem51123()`, `loadSystem51124()`가 서버별 API 호출하도록 수정
|
||||
|
||||
---
|
||||
|
||||
## 즉시 해결 필요 (우선순위: 높음)
|
||||
|
||||
### 1. 서버별 서비스 상태 구분 API 구현
|
||||
**파일**: `admin-dashboard/backend/services/system_service.py`
|
||||
### 서버별 서비스 상태 구분 API 구현
|
||||
**파일**: `admin-dashboard/backend/services/system_service.py`, `admin-dashboard/frontend/modules/system.js`
|
||||
- `get_services_status()`에 `server: Optional[str] = None` 파라미터 추가
|
||||
- 51123 서버: nginx, gitea, backend, postgresql, neo4j, auth-server
|
||||
- 51124 서버: rb8001, skill-email, robeing-monitor, ChromaDB
|
||||
- 프론트엔드 `loadSystem51123()`, `loadSystem51124()`가 서버별 API 호출하도록 수정
|
||||
- 서버별 필터링: 51123 서버(nginx, gitea, backend, postgresql, neo4j, auth-server), 51124 서버(rb8001, skill-email, robeing-monitor, ChromaDB)
|
||||
- 프론트엔드: `loadSystem51123()`, `loadSystem51124()`가 서버별 API 호출하도록 수정
|
||||
- 서비스 상태 표시 형식: 카드 형식(`service-grid`) → 목록 형식(테이블/리스트)으로 변경, `response_time_ms`, `check_method`, `host`, `timestamp` 정보 포함
|
||||
|
||||
### 2. PostgreSQL/Neo4j 헬스체크 방식 변경
|
||||
**파일**: `admin-dashboard/backend/services/system_service.py:28-29`
|
||||
- HTTP 체크 → TCP 소켓 체크로 변경
|
||||
- PostgreSQL: `socket.connect_ex(('172.17.0.1', 5432))` 사용
|
||||
- Neo4j: `socket.connect_ex(('172.17.0.1', 7474))` 사용
|
||||
- 참고: `troubleshooting/251228_admin_서비스_헬스체크_개선.md`
|
||||
|
||||
### 3. Nginx 상태 API 개선
|
||||
### Nginx 상태 API 개선
|
||||
**파일**: `admin-dashboard/backend/routers/system.py:97-133`
|
||||
- `get_nginx_status()` 응답에 `config_valid` 필드 추가
|
||||
- 프론트엔드에서 `nginxStatusResponse.config_valid` 참조 중 (`app.js:1104`)
|
||||
- `sudo nginx -t` 결과를 `config_valid`에 반영
|
||||
- 프론트엔드: `app.js:1104`에서 `nginxStatusResponse.config_valid` 참조 중
|
||||
|
||||
---
|
||||
|
||||
|
||||
@ -16,45 +16,6 @@
|
||||
|
||||
---
|
||||
|
||||
## 해결 방안
|
||||
|
||||
### 1. PostgreSQL/Neo4j 헬스체크 방식 변경
|
||||
|
||||
**파일**: `system_service.py:367-392`
|
||||
|
||||
- HTTP 체크 → TCP 소켓 체크로 변경
|
||||
- Docker 컨테이너 내부에서 호스트 접근 시 여러 호스트 시도:
|
||||
- `172.17.0.1` → `localhost` → `127.0.0.1` 순서
|
||||
|
||||
### 2. Neo4j 방화벽 규칙 추가
|
||||
|
||||
```bash
|
||||
sudo ufw allow 7474/tcp
|
||||
```
|
||||
|
||||
- Docker 컨테이너에서 호스트 서비스 접근 시 방화벽 확인 필수
|
||||
|
||||
### 3. 서비스 목록 정리
|
||||
|
||||
**파일**: `system_service.py:24-31, 340-344`
|
||||
|
||||
- 제거: `rb10508_test` (51124 서버에 있음)
|
||||
- 추가: `robeing-gateway_8100`, `goosefarm-app_8200`, `auth-server_9000`, `opensearch_9200`, `opensearch_9600`
|
||||
- docker_services 매핑: 실제 컨테이너 이름으로 수정
|
||||
|
||||
### 4. nginx 설정 유효성 체크 추가
|
||||
|
||||
**파일**: `routers/system.py:97-133`
|
||||
|
||||
- `config_valid` 필드 추가
|
||||
- `nginx -t` 명령 실행하여 설정 검증
|
||||
|
||||
### 5. 데이터 정리
|
||||
|
||||
- `robeing` 테이블: rb8001 중복 레코드 1개 삭제
|
||||
|
||||
---
|
||||
|
||||
## 교훈
|
||||
|
||||
### Docker 컨테이너에서 호스트 서비스 접근 시 방화벽 확인 필수
|
||||
@ -92,6 +53,5 @@ sudo ufw allow 7474/tcp
|
||||
|
||||
## 참고
|
||||
|
||||
- `admin-dashboard/backend/services/system_service.py:367-392` - TCP 소켓 체크 로직
|
||||
- `admin-dashboard/backend/routers/system.py:97-133` - nginx 상태 체크
|
||||
- `troubleshooting/260115_postgresql_neo4j_tcp_healthcheck.md` - 구현 완료
|
||||
|
||||
|
||||
@ -0,0 +1,45 @@
|
||||
# PostgreSQL/Neo4j TCP 소켓 헬스체크 구현
|
||||
|
||||
**날짜**: 2026-01-15
|
||||
**작성자**: Auto
|
||||
**관련 파일**:
|
||||
- `admin-dashboard/backend/services/system_service.py:32-33, 346-384, 421-423`
|
||||
|
||||
---
|
||||
|
||||
## 문제 상황
|
||||
|
||||
PostgreSQL/Neo4j가 HTTP 체크로 실패하여 Admin Dashboard에서 오류 표시 (실제로는 정상 작동 중)
|
||||
|
||||
---
|
||||
|
||||
## 해결 방안
|
||||
|
||||
- `system_service.py:32-33`: PostgreSQL/Neo4j HTTP URL 제거, `check_method: "tcp"` 추가
|
||||
- `system_service.py:346-384`: `check_tcp_service()` 함수 추가, 여러 호스트 시도 (`172.17.0.1` → `localhost` → `127.0.0.1`)
|
||||
- `system_service.py:421-423`: `check_method == "tcp"`인 경우 TCP 체크로 분기 처리
|
||||
|
||||
---
|
||||
|
||||
## 구현 완료
|
||||
|
||||
- Git 커밋: `4c9f227`
|
||||
- API 테스트: PostgreSQL/Neo4j 모두 `check_method: "tcp"`, `status: "healthy"` 확인
|
||||
|
||||
---
|
||||
|
||||
## 교훈
|
||||
|
||||
### 데이터베이스 서비스는 TCP 소켓 체크 사용
|
||||
- HTTP 프로토콜이 아닌 서비스는 TCP 소켓 체크 필수
|
||||
- Docker 컨테이너에서 호스트 접근 시 여러 호스트 시도로 네트워크 격리 문제 완화
|
||||
|
||||
### 브라우저 테스트 시 docs 확인 필수
|
||||
- 로그인 비밀번호, API 엔드포인트 등 접근 정보는 코드 또는 docs에서 확인 (추측 금지)
|
||||
|
||||
---
|
||||
|
||||
## 참고
|
||||
|
||||
- `plans/251225_admin_dashboard_navigation_structure_refactoring.md`
|
||||
- `troubleshooting/251228_admin_서비스_헬스체크_개선.md`
|
||||
Loading…
x
Reference in New Issue
Block a user