Большой лог-файл Apache grep - PullRequest
       7

Большой лог-файл Apache grep

13 голосов
/ 17 ноября 2011

Мне нужно проанализировать файл журнала Apache, чтобы найти определенные подозрительные шаблоны (например, инъекции SQL).

Например я ищу id='%20or%201=1;

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

Вот моя команда:

grep 'id=' Apache.log | egrep "' or|'%20"

Есть ли лучший или более быстрый метод или команда, которые мне нужно использовать для ускорения поиска?

Ответы [ 3 ]

22 голосов
/ 17 ноября 2011

Для начала вам не нужно направлять вывод grep в egrep.egrep предоставляет расширенный набор парсинга регулярного выражения grep, поэтому вы можете просто сделать это:

egrep "id='( or|%20)'" apache.log

Вызов egrep идентичен вызову grep -E.

Это может немного повысить производительность.Если вы можете искать фиксированные строки, а не регулярные выражения, это также может помочь.Вы можете указать grep искать фиксированную строку с опцией -F:

grep -F "id='%20or" apache.log

Но при использовании фиксированных строк вы теряете большую гибкость.

0 голосов
/ 17 ноября 2011

Вы ищете grep -E "id=(' or|'%20)" apache.log?

0 голосов
/ 17 ноября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...