Інструменти командного рядка для аналізу файлів журналів Apache [закрито]


16

У мене є маса файлів журналів Apache, які я хотів би проаналізувати. Я шукаю інструмент, який не потребує великих налаштувань; те, що я можу вести журнал через командний рядок, не возившись на наших живих веб-серверах.

Будь-які рекомендації?


І ОС, яку ви будете використовувати, це ...
Іззі

Linux або MacOSX ...
mmattax

1
"Аналіз" не говорить багато. Що ти намагаєшся зробити? Шукайте рядок, крихти чисел?
Девід

goaccess.prosoftcorp.com безкоштовно та приголомшливо, знайшов його тут: webmasters.stackexchange.com/questions/4852/…
jitbit

Відповіді:


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 дає вам можливість витягувати поля apache-журналу так, ніби вони були фактичними полями, а не просто розділеними простором сутностями. Це завжди те, що я хочу. Тоді я можу трохи більше проаналізувати трубопровід.

Здійснення роботи FSPAT визначено тут: http://www.gnu.org/software/gawk/manual/html_node/Splitting-By-Content.html

Ви можете, таким чином, встановити псевдонім, щоб зробити gawk, який може аналізувати журнали apache:

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, оскільки 12-е - це http-агент, який також може містити багато пробілів у своєму імені. Перші 11 полів легко проаналізувати, і 12-те поле (а може і більше), що залишилося, повинен бути агентом http). Тож ви можете просто: awk '($9 == 200) {print $6,$7,$8}'відображати те саме, що і у вашому прикладі. Там не потрібно використовувати FPAT (хоча цей метод може бути корисним і в інших випадках)
Олів'є Дулак

Я думаю, що ти перекритуєш. Дата є у полі 4, якщо ви вважаєте поле обмеженим []. Більшість часу файл журналу знаходиться в одному часовому поясі, тому зона не потрібна. Сенс показу прикладу полягав не в тому, щоб показати, що таке можливо виключно таким чином, а в тому, щоб показати загальну хитрість.
nic ferrier

1
Я дуже здивований ... Я взагалі не "критикував", лише вказав 2 зауваження (і сказав, що дійсно використаний вами метод може бути корисним в інших випадках, але тут просто не потрібен) ...
Олів'є Дулак

6

wtop класно. Є й інші комунальні послуги. Часто я розбираю журнали, використовуючи bash, sed та awk.


wtop, і спеціально їх лоґрап-аналізатор журналів - чудові, коли ви адаптуєте .conf до свого формату журналу, це забезпечить швидкий спосіб отримати те, що вам потрібно (верхній URL, трафік тощо)
наступні

6

apachetop досить класний; він друкує живу статистику. Ви запускаєте його

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

Щоб встановити його в Debian / Ubuntu:

apt-get install apachetop

або з джерела: https://github.com/JeremyJones/Apachetop


1

Якого виду ви хочете?

Якщо ви просто шукаєте, щоб порахувати речі, тоді зчепіть щось logfile.txt | wc -l відмінно працює. Якщо ви хочете гарних графіків ... не так вже й багато.


Для windows команда find в деякій мірі імітує греп.
Кріс Нава

0

якщо у вас є робоча станція Windows, яку ви можете використовувати, тоді logparser - це інструмент вибору!


0

аналог добре працює з коробки і не вимагає великих налаштувань. logwrangler - це пакет, який працює з аналогом, щоб генерувати кращі результати, а також вимагає невеликих налаштувань.


0

Замість використання інструменту командного рядка я б запропонував спробувати Apache Logs Viewer. Це безкоштовний інструмент, який може контролювати та аналізувати файл журналу Apache. Він може генерувати кілька цікавих графіків та звітів на льоту.

Більше інформації від http://www.apacheviewer.com

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.