У мене є маса файлів журналів 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 дає вам можливість витягувати поля 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"
і, звичайно, зараз можливо майже все інше.
Насолоджуйтесь!
awk '($9 == 200) {print $6,$7,$8}'
відображати те саме, що і у вашому прикладі. Там не потрібно використовувати FPAT (хоча цей метод може бути корисним і в інших випадках)
wtop класно. Є й інші комунальні послуги. Часто я розбираю журнали, використовуючи bash, sed та awk.
apachetop досить класний; він друкує живу статистику. Ви запускаєте його
apachetop -f /var/log/apache2/www.mysite.com.access.log
Щоб встановити його в Debian / Ubuntu:
apt-get install apachetop
або з джерела: https://github.com/JeremyJones/Apachetop
Замість використання інструменту командного рядка я б запропонував спробувати Apache Logs Viewer. Це безкоштовний інструмент, який може контролювати та аналізувати файл журналу Apache. Він може генерувати кілька цікавих графіків та звітів на льоту.
Більше інформації від http://www.apacheviewer.com