Вопрос про анализ логов
Apr. 11th, 2014 02:06 pmСейчас принято все ошибки гнать в лог. Есть ли тулы, позволяющие делать сложные запросы к стандартным логам? Нужно, чтобы логи читались в реалтайме и при происхождении каких-нибудь событий, программа реагировала бы (Не в том, смысле, чтобы гнать весь лог в GUI, а чтобы звоночек звенел, если кто-то зашёл с сайта X и сделал Y).
Для начала для стандартных логов, но хочется, чтобы можно было загонять любые правила.
Посмотрел на страницу. Дочитало текст про тест и нажало на линк шесть человек. Из стартаперов заглянули тоже шесть, но, подозреваю, дальше третьей строчки они не читали.
Для начала для стандартных логов, но хочется, чтобы можно было загонять любые правила.
Посмотрел на страницу. Дочитало текст про тест и нажало на линк шесть человек. Из стартаперов заглянули тоже шесть, но, подозреваю, дальше третьей строчки они не читали.
no subject
Date: 2014-04-11 12:12 pm (UTC)no subject
Date: 2014-04-11 01:45 pm (UTC)Интересно не собирать статистику, а задавать правила "Если А и Б, то посылаем сообщение С"
no subject
Date: 2014-04-11 02:00 pm (UTC)no subject
Date: 2014-04-11 02:25 pm (UTC)Аналогично. Но задача в принципе стандартная. Я думал, мониторинг по логам кто-нибудь уже автоматизировал.
no subject
Date: 2014-04-11 01:47 pm (UTC)no subject
Date: 2014-04-11 02:21 pm (UTC)no subject
Date: 2014-04-11 02:23 pm (UTC)no subject
Date: 2014-04-11 02:27 pm (UTC)Идей у меня столько, что можно лет на десять уходить в дауншифтинг и только ими и заниматься.
no subject
Date: 2014-04-11 02:31 pm (UTC)no subject
Date: 2014-04-11 03:11 pm (UTC)Я в это время как раз картинку к следующему посту правил. :-)
no subject
Date: 2014-04-11 02:30 pm (UTC)no subject
Date: 2014-04-11 03:03 pm (UTC)no subject
Date: 2014-04-11 04:30 pm (UTC)no subject
Date: 2014-04-11 03:01 pm (UTC)п.с. а что ты подразумеваешь под "стандартными логами"?
no subject
Date: 2014-04-11 03:07 pm (UTC)А на коленке получится опять зоопарк скриптов командной строки. Хочется какого-нибудь BI, чтобы не писать очередную программу под каждый запрос.
no subject
Date: 2014-04-11 05:11 pm (UTC)no subject
Date: 2014-04-11 07:05 pm (UTC)Maltego - это не то. Хотя сама идея интересная.
а зачем в логи со сложными запросами?
Date: 2014-04-11 05:17 pm (UTC)> "Если А и Б, то посылаем сообщение С"
Ну вот что такое А и Б? Что за такие условия вы собрались искать в логах апача или скажем томката, что попадало бы под такие требования, и чтобы это было сложнее регулярного выражения?
Если в логах есть сообщения уровней warning и error, то вообще говоря, это уже повод для разборок, а условие тут тривиальное до безобразия.
Не далее как вчера видел самописное решение, которое:
а) просматривает все файлы в определенных папках, отбирая те, которые мы еще не видели с предыдущего запуска
б) ищет в каждом файле что-то (тут просто регулярные выражения)
в) если что-то нашли - складываем это в отчет (несколько дополнительных строк начиная с найденной)
Не верю, что нет аналогичного готового, по-моему на базе log4j как раз такое было.
Отчет посылаем почтой кому следует, приложив сами логи к нему же (целиком), для ручного анализа. И это все. Остальное без уточнения требований будет сильно лишним. В том числе - требований к размерам (а то некоторые имеют привычку все логи засовывать куда-нибудь в Hadoop и там переваривать).
И потом, при нормально сделанной системе логирования в логи обычно пишется что-то, что позволяет идентифицировать сеанс пользователя. В этом случае вместо нескольких дополнительных строк можем отбирать все, что относилось к этому сеансу - потому что если это не аппаратная проблема, то она обычно связана с конкретным пользователем и его use case. Да если и аппаратная - тоже пожалуй может, какие-то сетевые проблемы запросто могут быть характерны для определенных пользователей.
Re: а зачем в логи со сложными запросами?
Date: 2014-04-11 07:15 pm (UTC)Можно установить триггер на "что-то пошло не так", а что именно - это разбирается после первого случая, загоняется в систему и потом обрабатывается.
Re: а зачем в логи со сложными запросами?
Date: 2014-04-11 07:21 pm (UTC)Можно установить триггер на "что-то пошло не так", а что именно - это разбирается после первого случая, загоняется в систему и потом обрабатывается.
Ну вот что такое А и Б? Что за такие условия вы собрались искать в логах апача или скажем томката, что попадало бы под такие требования, и чтобы это было сложнее регулярного выражения?
Логи, естественно, парсятся и записи разбиваются по информационным блокам. Потом единица информации проверяется или на совпадение, или регулярным выражением или ещё как. Естетвенно, правила нужно будет собирать в комбинации and, or и скобками, иначе это не интересно.
Ручками я всё время разбираю. Хочется чего-то на более высоком уровне.
no subject
Date: 2014-04-11 06:12 pm (UTC)насчёт апачевских логов - их можно перенаправлять в pipe в конфиге Апача на обработку программе, апач позаботится об её перезапуске, а дальше парсинг по событию довольно простой.
насчёт явовских и прочих - ну, наверное, tail -f и аналогичный скрипт.
крутится в памяти слово logstash как универсальный способ обработки логов, но, возможно, это не то в данном применении...
Желаю удачи!
no subject
Date: 2014-04-11 07:38 pm (UTC)"обострите мысль" (с)
Date: 2014-04-12 01:09 am (UTC)вопрос в том, что понимается под (а) "любые правила" и (б) "звоночек звенел".
про (а) могу сказать, что иногда нужно будет делать корреляцию многих логов, для этого тоже есть разной степени готовости и стандартности решения, начиная от Circonus и заканчивая тулзами от Cloudera Express.
про (б) можно сказать, что если "звоночек" есть реальный звоночек или смс или мейл, то есть тот же pagerduty, pingdom и так далее. если же надо какое-то произвольное действие (запустить, остановить, стереть секретную информацию, ...), то обычно пишутся скрипты под себя, которые можно дёргать по получению мейла или ещё как-то (тот же Logstash умеет запускать внешние программы).
сорри за вебдванольность, время такое. если условие уточните, могу поконкретней что-то сказать.
Re: "обострите мысль" (с)
Date: 2014-04-12 06:18 am (UTC)Re: "обострите мысль" (с)
Date: 2014-04-13 08:19 am (UTC)опять-таки, так как задача ставится очень общо, то и решение я могу предложить общее: Storm, https://storm.incubator.apache.org/ или https://en.wikipedia.org/wiki/Storm_(event_processor)
писалось как раз для масштабирования решения задачи "у нас тут есть лог (поток событий), который мы хотим проанализировать, и по результатам анализа что-то сделать".
хочу отметить: ранее я ответил, что "скрипты пишутся под себя", так как в общем случае неизвестно, какого рода действие придётся выполнить. я знаю, что для некоторого класса действий (например, как я указал ранее, для типичного алертинга посредством смс, звонков и т.п.) есть готовое решение, и никаких скриптов писать не надо. не зная специфики действий, невозможно предложить решение, отличающееся от самостоятельного написания скриптов, которое не требовало бы изкоробочной интеграции с everything *and* the kitchen sink, что, разумеется, нереально.
возможно, мне было бы легче требуемый уровень абстракции задачи понять после нескольких примеров.
Re: "обострите мысль" (с)
Date: 2014-04-13 08:57 am (UTC)В лучшем случае - это ещё найти тул, который позволяет этот анализ программировать в GUI, а не написанием скриптов на коленке с последующей отладкой.
Что и как потом к этому анализу цеплять - дело десятое.
Re: "обострите мысль" (с)
Date: 2014-04-13 10:17 pm (UTC)в такой формулировке можно выделить несколько этапов общего цикла, которые решаются в общем случае разными тулзами.
предварительно повторю, что (а) "я не нестоящий сварщик" и (б) мой бэкграунд лежит в области системного администрирования и смежных областей -- это чтобы контекст моего ответа обозначить. не исключено, что спецы с другим бэкграундом по-другому подойдут к проблеме.
на мой взгляд, общий цикл таков:
- сбор логов в одном месте (т.к. нынче каждый пишет куда и как хочет)
- парсинг логов, т.е. превращение произвольного текста в тот самый набор полей
- (опционально, может быть связано с пред.пунктом) хранение распарсенных логов
- собственно анализ, по результатам которого производится какое-то действие.
второй пункт про парсинг является ключевым: в зависимости от того, как это сделать, будут доступны разные инструменты/подходы. другими словами, выбранная структура данных для представления одного сообщения из лога будет диктовать набор приемов и, соответственно, тулзов.
например, если вывалить всё в реляционную базу, то правила анализа будут представлены в виде сиквел-кода (самописного или сгенерированного); если же вывалить в тот же elasticsearch или хадуп, то там свои, хоть и похожие, средства. в простейшем случае "сообщение == строка текста" мы получим ту самую тройку "tail | grep | perl".
судя по последнему абзацу, дальше анализа заглядывать задача пока не стоит, хотя я в своих комментариях именно то, что проиходит по его результатам, имел в виду, когда говорил, что придётся писать скрипты самому.
вы, как я понял, под "самописными скриптами" имели в виду именно часть анализа. я конкретики сейчас не дам, но слышал про тулзы, которые могут тот же сиквел генерить из gui. в более конкретных случаях есть свои тулзы со своими интерфейсами (у нас в процессинговом центре была система fraud detection, где всё, разумеется, делалось в gui).
в отсутствие более конекретных советов я бы стал смотреть сюда: https://en.wikipedia.org/wiki/Complex_event_processing (сорри за ссылку на википедию).
как-то так. кстати, не уверен, что помог ответом =)
Re: "обострите мысль" (с)
Date: 2014-04-14 05:23 am (UTC)- парсинг логов, т.е. превращение произвольного текста в тот самый набор полей
- собственно анализ, по результатам которого производится какое-то действие.
Ничего полностью подходящего не найдено. Частично могут быть полезными тулы для визуализации и для обработки бизнес-правил. Но полного совпадения нет.
Re: "обострите мысль" (с)
Date: 2014-04-14 10:15 am (UTC)со вторым да, туговато, по крайней мере мне никакие generic тулзы неизвестны (но я тут не совсем спец). специализированных тулзов дофига, я уже примеры приводил.
Re: "обострите мысль" (с)
Date: 2014-04-14 11:12 am (UTC)Re: "обострите мысль" (с)
Date: 2014-04-14 04:25 pm (UTC)на следующем этапе уже можно что-то иное делать, типа того же сиквела, плюс именно там можно будет правила навозить мышью.
no subject
Date: 2014-04-12 04:01 am (UTC)no subject
Date: 2014-04-12 06:14 am (UTC)tail | grep | perl myscript.pl
no subject
Date: 2014-04-12 06:35 am (UTC)no subject
Date: 2014-04-14 09:34 am (UTC)Как это ни странно, это же самое умеет делать виндовый планировщик в паре с виндовыми же логами.
no subject
Date: 2014-04-14 09:43 am (UTC)