npmplus에서 로그모니터링을 위한 goaccess 활성화하기.
안녕하세요. 달소입니다.
앞서 저같은경우 npmplus를 사용하고있다고 말씀드렸는데요.
npmplus의 경우 기본 npm의 리버스프록시 기능뿐만아니라 modsecury, crowdsec등 보안기능을 지원할 뿐만아니라 goaccess라는 툴을 통한 로그의모니터링을 도와줍니다.
goaccess는 어떤건가요?
GoAccess
GoAccess는 오픈소스, 실시간 로깅 분석 및 웹 로그 분석 웹 서버입니다. 콘솔 인터페이스를 통해 실시간으로 웹 서버 로그를 분석하고 시각화합니다.
주요 기능:
- 실시간 분석: 웹 서버 로그를 실시간으로 분석합니다.
- 인터랙티브 인터페이스: 콘솔 기반 인터페이스를 통해 데이터를 탐색하고 필터링할 수 있습니다.
- 광범위한 통계: 방문자 수, 요청 수, 응답 코드, 브라우저, 운영 체제와 같은 다양한 통계를 제공합니다.
- 고성능: 대규모 로그 파일도 빠르게 처리합니다.
- 사용자 지정 가능한 보고서: 사용자 지정 보고서를 생성하고 HTML, JSON 또는 CSV와 같은 다양한 형식으로 내보낼 수 있습니다.
- 플러그인 지원: 기능을 확장하기 위한 플러그인을 지원합니다.
- 지원되는 웹 서버: Apache, Nginx, Lighttpd, Caddy, HAProxy 등 다양한 웹 서버를 지원합니다.
장점:
- 실시간 분석으로 웹사이트 트래픽을 즉시 모니터링할 수 있습니다.
- 사용자 친화적인 인터페이스를 통해 데이터를 쉽게 탐색하고 시각화할 수 있습니다.
- 고성능으로 대규모 로그 파일도 효율적으로 처리합니다.
- 사용자 지정 보고서를 통해 특정 요구 사항에 맞게 데이터를 분석할 수 있습니다.
- 플러그인 지원으로 기능을 확장할 수 있습니다.
사용 사례:
- 웹 개발자는 웹사이트 성능을 모니터링하고 디버그할 수 있습니다.
- 시스템 관리자는 웹 서버 상태를 추적하고 문제를 식별할 수 있습니다.
- 마케터는 웹사이트 트래픽을 분석하고 캠페인의 효과를 추적할 수 있습니다.
- 보안 전문가는 웹사이트에서 잠재적인 보안 문제를 식별하는 데 사용할 수 있습니다.
활성화한다면 아래와같은 대시보드를 확인할 수 있습니다.
npm을 통해 요청오는 request와 어떤 url로 오는지, 어떤 virtualhost로 요청이 오는지 등등 대시보드에서 보여줍니다.
설정하기
설정은 매우 간단합니다.
compose.yml 파일의 환경변수에서 아래 3줄만 추가해주세요.
- "LOGROTATE=true" # Enables writing http access logs to /opt/npm/nginx/access.log, stream access logs to /opt/npm/nginx/stream.log and enables daily logrotation, default false
- "LOGROTATIONS=7" # Set how often the access.log should be rotated until it is deleted, default 3
- "GOA=true" # Enables goaccess, requires LOGROTATE, default false --- if you download the GeoLite2-Country.mmdb, GeoLite2-City.mmdb AND GeoLite2-ASN.mmdb file from MaxMind and place them in /opt/npm/etc/goaccess/geoip it will automatically enable GeoIP in goaccess after restarting NPMplus (no need to change GOACLA below), you may also use the compose.geoip.yaml
그리고 docker-compose down && docker-compose up -d 로 재시작만 실행해주시면됩니다.
그리고 ip:91번으로 접속하시면 아래와같은 대시보드를 확인해주실 수 있습니다.
끝!