2010-01-03 3 views
15

Я использую Grep для разбора через мою торговлю приложений журналы, но он ограничен в том смысле, что мне нужно визуально трал через выход, чтобы увидеть, что произошло и т.д.Каков наилучший инструмент для анализа файлов журнала?

Я интересно, если Perl это лучший вариант? Любые хорошие ресурсы для изучения журнала и анализа строк с помощью Perl?

Я также считаю, что Python был бы хорош для этого. Perl vs Python vs 'grep on linux'?

+0

Спасибо всем за ответы. Я думаю, что практически Id должен придерживаться perl или grep. На производственных коробках получение perms для запуска Python/Ruby и т. Д. Превратится в сам проект. Я предполагаю, что его время я обновил свое знание регулярных выражений, чтобы добиться успеха в grep. – user242591

+2

@coderzambesi: Пожалуйста, определите «Лучшее» и «Лучше» по сравнению с чем? Более дешевый? Быстрее? Лучшие инструменты разработки графического интерфейса? Больше поддержки поставщиков/Что вы имеете в виду лучше всего? –

ответ

9

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

Если вы можете использовать регулярные выражения, чтобы найти то, что вам нужно, у вас есть множество опций. Perl является популярным языком и имеет очень удобные родные средства RE. Я лично чувствую себя намного более комфортно с Python и считаю, что небольшая добавленная стычка за выполнение REs не имеет значения.

Если вы хотите сделать что-то более умное, чем RE, или хотите иметь много логики, вам может быть удобнее с Python или даже с Java/C++/etc. Например, его легко читать по очереди в Python, а затем применять различные предикатные функции и реакции на совпадения, что отлично, если у вас есть набор правил, который вы хотели бы применить.

4

Все языки сценариев являются хорошими кандидатами: Perl, Python, Ruby, PHP и AWK подходят для этого. Использование любого из этих языков лучше, чем просмотр в журналах, начиная с (небольшого) размера.

Wearing Ruby Slippers to Work - пример этого в Ruby, написанный в стиле неповторимого неповторимого стиля. Вот basic example in Perl. Я предлагаю вам выбрать один из этих языков и начать растрескивание.

1

Я нахожу это list бесценным при работе с любым заданием, которое требует разбора с помощью python.

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

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

2

Большое преимущество Perl над Python заключается в том, что при анализе текста можно использовать regular expressions непосредственно как часть синтаксиса языка. Например:

if ($line =~ m/^Regex/) { 
    ... code goes here 
} 

Perl также назначает capture groups непосредственно $ 1, $ 2, и т.д., что делает его очень просто работать. В зависимости от формата и структуры файлов журналов, которые вы пытаетесь проанализировать, это может оказаться весьма полезным (или, если его можно проанализировать как файл с фиксированной шириной или использовать более простые методы, совсем не очень полезно).

Это всего лишь синтаксический сахар, действительно, и другие языки также позволяют использовать регулярные выражения и группы захвата (действительно, связанная статья показывает, как это сделать на Python). Вам просто нужно написать немного больше кода и передать объекты, чтобы сделать это.

+1

Возможность использования регулярного выражения с Perl не является большим преимуществом перед Python, потому что во-первых, у Python есть также регулярное выражение, а во-вторых, регулярное выражение не всегда является лучшим решением. – ghostdog74

+1

По-прежнему проще использовать Regexes в Perl, чем на другом языке, из-за возможности использовать их напрямую. И да, иногда регулярное выражение не является правильным решением, вот почему я сказал «в зависимости от формата и структуры файлов журналов, которые вы пытаетесь разобрать» –

+1

C'mon, это не так сложно использовать регулярные выражения в Python. Если вы спорите по простому синтаксису, вы действительно не спорьте ничего стоящего. Perl имеет некоторые функции регулярных выражений, которые Python не поддерживает, но большинство людей вряд ли им понадобятся. Что касается буферов захвата, Python опередил игру с помеченными захватами (что теперь и Perl). –

2

Существует программа Perl под названием Log_Analysis, которая делает много анализа и предварительной обработки для вас.

1

Другая возможная интерпретация вашего вопроса: «Есть ли инструменты, облегчающие мониторинг журналов?», и ответить на это, я бы посоветовал вам взглянуть на Splunk или, возможно, Log4view.

+0

Sprog также довольно изящный: http://sprog.sourceforge.net/ – daotoad

+0

Octopussy тоже неплохо (отказ от ответственности: мой проект): http://www.8pussy.org – sebthebert

1

на linux вы можете использовать только оболочку (bash, ksh и т. д.) для анализа файлов журнала, если они не слишком большие по размеру Другие инструменты для работы обычно являются grep и awk. Однако для большей мощности программирования обычно используется awk. Если у вас есть большие файлы для разбора, попробуйте awk.

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

2

Изучение языка программирования позволит вам использовать возможности анализа журнала на другом уровне.

Любой динамический или «скриптовый» язык, такой как Perl, Ruby или Python, выполнит эту работу. То, что вы должны использовать, действительно зависит от внешних факторов. Среди вещей, которые вы должны рассмотреть:

  • действительно ли работает уже подходящий langauge?
  • Знаете ли вы, кто может наставник вы на подходящем языке?
  • попробуйте каждый язык немного и посмотрите, какой язык вам подходит лучше.

Лично для этой задачи я бы использовал Perl. YMMV.

Несколько причин любить Perl:

Мощных остроты - если вам нужно сделать реальную быструю, одноразовую работу, Perl предлагает некоторые действительно большие короткие разрезы. См. perlrun -n для примера

Язык с несколькими парадигмами. Perl поддерживает настоятельные, функциональные и объектно-ориентированные методологии программирования.

Sigils - те ведущие знаки пунктуации по переменным, как $foo или @bar. Они немного напоминают венгерскую нотацию, не будучи настолько раздражающими.

Moose - невероятная новая система OOP, которая обеспечивает мощные новые методы OO для составления и повторного использования кода.

Strictures - use strict pragma ловит много ошибок, которые другие динамические языки затушевывают во время компиляции. Я очень скучаю, когда я использую Python или PHP.

Самодисциплина - Perl дает вам свободу писать и делать то, что вы хотите, когда захотите. Это означает, что вам нужно научиться писать чистый код, иначе вам будет больно. К счастью, есть инструменты, которые помогут новичкам. Perl::Critic делает линт-подобный анализ кода для лучших практик.

-2

попробовать Nagios Log Monitoring

Причиной этого инструмента является лучшим для вашей цели это:

Она не требует установки внешних пакетов. Это означает, что нет необходимости устанавливать какие-либо perl-зависимости или любые глупые пакеты, которые могут заставить вас нервничать.

Кривая обучения практически отсутствует. Вам не нужно изучать языки программирования, чтобы использовать его. Все, что вам нужно сделать, это точно знать, что вы хотите делать с журналами, которые вы имеете в виду, и прочитать pdf-файл, прилагаемый к инструменту.

Если журнал вы хотите, чтобы разобрать это в формате системного журнала, вы можете использовать команду:

./NagiosLogMonitor 10.20.40.50:5444 logrobot autofig /opt/jboss/server.log 60m 'INFO' '.' 1 2 -show

Даже если ваш журнал не в признанном формате, он все еще может быть эффективно контролировать с помощью следующей команды:

./NagiosLogMonitor 10.20.40.50:5444 logrobot autonda/опт/JBoss /server.log 60m 'INFO' '.' 1 2 jbosslogs -ndshow

Чтобы проанализировать журнал для определенных строк, замените строку «INFO» на шаблоны, которые вы хотите посмотреть в журнале. Если вы хотите найти несколько шаблонов, укажите их как «INFO | ERROR | fatal».

Если эффективность и простота (и безопасная установка) важны для вас, этот инструмент Nagios - это путь.

+0

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

+0

обновленный пост ... –

Смежные вопросы