Назад | Перейти на главную страницу

Инструменты командной строки для анализа файлов журналов 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-log, как если бы они были фактическими полями, а не просто объектами, разделенными пробелами. Я всегда этого хочу. Затем я могу еще немного разобрать это с помощью конвейера.

Здесь определяется принцип работы 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"

и, конечно, теперь возможно почти все остальное.

Наслаждайтесь!

Apachetop довольно круто; выводит статистику в реальном времени. Вы запускаете это с

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

Чтобы установить его в Debian / Ubuntu:

apt-get install apachetop

или из источника: https://github.com/JeremyJones/Apachetop

wtop это круто. Есть и другие утилиты. Часто я анализирую журналы с помощью bash, sed и awk.

Какой результат вы хотите?

Если ты просто хочешь посчитать, тогда grep something logfile.txt | wc -l прекрасно работает. Если вам нужны красивые графики ... не очень.

Если у вас есть рабочая станция с Windows, которую вы можете использовать, то лучше всего подойдет logparser!

аналог хорошо работает «из коробки» и не требует большой настройки. logwrangler - это пакет, который работает с аналогом для создания более приятного вывода, а также требует небольшой настройки.

Вместо использования инструмента командной строки я бы предложил попробовать Apache Logs Viewer. Это бесплатный инструмент, который может отслеживать и анализировать файл журнала Apache. Он может генерировать довольно интересные графики и отчеты на лету.

Больше информации от http://www.apacheviewer.com