Saya mencoba menerapkan server syslog terpusat sederhana menggunakan stock rsyslogd (4.2.0-2ubuntu8.1) di Ubuntu 10,04 LTS. Pada titik ini saya memiliki semua node klien saya mengirim log ke server pusat, tetapi klien mengirim pesan log yang berisi nama host pendek mereka, bukan FQDN mereka.
Per halaman rsyslogd Ubuntu:
Jika host jarak jauh terletak di domain yang sama dengan host, rsyslogd sedang berjalan, hanya nama host sederhana yang akan dicatat daripada seluruh fqdn.
Ini bermasalah bagi saya, karena saya menggunakan kembali nama pendek di antara lingkungan, misalnya core1.example.com dan core1.stg.example.com keduanya mencatat pesan mereka sebagai core1.
Baik klien dan server memiliki / etc / default / rsyslog yang sama:
RSYSLOGD_OPTIONS="-c4"
dan file /etc/rsyslogd.conf yang sama:
$ModLoad imuxsock
$ModLoad imklog
$PreserveFQDN on
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$IncludeConfig /etc/rsyslog.d/*.conf
Klien memiliki file /etc/rsyslog.d/remote.conf ini, memberi tahu mereka untuk mengirim ke server jarak jauh:
*.* @@syslog.example.com
dan server menggunakan file /etc/rsyslog.d/server.conf ini:
$ModLoad imtcp
$InputTCPServerRun 514
$DirGroup root
$DirCreateMode 0755
$FileGroup root
$template PerHostAuth,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/auth.log"
$template PerHostCron,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/cron.log"
$template PerHostSyslog,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/syslog"
$template PerHostDaemon,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/daemon.log"
$template PerHostKern,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/kern.log"
$template PerHostLpr,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/lpr.log"
$template PerHostUser,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/user.log"
$template PerHostMail,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.log"
$template PerHostMailInfo,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.info"
$template PerHostMailWarn,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.warn"
$template PerHostMailErr,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.err"
$template PerHostNewsCrit,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/news.crit"
$template PerHostNewsErr,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/news.err"
$template PerHostNewsNotice,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/news.notice"
$template PerHostDebug,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/debug"
$template PerHostMessages,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/messages"
auth,authpriv.* ?PerHostAuth
*.*;auth,authpriv.none -?PerHostSyslog
cron.* ?PerHostCron
daemon.* -?PerHostDaemon
kern.* -?PerHostKern
lpr.* -?PerHostLpr
mail.* -?PerHostMail
user.* -?PerHostUser
mail.info -?PerHostMailInfo
mail.warn ?PerHostMailWarn
mail.err ?PerHostMailErr
news.crit ?PerHostNewsCrit
news.err ?PerHostNewsErr
news.notice -?PerHostNewsNotice
*.=debug;\
auth,authpriv.none;\
news.none;mail.none -?PerHostDebug
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -?PerHostMessages
Karena klien dan server berbagi konfigurasi yang menentukan "$ PreserveFQDN aktif", saya berharap untuk melihat nama host FQDN dalam pesan syslog, tetapi pengaturan tampaknya tidak berpengaruh. Sebagian besar pengaturan lain yang saya temukan untuk rsyslog ditujukan untuk melepaskan domain dari FQDN alih-alih mempertahankannya. Saya pikir akar masalahnya adalah bahwa klien saya tidak mengirim FQDN sejak awal, tetapi saya tidak melihat bagaimana memaksakan perilaku itu.
Adakah yang bisa berkomentar tentang apa yang mungkin saya lewatkan? Saya membayangkan saya bukan satu-satunya orang yang membutuhkan FQDN untuk dimasukkan dalam pesan log.