Я намагаюся реалізувати простий централізований сервер syslog, використовуючи запас rsyslogd (4.2.0-2ubuntu8.1) на Ubuntu 10.04 LTS. На даний момент у мене всі вузли клієнтів надсилають журнали на центральний сервер, але клієнти надсилають повідомлення журналу, які містять своє коротке ім'я хоста замість FQDN.
На сторінці сторінки Ubuntu rsyslogd:
Якщо віддалений хост розташований у тому самому домені, що і хост, працює 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 для включення до журналу повідомлень.