У меня периодически возникает одна и таже задача - очень быстро искать нужный текст в логах. Логи большие. Могут быть по терабайту. Россыпь файлов типа
application/log-2023-02-16-12-30.log
application/log-2023-01.gz
Загружать их в эластик - некогда обычно. Тут работа такая что нужно за час разобратсья и логи потом можно
выкинуть.
Вот есть сделать предложение - создать утилиту igrep (index-grep) которая при первом пуске - быстро проиндексирует по датам и словам.
И при полседующих будет искать быстро. И диапазон учитывать например.
Классический греп не подходит. Он все равно ищет линейно. Не учитывая даты. А мне надо так.
$ igrep time=-12h level=ERROR Tomcat Network Error
Вот. Здесь я как-бы захотел поискать все события за 12 часов назад уровня ошибки и содержащие
два ключевых слова.
Сами файлы обычно внутри структурированы так. Это почти всегда шаблон.
2023-02-16T00:00:01,000 [Info] Server started.
Есть метка времени. Уровень события. И текст события. Много-строчники (стектрейсы) можно соединять в одну строку. О длине самих файлов - ничего не известно. Могут быть от мелких (дневных) до архивов.
Вот такая вот задача. На мой взгляд - практичная. И есть где позаниматся оптимизацией. Дисковая
оптимизация. Индексные структуры. И размышления на тему как вообще в одном тексте искать
другой текст.
UPD.