Skip to main content

CentOS 7에서 GoAccess 셋팅

개요

GoAccess는 유닉스 계열 시스템의 터미널, 사용자의 브라우저에서 돌아가는 오픈 소스 실시간 웹로그 분석기이자, 상호 작용 뷰어라고 합니다. 터미널 기반 로그 분석기다보니,
SSH 같은 터미널로 접속했을 때, 웹 서버 통계를 빠르게 분석할 수 있는 물건입니다.
터미널 출력 말고도 HTML이나 JSON, CSV로 출력하게 할 수도 있다네요.

배경

nginx의 실시간 통계 기능이 있다는 글을 보고, 그 툴이 나름 잘 만들어졌길래 혹시나 하고 정보를 더 찾아봤습니다.

그리고 알게된 사실은 nginx plus라는 상용 프로젝트에 들어 있는 물건으로 많이 비싸다는 것입니다.

nginx 실시간 현황 확인 페이지 설치에 대해서는 후일 또 올리도록 하겠습니다.

결국 이를 대체할 다른 방법이 없을까 찾아봤는데, GoAccess가 가장 괜찮은 대안 같았습니다.

설치

cent OS 7 기준…

sudo yum update
sudo yum install goaccess

이걸로 끝.

컴파일을 하고 싶은데 openssl 오류를 뛰어넘지 못해서 빌드에 이르지 못하고 있습니다.

로그 설정

https://github.com/stockrt/nginx2goaccess

우선 여기 가서 내 서버에 설치 후 저 설명대로 access_log format을 nginx에서 긁어다가 붙여서 변환시켜야 합니다.

access_log (log파일이름) combined로 간편하게 선언하면 GoAccess에서도 아무런 문제 없이 읽어들이는 것을 확인할 수 있습니다.

그러나 저는 Virtual Host로 별도 사이트 운영중이기 때문에 VHOST명을 포함한 로그 수집은 필수였고, 그러면 필히 파싱 오류가 나더군요.

 

옵션

goaccess /var/log/nginx/access.log -o ~/go_report.html --real-time-html

데몬화

*단순 데몬화는 간단합니다. –daemonize만 붙이면 그 순간부터 백그라운드로 잘 실행됩니다.

그러나 제 경우엔 그것만으로는 부족합니다. 자동 실행되어야 합니다.

1.systemd 관련 설정을 위한 파일 생성

[Unit]
Description=GoAccess Live Log Analyzer

[Service]
Type=simple
ExecStart=goaccess /var/log/nginx/access.log -o ~/go_report.html --real-time-html
ExecStop=/bin/kill -9 ${MAINPID}
PrivateTmp=false

[Install]
WantedBy=multi-user.target

/etc/systemd/system/goaccess.service에 root 권한을 써서 생성합니다.

–daemonize는 불필요합니다. 이 자체가 systemd 데몬으로 구동됩니다.

sudo nano /etc/systemd/system/goaccess.service면 될 듯 합니다.

2. systemctl daemon-reload를 써서 위 정보를 서비스로 읽어들입니다.

3. sudo systemctl start goaccess를 쓰면 정상적으로 시작합니다.

이제 서버에서 go_report.html을 읽어보면 잘 작동하는 것을 볼 수 있습니다.

문제점

다만, SSL이 적용된 경우, html 내부에 쓰인 goaccess 구동용 웹소켓 또한 보안으로 암호화되어야 합니다.

아쉽게도 yum에서 손쉽게 설치한 goaccess는 최신 버전인 1.1에서 추가된 openssl 관련 컴파일 옵션이 빠져있습니다.

손수 빌드하셔서 openssl을 포함시켜야 쓸 수 있을 것으로 보입니다.

여담

셋팅 다 해놨더니 불안한 서버 속도를 극복하고자 Cloudflare 캐싱을 활용하게 되었습니다.

접속 경로가 Cloudflare를 경유하게 된 탓에 방문 경로 분석이 무용지물이 되었는데요.

다행히 Google Analytics 스크립트는 영향받지 않으므로 통계 수집에 이상이 없다고 하네요. 그 쪽의 방문자 수 통계를 더 참고해야 할 듯.

역시 본연의 액세스 로그 판단 용도에 맞도록 트래픽이 하드한 파일과 오류 파악에나 신경을 쓰면 되지 싶습니다.

Jinbaek Lee

일본 외노자입니다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다