Apache 로그 파일을 분석하기위한 명령 줄 도구


16

분석하려는 Apache 로그 파일이 많이 있습니다. 많은 설정이 필요없는 도구를 찾고 있습니다. 라이브 웹 서버를 엉망으로 만들지 않고 명령 줄을 통해 로그를 실행할 수 있습니다.

어떤 추천?


그리고 당신이 사용하게 될 OS는 ...
Izzy

Linux 또는 MacOSX ...
mmattax

1
"분석"은 많은 것을 말하지 않습니다. 무엇을하려고합니까? 문자열, 위기 번호를 찾으십니까?
David

답변:


7

위의 도구가 모두 멋지지만 질문자가 무엇을 요구했는지 알고 있습니다. 다른 파일로 할 수있는 방식으로 액세스 로그에서 정보를 가져올 수 없다는 것이 종종 고통 스럽습니다.

바보 액세스 로그 형식 때문입니다.

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"

물론 거의 모든 것이 가능합니다.

즐겨!


1
2 비고 : 날짜는 실제로 필드 4가 아니라 필드 4 + 5 ^^에 있습니다 (GMT에서 변경하지 않으면 날짜의 가치가 거의 없음). 그리고 access_log는 대부분 12 개의 필드를 구성합니다 (실제로 12 번째 필드는 이름에 많은 공백을 포함 할 수있는 http 에이전트이므로 12 개 이상의 필드가있을 수 있음). 처음 11 개의 필드는 구문 분석하기가 쉽습니다. 나머지 12 번째 필드는 http 에이전트 여야합니다. 그래서 당신은 할 수 있습니다 : awk '($9 == 200) {print $6,$7,$8}'당신의 예제와 같은 것을 표시하십시오. FPAT를 사용할 필요가 없습니다 (이 방법은 다른 경우에 유용 할 수 있음)
Olivier Dulac

당신이 너무 비판하고 있다고 생각합니다. 필드를 []로 묶은 것으로 간주하면 날짜는 필드 4에 있습니다. 대부분의 경우 로그 파일이 한 시간대에 있으므로 해당 영역이 필요하지 않습니다. 예제를 보여주는 요점은 이런 방식으로 무언가가 독점적으로 가능했다는 것이 아니라 일반적인 트릭을 보여주는 것이 었습니다.
nic ferrier

1
나는 매우 놀랐습니다 ... 나는 전혀 "비평"하지 않았으며, 단지 2 개의 발언 만 지적했습니다. (실제로 사용한 방법이 다른 경우에는 유용 ​​할 수 있지만 여기서는 필요하지 않습니다.) ...
올리비에 Dulac

6

wtop 은 시원하다. 다른 유틸리티도 있습니다. 종종 bash, sed 및 awk를 사용하여 로그를 구문 분석합니다.


wtop, 특히 로그 분석기 logrep은 훌륭합니다. 일단 .conf를 로그 형식으로 조정하면 필요한 정보 (최상위 URL, 트래픽 등)를 빠르게 얻을 수 있습니다.
aseques


1

어떤 종류의 출력을 원하십니까?

당신이 단지 물건을 세고 싶다면 grep 무언가 logfile.txt | 화장실 -l 잘 작동합니다. 당신이 예쁜 그래프를 원한다면 ... 별로는 아닙니다.


Windows의 경우 find 명령은 grep을 어느 정도 모방합니다.
Chris Nava

0

사용할 수있는 Windows 워크 스테이션이 있으면 logparser가 선택되는 도구입니다!


0

아날로그는 기본적으로 잘 작동하며 많은 설정이 필요하지 않습니다. logwrangler는 더 나은 출력을 생성하기 위해 아날로그와 함께 작동하는 패키지이며 설치가 거의 필요하지 않습니다.


0

커맨드 라인 도구를 사용하는 대신 Apache Logs Viewer를 사용해 볼 것을 제안합니다. Apache Log File을 모니터링하고 분석 할 수있는 무료 도구입니다. 그것은 매우 멋진 그래프와 보고서를 즉시 생성 할 수 있습니다.

http://www.apacheviewer.com의 추가 정보

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