Tôi đang cố gắng triển khai một máy chủ syslog tập trung đơn giản bằng cách sử dụng stock rsyslogd (4.2.0-2ubfox8.1) trên Ubuntu 10.04 LTS. Tại thời điểm này, tôi có tất cả các nút máy khách của mình gửi nhật ký đến máy chủ trung tâm, nhưng các máy khách đang gửi thông điệp nhật ký có chứa tên máy chủ ngắn thay vì FQDN của chúng.
Theo trang chủ rsyslogd của Ubuntu:
Nếu máy chủ từ xa nằm trong cùng miền với máy chủ, rsyslogd đang chạy, chỉ tên máy chủ đơn giản sẽ được ghi lại thay vì toàn bộ fqdn.
Đây là vấn đề đối với tôi, vì tôi đang sử dụng lại tên ngắn giữa các môi trường, ví dụ core1.example.com và core1.stg.example.com đều ghi thông điệp của họ dưới dạng core1.
Cả máy khách và máy chủ đều có cùng / etc / default / rsyslog:
RSYSLOGD_OPTIONS="-c4"
và cùng tệp /etc/rsyslogd.conf:
$ModLoad imuxsock
$ModLoad imklog
$PreserveFQDN on
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$IncludeConfig /etc/rsyslog.d/*.conf
Khách hàng có tệp /etc/rsyslog.d/remote.conf này, bảo họ gửi đến máy chủ từ xa:
*.* @@syslog.example.com
và máy chủ sử dụng tệp /etc/rsyslog.d/server.conf này:
$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
Vì cả máy khách và máy chủ đều chia sẻ một cấu hình chỉ định "$ PreserveFQDN trên", tôi hy vọng sẽ thấy tên máy chủ FQDN trong các thông báo nhật ký hệ thống, nhưng cài đặt dường như không có hiệu lực. Hầu hết các cài đặt khác mà tôi đã tìm thấy cho rsyslog đều nhằm mục đích tước tên miền từ FQDN thay vì giữ lại chúng. Tôi nghĩ rằng gốc rễ của vấn đề là khách hàng của tôi không gửi FQDN ngay từ đầu, nhưng tôi không thấy cách buộc hành vi đó.
Bất cứ ai có thể nhận xét về những gì tôi có thể thiếu? Tôi tưởng tượng tôi không phải là người duy nhất cần FQDN được đưa vào thông điệp tường trình.