분석하려는 Apache 로그 파일이 많이 있습니다. 많은 설정이 필요없는 도구를 찾고 있습니다. 라이브 웹 서버를 엉망으로 만들지 않고 명령 줄을 통해 로그를 실행할 수 있습니다.
어떤 추천?
분석하려는 Apache 로그 파일이 많이 있습니다. 많은 설정이 필요없는 도구를 찾고 있습니다. 라이브 웹 서버를 엉망으로 만들지 않고 명령 줄을 통해 로그를 실행할 수 있습니다.
어떤 추천?
답변:
위의 도구가 모두 멋지지만 질문자가 무엇을 요구했는지 알고 있습니다. 다른 파일로 할 수있는 방식으로 액세스 로그에서 정보를 가져올 수 없다는 것이 종종 고통 스럽습니다.
바보 액세스 로그 형식 때문입니다.
127.0.0.1 - - [16/Aug/2014:20:47:29 +0100] "GET /manual/elisp/index.html HTTP/1.1" 200 37230 "http://testlocalhost/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0"
왜 날짜에 []를 사용하고 다른 것에 ""를 사용 했습니까? 그들은 우리가 4 번 필드에 날짜가 있다는 것을 모른다고 생각 했습니까? 엄청나게 실망 스럽습니다.
현재 가장 좋은 도구는 gawk입니다.
gawk 'BEGIN { FPAT="([^ ]+)|(\"[^\"]+\")|(\\[[^\\]]+\\])" } { print $5 }'
위의 데이터를 통해 다음과 같은 결과를 얻을 수 있습니다.
"GET /manual/elisp/index.html HTTP/1.1"
다시 말해, FPAT는 공간 분리 된 엔티티가 아닌 실제 필드 인 것처럼 아파치 로그의 필드를 끌어낼 수있는 기능을 제공합니다. 이것은 항상 내가 원하는 것입니다. 그런 다음 파이프 라인으로 조금 더 파싱 할 수 있습니다.
FSPAT 작업을 만드는 것은 여기에 정의되어 있습니다 : http://www.gnu.org/software/gawk/manual/html_node/Splitting-By-Content.html
따라서 아파치 로그를 구문 분석 할 수있는 별명을 만들도록 별명을 설정할 수 있습니다.
alias apacheawk="gawk -vFPAT='([^ ]+)|(\"[^\"]+\")|(\\\\[[^\\\\]]+\\\\])' "
apacheawk '$6 ~ /200/ { print $5 } | sort | uniq
나를 위해 이것을 만들었다 :
"GET / HTTP/1.1"
"GET /manual/elisp/index.html HTTP/1.1"
"GET /manual/elisp/Index.html HTTP/1.1"
"GET /scripts/app.js HTTP/1.1"
"GET /style.css HTTP/1.1"
물론 거의 모든 것이 가능합니다.
즐겨!
awk '($9 == 200) {print $6,$7,$8}'
당신의 예제와 같은 것을 표시하십시오. FPAT를 사용할 필요가 없습니다 (이 방법은 다른 경우에 유용 할 수 있음)
아파치 탑 은 꽤 시원합니다. 실시간 통계를 인쇄합니다. 당신은 그것을 실행
apachetop -f /var/log/apache2/www.mysite.com.access.log
데비안 / 우분투에 설치하려면 :
apt-get install apachetop
어떤 종류의 출력을 원하십니까?
당신이 단지 물건을 세고 싶다면 grep 무언가 logfile.txt | 화장실 -l 잘 작동합니다. 당신이 예쁜 그래프를 원한다면 ... 별로는 아닙니다.
커맨드 라인 도구를 사용하는 대신 Apache Logs Viewer를 사용해 볼 것을 제안합니다. Apache Log File을 모니터링하고 분석 할 수있는 무료 도구입니다. 그것은 매우 멋진 그래프와 보고서를 즉시 생성 할 수 있습니다.