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

Могу ли я заставить apache регистрировать только некоторые запросы?

Мои файлы журналов apache становятся слишком большими, и я ищу способы сделать их более управляемыми.

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

Есть ли что-то подобное?

Я использую ubuntu 8.04 с apache 2 и использую хронолог для вращения журнала.

Почему бы не поворачивать бревна чаще? Если еженедельная ротация дает слишком много журналов, переворачивайте их каждый день. Если каждый день, поворачивайте их каждый час. Проблема этого решения - в анализаторах логов, таких как webalizer: их нужно соответствующим образом настроить.

Я предпочитаю регистрировать все, потому что, когда у вас есть проблема, у вас никогда не бывает слишком много информации. А с учетом фактических цен на диски для меня нет вопроса о емкости.

Я могу придумать три варианта уменьшения размера файла журнала.

  1. Уменьшите размеры журналов, сжав их. AFAIK это опция syslogd.
  2. Регистрируйте только то, что может быть полезно. Самый простой способ - исключить бесполезный запрос (например, изображения, CSS, js и т. Д.) На основе их полного URL-адреса (таким образом вы сохраните неожиданные попытки взлома).
  3. Сделайте так, чтобы Apache регистрировал только часть трафика.

Один из возможных способов сделать это - упомянутое вами условное ведение журнала. Теперь условное ведение журнала использует функцию SetEnvIf Apache. Фактические спецификации синтаксиса SetEnvIf штат:

 SetEnvIf attribute regex [!]env-variable[=value] [[!]env-variable[=value]] ...

Итак, как насчет использования этого выражения, которое соответствует только «четным» (или «нечетным») IP-адресам Remote_Addr? Вы можете сократить его еще больше, еще больше ограничив диапазоны IP.

Конечно, вы также можете посмотреть причину своего вопроса здесь: что делает файлы журнала «слишком большими» и «неуправляемыми»? Какую информацию они хранят для вас?

Вы можете контролировать формат журнала с помощью директивы LogFormat.

Если проблема в объеме, подумайте http://www.mrunix.net/webalizer/ который вы можете запустить с помощью cron и получить красивую графику. Я думаю, что он даже заглядывает в старые журналы, которые были заархивированы logrorate.

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

perl -ne 'print unless (0 != $. % 20)' logfile.txt