У мене є близько 30 серверів, і я просто використовую syslog прямого переходу для надсилання всіх журналів на один сервер реєстрації. Для резервного копіювання всі машини також налаштовані зберігати власні журнали локально протягом декількох днів, використовуючи логротат для подбання про обертання та видалення старих журналів.
Кожен з моїх серверів додатків виконує невеликий скрипт perl для надсилання своїх журналів у syslog, який потім пересилається на loghost (сценарій perl нижче).
Тоді у loghost у нас є декілька користувацьких сценаріїв, схожих на logcheck, які в основному спостерігають за вхідними журналами за будь-яким підозрілим.
У нас також є весь електронний лист від кожного хоста, який збирається в одне місце, так що якщо будь-яка програма скаржиться таким чином, ми отримуємо всі повідомлення. Це теоретично може перейти до однієї поштової скриньки, на яку програма може діяти та аналізувати.
Ось мій сценарій perl реєстрації. Він працює за допомогою підключення до нього виводу програми, а потім він систематизує висновок і виплює його назад, щоб ви могли надіслати його в інше місце (я надсилаю в мультилог). Ви також можете надати йому -q можливість просто перейти до syslog.
#!/usr/bin/perl
use Sys::Syslog;
use Getopt::Long;
$SERVER_NAME = `hostname`;
chomp $SERVER_NAME;
$FACILITY = 'local0';
$PRIORITY = 'info';
GetOptions ('s=s' => \$SERVER_NAME, 'f=s' => \$FACILITY, 'p=s' => \$PRIORITY, 'q+' => \$quiet);
#print "$SERVER_NAME\n$FACILITY\n$PRIORITY\n";
#Sys::Syslog::setlogsock('unix');
openlog ($SERVER_NAME,'ndelay',$FACILITY);
if (!($quiet)) {syslog($PRIORITY,"Logging Started -- Logger version 1.1");}
$| = 1;
while (<>) {
if (!($quiet)) {print $_ unless $_ =~ /^\s+$/};
chomp;
syslog($PRIORITY,$_) if $_;
}
closelog;
$| = 0;