ฉันพยายามที่จะใช้เซิร์ฟเวอร์ syslog แบบรวมศูนย์แบบง่ายโดยใช้สต็อก rsyslogd (4.2.0-2ubuntu8.1) บน Ubuntu 10.04 LTS ณ จุดนี้ฉันมีโหนดลูกค้าของฉันทั้งหมดส่งบันทึกไปยังเซิร์ฟเวอร์กลาง แต่ลูกค้ากำลังส่งข้อความบันทึกที่มีชื่อโฮสต์สั้น ๆ ของพวกเขาแทน FQDN ของพวกเขา
สำหรับ manpage rsyslogd ของ Ubuntu:
หากรีโมตโฮสต์อยู่ในโดเมนเดียวกับโฮสต์ rsyslogd จะทำงานเฉพาะชื่อโฮสต์แบบง่ายเท่านั้นที่จะถูกบันทึกแทน fqdn ทั้งหมด
นี่เป็นปัญหาสำหรับฉันเนื่องจากฉันใช้ชื่อสั้น ๆ ระหว่างสภาพแวดล้อมเช่น core1.example.com และ core1.stg.example.com ทั้งคู่บันทึกข้อความเป็น core1
ทั้งไคลเอ็นต์และเซิร์ฟเวอร์มี / etc / default / rsyslog เดียวกัน:
RSYSLOGD_OPTIONS="-c4"
และไฟล์ /etc/rsyslogd.conf เดียวกัน:
$ModLoad imuxsock
$ModLoad imklog
$PreserveFQDN on
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$IncludeConfig /etc/rsyslog.d/*.conf
ลูกค้ามีไฟล์ /etc/rsyslog.d/remote.conf นี้โดยบอกให้พวกเขาส่งไปยังเซิร์ฟเวอร์ระยะไกล:
*.* @@syslog.example.com
และเซิร์ฟเวอร์ใช้ไฟล์ /etc/rsyslog.d/server.conf นี้:
$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
เนื่องจากทั้งไคลเอนต์และเซิร์ฟเวอร์แชร์การกำหนดค่าซึ่งระบุ "$ PreserveFQDN on" ฉันคาดว่าจะเห็นชื่อโฮสต์ FQDN ในข้อความ syslog แต่ดูเหมือนว่าการตั้งค่าจะไม่มีผลใด ๆ การตั้งค่าอื่น ๆ ส่วนใหญ่ที่ฉันพบสำหรับ rsyslog นั้นมีวัตถุประสงค์เพื่อลอกโดเมนจาก FQDN แทนที่จะเก็บไว้ ฉันคิดว่าสาเหตุของปัญหาคือลูกค้าของฉันไม่ได้ส่ง FQDN ตั้งแต่แรก แต่ฉันไม่เห็นวิธีการบังคับพฤติกรรมนั้น
ทุกคนสามารถแสดงความคิดเห็นในสิ่งที่ฉันอาจจะหายไป? ฉันคิดว่าฉันไม่ใช่คนเดียวที่ต้องการรวม FQDN ไว้ในข้อความบันทึก