vit_r: default (vit_r)
[personal profile] vit_r
Сейчас принято все ошибки гнать в лог. Есть ли тулы, позволяющие делать сложные запросы к стандартным логам? Нужно, чтобы логи читались в реалтайме и при происхождении каких-нибудь событий, программа реагировала бы (Не в том, смысле, чтобы гнать весь лог в GUI, а чтобы звоночек звенел, если кто-то зашёл с сайта X и сделал Y).

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

Посмотрел на страницу. Дочитало текст про тест и нажало на линк шесть человек. Из стартаперов заглянули тоже шесть, но, подозреваю, дальше третьей строчки они не читали.

Date: 2014-04-11 12:12 pm (UTC)
From: [identity profile] st0ne-c0ld.livejournal.com
Потыкал хабр http://habrahabr.ru/post/150657/

Date: 2014-04-11 01:45 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Ну это всё-таки про метрики. К тому же "В нашем случае парсер написан на Perl"

Интересно не собирать статистику, а задавать правила "Если А и Б, то посылаем сообщение С"

Date: 2014-04-11 02:00 pm (UTC)
From: [identity profile] st0ne-c0ld.livejournal.com
Мда. Что то конкретное не находтся, только общие введения в тему. Насколько помню из общения с вебадминами, каждый пишет сам, под свою задачу. Это которые могут в программирование.

Date: 2014-04-11 02:25 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Мда. Что то конкретное не находтся, только общие введения в тему.

Аналогично. Но задача в принципе стандартная. Я думал, мониторинг по логам кто-нибудь уже автоматизировал.

Date: 2014-04-11 01:47 pm (UTC)
From: [identity profile] raydac.livejournal.com
я к тулзе что в конторе разрабатываем сделал анализатор логов с правилами обрабатывающими и дающими советы юзеру, мне хватило низкоуровневой явы и рук

Date: 2014-04-11 02:21 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Ну так-то и я могу. Хочется уже готового и удобного в работе.

Date: 2014-04-11 02:23 pm (UTC)
From: [identity profile] raydac.livejournal.com
это вообще то идея твоего будущего стартапа, что бы и готовый и удобный
Edited Date: 2014-04-11 02:23 pm (UTC)

Date: 2014-04-11 02:27 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Если это никто не реализовал, значит на этом деньги не заработать.

Идей у меня столько, что можно лет на десять уходить в дауншифтинг и только ими и заниматься.

Date: 2014-04-11 02:31 pm (UTC)
From: [identity profile] raydac.livejournal.com
разработка полноценной экспертной системы (а следовательно и оболочки) это 3 года, причем вне зависимости от количества вливаний и привлеченного количества народа, ктож будет при таком заниматься? ит сегодня на темной стороне силы - надо проще, доступнее

Date: 2014-04-11 03:11 pm (UTC)
From: [identity profile] vit-r.livejournal.com
ит сегодня на темной стороне силы - надо проще, доступнее

Я в это время как раз картинку к следующему посту правил. :-)

Date: 2014-04-11 02:30 pm (UTC)
From: [identity profile] samlazy.livejournal.com
У нас в конторе навязчиво внедряют Splunk.

Date: 2014-04-11 03:03 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Интересная штука, но для моих скромных задач, наверно, перебор.

Date: 2014-04-11 04:30 pm (UTC)
From: [identity profile] samlazy.livejournal.com
Это почти для всех нужд перебор. Особенно когда на деньги посмотришь. Мы пока отбиваемся от этого ентерпрайза головного мозга но дизайнить всё приходится с оглядкой на.

Date: 2014-04-11 03:01 pm (UTC)
From: [identity profile] yajohn.livejournal.com
Все вручную, самописными тулзами на коленке. И в этом есть смысл: без регулярных выражений ты все равно не обойдешься, а юзернейм способный написать регулярное выражение возможно быстрее накалякает тулзу сам, нежели будет разбираться в чьем-то творчестве.

п.с. а что ты подразумеваешь под "стандартными логами"?

Date: 2014-04-11 03:07 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Под стандартными я понимаю что-нибудь вроде логов апача или явовский стек.

А на коленке получится опять зоопарк скриптов командной строки. Хочется какого-нибудь BI, чтобы не писать очередную программу под каждый запрос.

Date: 2014-04-11 05:11 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
Kibana, Maltego, но вообще такую тулзу сложно продать, поэтому рынок у них странный.

Date: 2014-04-11 07:05 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Задание правил у Kibana, прямо скажем, странноватое. DSL всё-таки лучше далать удобочитаемым, хоть и придётся парсить ручками. Впрочем, сам таким грешил.

Maltego - это не то. Хотя сама идея интересная.
From: [identity profile] serge shikov (from livejournal.com)
Все равно ведь в первую очередь нужно вовремя узнать, что что-то пошло не так. Угадать заранее, что конкретно пойдет не так, как правило невозможно, и сложные запросы тут редко чем-то могут помочь.

> "Если А и Б, то посылаем сообщение С"

Ну вот что такое А и Б? Что за такие условия вы собрались искать в логах апача или скажем томката, что попадало бы под такие требования, и чтобы это было сложнее регулярного выражения?

Если в логах есть сообщения уровней warning и error, то вообще говоря, это уже повод для разборок, а условие тут тривиальное до безобразия.

Не далее как вчера видел самописное решение, которое:

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

Не верю, что нет аналогичного готового, по-моему на базе log4j как раз такое было.

Отчет посылаем почтой кому следует, приложив сами логи к нему же (целиком), для ручного анализа. И это все. Остальное без уточнения требований будет сильно лишним. В том числе - требований к размерам (а то некоторые имеют привычку все логи засовывать куда-нибудь в Hadoop и там переваривать).

И потом, при нормально сделанной системе логирования в логи обычно пишется что-то, что позволяет идентифицировать сеанс пользователя. В этом случае вместо нескольких дополнительных строк можем отбирать все, что относилось к этому сеансу - потому что если это не аппаратная проблема, то она обычно связана с конкретным пользователем и его use case. Да если и аппаратная - тоже пожалуй может, какие-то сетевые проблемы запросто могут быть характерны для определенных пользователей.
From: [identity profile] vit-r.livejournal.com
Угадать заранее, что конкретно пойдет не так, как правило невозможно, и сложные запросы тут редко чем-то могут помочь.

Можно установить триггер на "что-то пошло не так", а что именно - это разбирается после первого случая, загоняется в систему и потом обрабатывается.
From: [identity profile] vit-r.livejournal.com
Угадать заранее, что конкретно пойдет не так, как правило невозможно, и сложные запросы тут редко чем-то могут помочь.

Можно установить триггер на "что-то пошло не так", а что именно - это разбирается после первого случая, загоняется в систему и потом обрабатывается.

Ну вот что такое А и Б? Что за такие условия вы собрались искать в логах апача или скажем томката, что попадало бы под такие требования, и чтобы это было сложнее регулярного выражения?

Логи, естественно, парсятся и записи разбиваются по информационным блокам. Потом единица информации проверяется или на совпадение, или регулярным выражением или ещё как. Естетвенно, правила нужно будет собирать в комбинации and, or и скобками, иначе это не интересно.

Ручками я всё время разбираю. Хочется чего-то на более высоком уровне.

Date: 2014-04-11 06:12 pm (UTC)
From: [identity profile] viewpoint.livejournal.com
Здравствуйте, МШФ!

насчёт апачевских логов - их можно перенаправлять в pipe в конфиге Апача на обработку программе, апач позаботится об её перезапуске, а дальше парсинг по событию довольно простой.

насчёт явовских и прочих - ну, наверное, tail -f и аналогичный скрипт.

крутится в памяти слово logstash как универсальный способ обработки логов, но, возможно, это не то в данном применении...

Желаю удачи!

Date: 2014-04-11 07:38 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Ну и что даст tail? Потом сидеть и медитировать над ним? К тому же всё зависит от того, как быстро оно крутится. logstash - это просто обработка. Вопрос был о введении логических правил и выполнении каких-то действий, если произошли фильтруемые события.

"обострите мысль" (с)

Date: 2014-04-12 01:09 am (UTC)
From: [identity profile] http://users.livejournal.com/_beast/
если первый левел задачи есть анализ стандартных логов (т.е. я подразумеваю либо известный софт типа апача или кернела), то обычно есть готовая тулза (тот же Logstash или Librato Metrics).

вопрос в том, что понимается под (а) "любые правила" и (б) "звоночек звенел".

про (а) могу сказать, что иногда нужно будет делать корреляцию многих логов, для этого тоже есть разной степени готовости и стандартности решения, начиная от Circonus и заканчивая тулзами от Cloudera Express.

про (б) можно сказать, что если "звоночек" есть реальный звоночек или смс или мейл, то есть тот же pagerduty, pingdom и так далее. если же надо какое-то произвольное действие (запустить, остановить, стереть секретную информацию, ...), то обычно пишутся скрипты под себя, которые можно дёргать по получению мейла или ещё как-то (тот же Logstash умеет запускать внешние программы).

сорри за вебдванольность, время такое. если условие уточните, могу поконкретней что-то сказать.

Re: "обострите мысль" (с)

Date: 2014-04-12 06:18 am (UTC)
From: [identity profile] vit-r.livejournal.com
Задача не в том, чтобы красиво стелать отчёты по логам, а в том, чтобы воспринимать лог как канал управления. Вот именно та часть, которая "обычно пишутся скрипты под себя".

Re: "обострите мысль" (с)

Date: 2014-04-13 08:19 am (UTC)
From: [identity profile] http://users.livejournal.com/_beast/
лог в качестве части цикла обратной связи, то есть.

опять-таки, так как задача ставится очень общо, то и решение я могу предложить общее: 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)
From: [identity profile] vit-r.livejournal.com
Грубо говоря, нужен язык, который максимально просто позволяет задать правила анализа для логов, то есть для структурированных текстов с заранее заданным набором полей.

В лучшем случае - это ещё найти тул, который позволяет этот анализ программировать в GUI, а не написанием скриптов на коленке с последующей отладкой.

Что и как потом к этому анализу цеплять - дело десятое.

Re: "обострите мысль" (с)

Date: 2014-04-13 10:17 pm (UTC)
From: [identity profile] http://users.livejournal.com/_beast/
ага, теперь стало чуть понятнее.

в такой формулировке можно выделить несколько этапов общего цикла, которые решаются в общем случае разными тулзами.

предварительно повторю, что (а) "я не нестоящий сварщик" и (б) мой бэкграунд лежит в области системного администрирования и смежных областей -- это чтобы контекст моего ответа обозначить. не исключено, что спецы с другим бэкграундом по-другому подойдут к проблеме.

на мой взгляд, общий цикл таков:
- сбор логов в одном месте (т.к. нынче каждый пишет куда и как хочет)
- парсинг логов, т.е. превращение произвольного текста в тот самый набор полей
- (опционально, может быть связано с пред.пунктом) хранение распарсенных логов
- собственно анализ, по результатам которого производится какое-то действие.

второй пункт про парсинг является ключевым: в зависимости от того, как это сделать, будут доступны разные инструменты/подходы. другими словами, выбранная структура данных для представления одного сообщения из лога будет диктовать набор приемов и, соответственно, тулзов.

например, если вывалить всё в реляционную базу, то правила анализа будут представлены в виде сиквел-кода (самописного или сгенерированного); если же вывалить в тот же 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)
From: [identity profile] vit-r.livejournal.com
Искались тулы для
- парсинг логов, т.е. превращение произвольного текста в тот самый набор полей
- собственно анализ, по результатам которого производится какое-то действие.


Ничего полностью подходящего не найдено. Частично могут быть полезными тулы для визуализации и для обработки бизнес-правил. Но полного совпадения нет.

Re: "обострите мысль" (с)

Date: 2014-04-14 10:15 am (UTC)
From: [identity profile] http://users.livejournal.com/_beast/
первое -- это 100% уже упоминавшийся Logstash, он именно для того и сделан, чтобы натягивать семантику на логи. многие думают, что это визуализатор или посторитель отчётов о логам, но на самом деле он устроен соверщенно тупо: есть каналы ввода/доставки логов (сокет, сислог, файл, snmp и т.п.), есть каналы вывода (elastic search и т.п.), а посередине сидит именно парсинг. для парсинга произвольных файлов имеет смысл посмотреть на модуль grok -- это, фактически, регулярные выражения с человеческим лицом. для более конкретных видов лога есть готовые парсеры, но и для грока уже дофига паттернов написали для более-менее частых вариантов.

со вторым да, туговато, по крайней мере мне никакие generic тулзы неизвестны (но я тут не совсем спец). специализированных тулзов дофига, я уже примеры приводил.

Re: "обострите мысль" (с)

Date: 2014-04-14 11:12 am (UTC)
From: [identity profile] vit-r.livejournal.com
C Logstash - понятно. Но в середине всё равно будет парсинг, а насколько у grok лицо человеческое - это ещё вопрос. Я бы не сказал, что это решение мне очень нравится.

Re: "обострите мысль" (с)

Date: 2014-04-14 04:25 pm (UTC)
From: [identity profile] http://users.livejournal.com/_beast/
ну да, без парсинга тут в принципе не обойтись. вопрос только в том, насколько глубоко его получится спрятать от пользователя, и с каким успехом.

на следующем этапе уже можно что-то иное делать, типа того же сиквела, плюс именно там можно будет правила навозить мышью.

Date: 2014-04-12 04:01 am (UTC)
From: (Anonymous)
tail | grep это юниксвэй детка.

Date: 2014-04-12 06:14 am (UTC)
From: [identity profile] vit-r.livejournal.com
юниксвэй - это
tail | grep | perl myscript.pl

Date: 2014-04-12 06:35 am (UTC)
From: (Anonymous)
В том и прелесть.

Date: 2014-04-14 09:34 am (UTC)
From: [identity profile] ext_1684112 (from livejournal.com)
Fail2ban, оно не совсем для анализа логов, но для реакции на события. GUI отсутсвует.

Как это ни странно, это же самое умеет делать виндовый планировщик в паре с виндовыми же логами.

Date: 2014-04-14 09:43 am (UTC)
From: [identity profile] vit-r.livejournal.com
Это всё-таки для очень специфичных задач. И Fail2ban построен на regexp, а не на языке правил.

Profile

vit_r: default (Default)
vit_r

February 2026

S M T W T F S
12 34 567
8 91011121314
15161718192021
22232425262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 9th, 2026 10:43 pm
Powered by Dreamwidth Studios