Я пытаюсь реализовать простой централизованный сервер системного журнала, используя стандартный rsyslogd (4.2.0-2ubuntu8.1) на Ubuntu 10.04 LTS. На этом этапе все мои клиентские узлы отправляют журналы на центральный сервер, но клиенты отправляют журнальные сообщения, которые содержат свое короткое имя хоста вместо своего полного доменного имени.
Согласно справочной странице по 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 в сообщениях системного журнала, но, похоже, этот параметр не дал никакого эффекта. Большинство других настроек, которые я нашел для rsyslog, направлены на удаление доменов из полных доменных имен вместо их сохранения. Я думаю, что корень проблемы в том, что мои клиенты не отправляют FQDN в первую очередь, но я не вижу, как заставить это поведение.
Кто-нибудь может прокомментировать то, что мне может не хватать? Я полагаю, что я не единственный человек, которому нужны полные доменные имена для включения в сообщения журнала.