답변:
여기서 원하는 것은 이러한 로그 파일을 모두 한 번 분석 한 다음 현재 로그 파일 만 계속 분석하는 것입니다.
가장 간단한 방법은 모든 파일을 단일 파일로 압축 해제 한 다음 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는 해당 스크립트의 출력에서 읽습니다 (파이프가하는 것).
logresolvemerge.pl
출력을 awstats로 파이핑 하는 것이 훌륭한 솔루션입니다.
또는 GoAccess와 같은 실시간 로그 분석기를 사용할 수 있습니다. 정말 빠르며 로그를 압축 해제 할 필요가 없습니다.apache & nginx
http://goaccess.prosoftcorp.com/
zcat -f access.log* | goaccess -a -s -b
또는
zcat access.log.*.gz | goaccess -a -s -b