Какой лучший инструмент для анализа файлов журналов?

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

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

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

Ответ 1

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

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

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

Ответ 2

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

Ношение Ruby Slippers для работы - пример этого в Ruby, написанный в разделе Почему неповторимый стиль. Здесь базовый пример в Perl. Я предлагаю вам выбрать один из этих языков и начать растрескивание.

Ответ 3

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

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

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

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

Ответ 4

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

Ответ 5

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

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

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

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

Несколько причин, как Perl:

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

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

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

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

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

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

Ответ 6

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

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

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

Ответ 7

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

Ответ 8

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

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

Ответ 9

попробуйте Мониторинг журналов Nagios

Причина, по которой этот инструмент является лучшим для вашей цели, заключается в следующем:

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

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

Если журнал, который вы хотите проанализировать, находится в формате syslog, вы можете использовать следующую команду:

./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/opt/jboss/server.log 60m 'INFO' '.' 1 2 jbosslogs -ndshow

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

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