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?


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

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ę!


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.


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


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.


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!


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.


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.