Pull to refresh

Анализатор логов PHP-на-Apache

Reading time 2 min
Views 12K
Решил написать об одной полезной утилите, которую написал в августе и уже два месяца успешно использую.
Утилита сводит к минимуму усилия по слежению за логами ошибок PHP.

Проблема: Лог ошибок — это файл с кучей строк, из которых большинство повторяются. Поэтому вручную их никто не читает, пока не возникнут какие-то жесткие проблемы. Это неправильно. Логи ошибок на то и существуют, чтобы их регулярно просматривать, а ошибки — устранять.

Решение: Jenkins. Что умеет эта утилита?
  • находить в логе Apache сообщения о ошибках PHP;
  • группировать сообщения об одной и той же ошибке;
  • подсчитывать количество повторений каждой ошибки и время последнего обнаружения;
  • формировать HTML-отчет по пачке логов;
  • отправлять результат выполнения на почту;
  • самостоятельно ротировать логи.


Пример простейшего использования — повесить на крон:
05 00 * * * www ~/scripts/jenkins.php -mme@coldflame.in.ua -r/var/log/apache2/*.error.log

Утилита будет запускаться в пять минут после полуночи, собирать все логи по указанной маске (из расчета, что на каждую площадку отдельный лог-файл), и отсылать результат на указанный e-mail, после чего ротировать логи. Очень удобно. Кусок письма с результатом:
Jenkins report for somesite.com-error.log

Total lines in log: 1750525
Lines recognized as PHP errors: 1748006
Unique PHP error messages: 40

Error messages
Notice: blah-blah-blah [/home/user/file.php:380] (1234 times, last seen on 24.08.08 00:36)
Notice: foobar [/home/user/other-file.php:123] (14 times, last seen on 24.08.08 12:34)
… etc


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

Скачать. Предложения и пожелания можете слать мне любым удобным способом.
Tags:
Hubs:
+5
Comments 22
Comments Comments 22

Articles