Goaccess 로 Nginx Proxy Manager 실시간 대시보드 만들기.
안녕하세요. 달소입니다.
앞서 Swag의 로그분석 대시보드를 분석하면서 비슷한 툴인 Nginx Proxy Manager(NPM)에서도 비슷한게 있을것같아서 구글링 하던중에 발견했습니다.
Docker로 간단하게 구축이 가능하기때문에 관심있으신분들은 한번 해보시면 좋을듯합니다~
먼저 완성본 사진을 간단하게 보여드리면 NPM으로 들어오는 요청들의 로그에 대해서 실시간으로 대시보드를 구축해줍니다.
이런식으로 보여줍니다.
보여주는 정보도 꽤많습니다.
접근 브라우저,접근 ip등 nginx 액세스 로그로 나오는거의 모든것들을 대시보드 형태로 보여줍니다.
소개는 이쯤하고.. 한번 진행해보겠습니다.
구축 환경
Ubuntu 20.04 LTS
Docker
NPM 공식이미지 - https://hub.docker.com/r/jc21/nginx-proxy-manager
Goaccess 이미지 - https://hub.docker.com/r/gregyankovoy/goaccess
NPM의 로그 저장 경로를 미리 확인해줍니다.
저같은경우 /data/npm/data/logs경로에 로그를 저장하고있습니다.
여기서 저장되는 로그들은 NPM에서 proxy host로 설정한 호스트들의 로그입니다.
저같은경우 현재 11개의 프록시 호스트를 사용하고있어서 11개를 모두 넣어보겠습니다.
Goaccess 컨테이너 생성하기
log의 경우 NPM의 로그를 사용하기때문에 따로 저장할 필요는 없고 config를 볼륨매칭 시켜줄 디렉터리만 만들어주겠습니다.
mkdir -p /data/goaccess/config
컨테이너는 아래 명령어로 생성합니다.
docker run --name goaccess -p 7889:7889 -v /data/npm/data/logs:/opt/log -v /data/goaccess/config:/config -d gregyankovoy/goaccess
최초실행시에는 위처럼 이미지를 받아서 실행하게 되는데요.
여기서 config 파일을 수정해줘야되기때문에 해당경로로 먼저 이동해줍니다.
cd /data/goaccess/config/
보시면 기본 goaccess.conf 파일이있는데 이건 파일을 이동해주시고 새로 파일을 만들어주실것입니다.
mv goaccess.conf goaccess.conf.bak
그리고 vi 편집기로 새로운 conf 파일을 만들어줍니다.
vi goaccess.conf
내용은 아래처럼 작성해주시면됩니다. 사용하고싶은 access log수에 따라서 더 추가해주시거나 빼주시면됩니다.
time-format %H:%M:%S date-format %d/%b/%Y log_format [%d:%t %^] - %s %^ - %m %^ %v "%U" [Client %h] [Length %b] [Gzip %^] [Sent-to %^] "%u" "%R" real-time-html true log-file /opt/log/proxy-host-1_access.log log-file /opt/log/proxy-host-2_access.log log-file /opt/log/proxy-host-3_access.log log-file /opt/log/proxy-host-4_access.log log-file /opt/log/proxy-host-5_access.log log-file /opt/log/proxy-host-6_access.log log-file /opt/log/proxy-host-7_access.log log-file /opt/log/proxy-host-8_access.log log-file /opt/log/proxy-host-9_access.log log-file /opt/log/proxy-host-10_access.log log-file /opt/log/proxy-host-11_access.log
수정을 완료하셨으면 esc 를 누르시고 :wq 로 저장해줏세요.
이제 컨테이너를 재시작 시키겠습니다.
이제 포트매핑해준 ip:7889 포트로 접근해주세요.
이렇게 대시보드가 잘 나오시면 성공입니다~
+++++
프록시마다 로그명을 부여해주고싶으시다면 NPM의 프록시 호스트 셋팅에서 아래처럼 로그경로를 지정해주셔도 됩니다.
이 방법 오라클ARM에서는 작동 안되겠죠?
그럴 것으로 보입니다. 공식 이미지는 amd만 지원하고 동일한 이름의 도커는 arm을 지원하나 제대로 된 문서가 보이지 않는군요...
아깝네요.....
해당 goaccess 이미지 업데이트가 2년 전인데... 괜찮을까요??
서비스용도보다는 이미생성된 로그를 가지고 모니터링하는거라 괜찮을듯합니다ㅎㅎ
cmt alert