Какое есть веб-приложение для поиска по лог-файлам?
У нас есть распределенная веб-система, которая пишет очень много логов. Мы сделали так, что все логи сливаются на один сервер. Посоветуйте веб-приложение для поиска в логах.
Хочется объединять логи в группы. А искать по строке, периоду дат и группе. Чтобы система не пересматривала все логи, а искала только в нужных (согласно группе и периоду). В данный момент период задается в имени файла (например api_201401.log - январь 2014), но мы конечно можем подстроиться под систему поиска и поменять формат имени файла.
Внутри файла тоже формат специфический. Как правило записи в логах многострочные, но каждая строка начинается с даты, времени и некого идентификатора сессии.
Например:
2014-01-01 00:00:02 [f5400c] Bla-bla-bla...
Хочется при нахождении строки также выводить все строчки лога данной сессии.
Существует ли система, которая может решить данную задачу или писать свое? Или есть хорошая система и при некотором изменении наших логов, она может решить данную задачу? Спасибо.
Спасибо, ковыряю сейчас это все. Может Вы сможете ответить на вопрос. Часто по запросу я нахожу несколько записей, которые произошли точно в одно и то же время. Система как-то странно их сортирует, а вернее выводит их совершенно без сортировки (в пределах одной таймстемп). Можно ли как-то вывести записи в том же порядке, в котором они находились в исходном логе?
что значит "точно в одно и то же время"? Это лишь вопрос точности таймстампа. Коммерческие решения еще и свой таймстамп добавляют, либо в момент получения строчки лога (если собирается удаленный), либо в момент его обработки системой. Не уверен, делает ли это logstash.
Да, logstash это делает. Вот сейчас провел эксперимент со своими старыми логами. Если позволить logstash добавить свой таймстамп, он делает это с точностью до мс, но все равно некоторые записи добавляются с абсолютно одинаковым таймстампом. В итоге неправильная сортировка. Попробовал еще столбец _id, но там не автоинкремент, а хеши, по которым тоже сортировать бессмысленно. В общем пока проблема осталась, а для меня порядок следования записей очень важен.
@sevka_fedoroff так какой таймстам само приложение генерит (источник логов)? Увеличить точность до мкс и забыть про проблему. Странно слышать, последовательность НАСТОЛЬКО важна, но при этом в исходном приложении это не предусмотрено? Уникальный сквозной последовательный айдишник и/или более точный таймстамп - и всё.
До этого искали по логам грепом, и все было отлично, потому что греп выводит строки в той же последовательности, в которой они лежат в файле.
В приложении то сделать все можно. Хотелось обработать старые логи, не изменяя их. Т.е. написать нечто в рамках того же logstash (кстати об айдишнике я и думал), чтобы можно было порядок строк сохранить. Я понимаю, что elasticsearch хранит все в nosql базе и там нет автоинкрементных id. Попробую микросекунды, спасибо.
Бесплатная версия splunk, если уложитесь в лимит 500 мегабайт логов в день.
Ну а так из opensource - logstash + elasticsearch+kibana или graylog + elasticsearch
Еще у HP есть продукт ArcSight Logger, бесплатен до 750Мб/сутки.