Saya memiliki sekitar 30 server, dan saya hanya menggunakan syslog langsung untuk mengirim semua log ke server logging tunggal. Untuk cadangan, semua mesin juga dikonfigurasikan untuk menyimpan log mereka sendiri secara lokal selama beberapa hari, menggunakan logrotate untuk menjaga rotasi dan penghapusan log lama.
Setiap server aplikasi saya menjalankan skrip perl kecil untuk mengirim log mereka ke syslog, yang kemudian meneruskan ke loghost (skrip perl di bawah).
Kemudian di loghost kami memiliki beberapa skrip khusus yang mirip dengan logcheck yang pada dasarnya mengawasi log yang masuk untuk sesuatu yang mencurigakan.
Kami juga memiliki semua email dari setiap host pergi ke satu tempat, sehingga jika ada program yang mengeluh seperti itu, kami mendapatkan semua pesan. Secara teori ini bisa masuk ke kotak surat tunggal yang dapat ditindaklanjuti dan dianalisis oleh suatu program.
Ini skrip perl logging saya. Ia bekerja dengan mem-pipkan output program ke dalamnya, dan kemudian syslog output dan meludahkannya kembali sehingga Anda dapat mengirimnya di tempat lain (saya kirim ke multilog). Anda juga dapat memberikannya opsi -q untuk hanya pergi ke 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;