xenon
@xenon
Too drunk to fsck

Есть ли способ для угадывания шаблонов в логах?

Есть ли какой-то метод (модуль, утилита) как обнаружить шаблоны сообщений в логах? Например, у нас есть лог вроде:
00:00:01 User John logged in from IP 1.1.1.1
00:00:02 User Jack logged in from IP 2.2.2.2
00:00:03 User John sent email to aaa@bbb.com
....


Например, по этому куску должны построиться шаблоны:
<регекс времени> User <регекс юзера> logged in from IP <регекс IP>
<регекс времени> User <регекс юзера> sent email to <регекс email>


Думаю, построить точный регекс по логу, без понимания семантики невозможно (например, допустимы ли у нас русские буквы или цифры в юзернеймах; может ли в IP быть октет со значением больше 255) - фиг с ним, игнорируем эту проблему. Делаем не очень аккуратные регексы - это ОК. Но регекс не должен путать записи одного типа с записями другого.

Идея в том, чтобы взять какой-нибудь mail.log и в нем же будет всего 100-200 типов сообщений от MTA, антиспама, pop3/imap сервера - вот хочется как-то легко разбить все записи на эти вот типы сообщений.
  • Вопрос задан
  • 102 просмотра
Пригласить эксперта
Ответы на вопрос 2
drygdryg
@drygdryg
Python-разработчик
Возможно, вам стоит посмотреть, как реализованы анализаторы логов в проекте GoAccess: https://github.com/allinurl/goaccess и взять общие принципы оттуда.
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Сомнительно что по огрызку лога ты сможешь нарисовать более-менее полный шаблон. Как вспомогательная подсказка при разработке парсера - это хорошо. Но как авто-генерация парсера логов на все времена - это плохо.
Да и вообще message не специфицирован в логах аж нигде и никогда. Сиди наблюдай его хоть целую неделю а потом на следующей неделе прилетит exception или нечто новое и вся твоя работа будет вечной недоделкой.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы