Narzędzia wiersza poleceń do analizy plików dziennika Apache [zamknięte]

16

Mam kilka plików dziennika Apache, które chciałbym przeanalizować. Szukam narzędzia, które nie wymaga dużej konfiguracji; coś, co mogę uruchomić dziennik za pomocą wiersza polecenia, bez bałaganu na naszych serwerach internetowych na żywo.

Jakieś rekomendacje?

mmattax
źródło
System operacyjny, którego będziesz używać, to ...
Izzy
Linux lub MacOSX ...
mmattax
1
„Analiza” niewiele mówi. Co próbujesz zrobić? Poszukaj ciągu, chrupiących liczb?
David
goaccess.prosoftcorp.com darmowy i niesamowity, znalazł go tutaj: webmasters.stackexchange.com/questions/4852/…
jitbit

Odpowiedzi:

7

Chociaż wszystkie powyższe narzędzia są fajne, myślę, że wiem, o co pytał pytający. Często boli mnie, że nie mogę wyciągnąć informacji z dziennika dostępu w sposób, w jaki mogę to zrobić z innymi plikami.

Wynika to z głupiego formatu dziennika dostępu:

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"

Dlaczego użyli [] do daty i „” do innych celów? czy myśleli, że nie wiedzielibyśmy, że data jest w polu 4? To niezwykle frustrujące.

Obecnie najlepszym narzędziem do tego jest gawk:

gawk 'BEGIN { FPAT="([^ ]+)|(\"[^\"]+\")|(\\[[^\\]]+\\])" } { print $5 }'

na powyższych danych dałoby to:

"GET /manual/elisp/index.html HTTP/1.1"

Innymi słowy, FPAT daje możliwość wyciągnięcia pól dziennika apache, tak jakby były rzeczywistymi polami, a nie tylko jednostkami oddzielonymi spacjami. Tego zawsze chcę. Następnie mogę to jeszcze bardziej przeanalizować za pomocą potoku.

Tworzenie FSPAT jest zdefiniowane tutaj: http://www.gnu.org/software/gawk/manual/html_node/Splitting-By-Content.html

Możesz więc ustawić alias, aby utworzyć gawk, który może analizować dzienniki Apache:

alias apacheawk="gawk -vFPAT='([^ ]+)|(\"[^\"]+\")|(\\\\[[^\\\\]]+\\\\])' " apacheawk '$6 ~ /200/ { print $5 } | sort | uniq

zrobił to dla mnie:

"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"

i oczywiście prawie wszystko inne jest teraz możliwe.

Cieszyć się!

ładniejszy przewoźnik
źródło
1
2 uwagi: Data nie jest tak naprawdę w polu 4, ale w polach 4 + 5 ^^ (bez zmiany z GMT data ma niewielką wartość). A dziennik dostępu ma przeważnie postać 12 pól (w rzeczywistości może być więcej niż 12 pól, ponieważ 12 to agent http, który może zawierać także wiele spacji w swojej nazwie. Pierwsze 11 pól jest łatwych do przeanalizowania, a pozostałe 12 pole (i być może więcej) powinno być agentem http). Możesz więc po prostu: awk '($9 == 200) {print $6,$7,$8}'wyświetlić to samo, co w przykładzie. Nie trzeba tam używać FPAT (chociaż ta metoda może być przydatna w innych przypadkach)
Olivier Dulac
Myślę, że przesadzasz. Data jest w polu 4, jeśli uważasz, że pole jest ograniczone przez []. Przez większość czasu plik dziennika znajduje się w jednej strefie czasowej, więc strefa nie jest konieczna. Celem pokazania przykładu nie było pokazanie, że coś jest możliwe wyłącznie w ten sposób, ale pokazanie ogólnej sztuczki.
nic ferrier
1
Jestem bardzo zaskoczony ... W ogóle „nie krytykowałem”, tylko wskazałem 2 uwagi (i powiedziałem, że rzeczywiście zastosowana metoda może być przydatna w innych przypadkach, ale tutaj nie jest potrzebna) ...
Olivier Dulac
6

wtop jest fajny. Są też inne narzędzia. Często parsuję logi za pomocą bash, sed i awk.

Warner
źródło
wtop, a zwłaszcza ich logrep analizatora logów, są świetne, gdy dostosujesz .conf do formatu logu, zapewni to szybki sposób na uzyskanie potrzebnych informacji (najwyższy adres URL, ruch itp.)
to
6

apachetop jest całkiem fajny; drukuje statystyki na żywo. Uruchamiasz to z

apachetop -f /var/log/apache2/www.mysite.com.access.log

Aby zainstalować go w Debian / Ubuntu:

apt-get install apachetop

lub ze źródła: https://github.com/JeremyJones/Apachetop

Oriettaxx
źródło
1

Jakiego rodzaju wyników chcesz?

Jeśli chcesz tylko policzyć, grep coś logfile.txt | wc -l działa świetnie. Jeśli chcesz ładne wykresy ... nie tak bardzo.

Chris Nava
źródło
W systemie Windows polecenie find do pewnego stopnia naśladuje grep.
Chris Nava,
0

jeśli masz stację roboczą z systemem Windows, której możesz użyć, to logparser jest narzędziem z wyboru!

Tony Roth
źródło
0

Analog działa dobrze po wyjęciu z pudełka i nie wymaga dużej konfiguracji. logwrangler to pakiet, który działa z analogiem w celu generowania ładniejszego wyjścia, a także wymaga niewielkiej konfiguracji.

BillThor
źródło
0

Zamiast korzystać z narzędzia wiersza polecenia, proponuję spróbować Apache Logs Viewer. To bezpłatne narzędzie, które może monitorować i analizować plik dziennika Apache. Może generować całkiem fajne wykresy i raporty w locie.

Więcej informacji z http://www.apacheviewer.com


źródło