[Infra] 사용자들이 어떤 걸 좋아할까?

한강섭·2025년 10월 26일
0

목적: Docker 컨테이너 삭제해도 로그 보존 + 디스크 공간 확보

  1. EC2에 추가 볼륨 2개 연결

    • nvme1n1 (10GB) → 로그 전용
    • nvme2n1 (10GB) → 데이터 전용
  2. 볼륨 마운트

    • /mnt/logs (로그 볼륨)
    • /mnt/data (데이터 볼륨)
  3. 디렉토리 생성

    • /mnt/logs/nginx/
    • /mnt/data/uploads/
    • /mnt/data/cache/
  4. Docker 볼륨 마운트

    • EC2의 /mnt/logs/nginx ↔ 컨테이너의 /var/log/nginx
  5. Nginx가 로그 생성

    • access.log (접속 기록)
    • error.log (에러 기록)

nvme1n1, nvme2n1 의 10G 짜리 추가 볼륨을 적재하였다. 왜냐하면 로그와 정적파일 캐싱을 위해서 추가 배치를 하였는데 활용할 수 있도록 설정해보자

이렇게 access.log와 error.log 를 전부 확인할 수 있는 저장소를 만들었다.

access.log

error.log

GoAccess

UI 로 한눈에 보기


  1. 설치한 프로그램

GoAccess - nginx 로그 분석 도구 (소스 컴파일로 설치)

위치: /usr/local/bin/goaccess

  1. 생성한 디렉토리

/etc/goaccess/ - GoAccess 설정 디렉토리
/var/www/goaccess/ - 대시보드 HTML 파일 저장 위치

  1. 생성한 파일

/etc/goaccess/goaccess.conf - GoAccess 설정 파일
/usr/local/bin/goaccess-start.sh - GoAccess 실행 스크립트
/usr/local/bin/goaccess-update.sh - 1분마다 업데이트하는 스크립트
/tmp/.htpasswd - Basic Auth용 비밀번호 파일

  1. Docker 관련 수정

docker-compose.yml - GoAccess 디렉토리 볼륨 마운트 추가
Docker 컨테이너 내부에 심볼릭 링크 생성: /usr/share/nginx/html/stats -> /var/www/goaccess

이제 MAU와 실시간 접속자 통계를 확인할 수 있습니당

기대 효과


  1. 문제 발생 시 원인 파악 (디버깅)
  2. 실제 사용자 행동 분석
  3. 보안 공격 감지
  4. 비즈니스 인사이트
  5. 성능 모니터링
  6. 장기적 데이터 축적
profile
기록하고 공유하는 개발자

0개의 댓글