Разбор системных журналов с помощью Perl с использованием именованного канала? - PullRequest
0 голосов
/ 25 июля 2011

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

Мне посоветовали использовать Perl и Named Pipes для реализации скрипта. Я просто потратил некоторое время на чтение именованных каналов и считаю их довольно увлекательными. Тем не менее, я озадачен тем, как «поток» информации должен работать в этой ситуации и как заставить Perl справиться с этим.

Например, я должен создать fifo вне скрипта и сказать syslogd, чтобы он записывал в него по умолчанию, а мой скрипт на другом конце анализировал его? Может ли Perl сделать это и (для вас, sysadmins) это разумный / возможный вариант?

Это мое первое знакомство с Perl и именованными каналами.

1 Ответ

1 голос
/ 25 июля 2011

Вы, безусловно, можете создать именованный канал в Perl , хотя мне кажется, что для того, что вы пытаетесь сделать, лучше создать именованный канал вне perl, как вы предлагаете, а затем запустите syslogd и прочитайте канал из perl.

Я не очень хорошо знаю AIX, но это может помочь при создании канала ( source ):

mkfifo -p /var/adm/syslog.pipe

Чтобы syslogd записывал в него, определите это в /var/adm/syslog.pipe:

   *.info                        |/var/adm/syslog.pipe 

Тогда:

kill -HUP `cat /var/run/syslogd.pid`

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

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

...