피드로 돌아가기
Dev.toDevOps
원문 읽기
RAM 40MB 이하의 경량 설계로 SSH 대체 Docker 로그 뷰어 구현
I got tired of SSH and Loki for four containers, so I built DockLog
AI 요약
Context
소규모 VPS 환경에서 Loki나 ELK 같은 무거운 Observability 스택 도입에 따른 리소스 낭비 발생. 팀원에게 로그 확인 권한을 부여하기 위해 SSH Key를 공유하거나 전체 Shell 권한을 노출해야 하는 보안 취약점 존재.
Technical Solution
- Docker Socket 직접 연동을 통한 Agentless 구조 설계로 인프라 복잡도 제거
- WebSockets 기반의 실시간 Log Streaming 방식을 채택하여 Polling 부하 최소화
- SQLite를 활용한 경량 데이터 저장소 구축으로 유저 정보 및 30일치 메트릭 관리
- Server-side 패턴 매칭과 이중 권한 검증(Env flag & DB flag)을 통한 RBAC 보안 강화
- Go 기반 Backend와 Vue 3 Frontend를 단일 이미지로 패키징한 Self-contained 배포 모델 적용
- Flutter 기반 Multi-server Client 앱을 통한 중앙 집중식 서버 관리 체계 구축
실천 포인트
1. 소규모 환경에서 ELK/Loki 도입 전 리소스 오버헤드 검토
2. Docker Socket 노출 시 반드시 서버 사이드에서 RBAC 권한 검증 로직 구현
3. 실시간 로그 스트리밍 구현 시 HTTP Polling 대신 WebSocket 고려
4. 단순 상태 저장을 위해 무거운 DB 대신 SQLite 같은 Embedded DB 활용 검토