Awstats에 대한 여러 gz 로그 파일을 분석하는 방법은 무엇입니까?


21

나는 awstats에 익숙하지 않고 아파치 웹 서버에서 nginx 액세스 로그를 분석하기 위해 Awstats를 구성했습니다 (nginx 웹 서버는 django 앱 용) 통계를 가져올 수는 LogFile=/var/log/nginx/access.log있지만 gzip 형식의 여러 로그를 분석하는 방법은 무엇 입니까 ? access.log.1.gz ... access.log.40.gz와 같은 분석 할 로그가 많이 있습니다.

답변:


29

여기서 원하는 것은 이러한 로그 파일을 모두 한 번 분석 한 다음 현재 로그 파일 만 계속 분석하는 것입니다.

가장 간단한 방법은 모든 파일을 단일 파일로 압축 해제 한 다음 awstats를 한 번 실행 한 다음 access.log 파일에서 awstats를 지정하는 것입니다.

awstats에는 일반적으로 logresolvemerge.pl이라는 스크립트가 있으며 압축 파일을 읽을 수 있으며 awstats가 분석을 수행 할 수 있도록 적절히 병합합니다.

기존 항목을 모두 병합하려면 다음을 실행하십시오.

perl /usr/share/awstats/tools/logresolvemerge.pl /var/log/nginx/access.log* > /tmp/nginx.tmplog

아마도 시간이 걸릴 것입니다.

그런 다음이 파일에 대해 awstats를 한 번만 실행할 수 있습니다 (LogFile을 적절하게 설정).

그런 다음 가장 최근의 로그 파일에서 awstats를 실행해야합니다. 이것이 현재 구성이 수행하는 작업입니다.

얼마나 자주 awstats를 실행하고 nginx 로그 파일을 회전하는지에 따라 현재 로그 파일과 이전 로그 파일을 모두 읽도록 할 수 있습니다. (예를 들어, 매일 12시에 nginx 로그 파일을 회전하지만 awstats가 매일 1에 실행되는 경우, awstats가 실행될 때마다 로그 파일에는 마지막 회전 이후 작성된 내용 만 포함됩니다). 다음과 같이 LogFile 명령 내에서 logresolvemerge.pl을 사용할 수 있습니다.

LogFile="/usr/share/awstats/tools/logresolvemerge.pl /var/log/nginx/access.log /var/log/nginx/access.log.1.gz |"

이것은 awstats에게 두 개의 logfile을 매개 변수로 사용하여 logresolvemerge.pl 명령을 실행하도록 지시하고 awstats는 해당 스크립트의 출력에서 ​​읽습니다 (파이프가하는 것).


awstats 스크립트가 구성 파일에서 파이프를 처리 할 수 ​​있다는 것을 몰랐습니다. 니스 +1.
d -_- b

합의- logresolvemerge.pl출력을 awstats로 파이핑 하는 것이 훌륭한 솔루션입니다.
Jez


7

또는 GoAccess와 같은 실시간 로그 분석기를 사용할 수 있습니다. 정말 빠르며 로그를 압축 해제 할 필요가 없습니다.apache & nginx

http://goaccess.prosoftcorp.com/

zcat -f access.log* | goaccess -a -s -b

또는

zcat access.log.*.gz | goaccess -a -s -b
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.