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

16

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

Любые рекомендации?

mmattax
источник
И ОС, которую вы собираетесь использовать, это ...
Иззи
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-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"

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

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

Nic Ferrier
источник
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, и особенно их анализатор журналов logrep - это здорово, как только вы адаптируете .conf к вашему формату журнала, это обеспечит быстрый способ получить то, что вам нужно (top url, трафик и т. д.)
aseques
6

apachetop довольно крутой; он печатает живую статистику. Вы запускаете это с

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

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

apt-get install apachetop

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

Oriettaxx
источник
1

Какой вывод вы хотите?

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

Крис Нава
источник
Для окон команда find в некоторой степени имитирует grep.
Крис Нава
0

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

Тони Рот
источник
0

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

BillThor
источник
0

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

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


источник