ubuntu – 如何让rsyslogd记录服务器的FQDN而不是它的短主机名?

前端之家收集整理的这篇文章主要介绍了ubuntu – 如何让rsyslogd记录服务器的FQDN而不是它的短主机名?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在Ubuntu 10.04 LTS上使用stock rsyslogd(4.2.0-2ubuntu8.1)实现一个简单的集中式系统日志服务器.此时,我的所有客户端节点都将日志发送到中央服务器,但客户端正在发送包含其短主机名而不是其FQDN的日志消息.

根据Ubuntu rsyslogd手册页:

If the remote host is located in the same domain as the host,rsyslogd is running on,only the simple hostname will be logged instead of the whole fqdn.

这对我来说是有问题的,因为我在环境之间重复使用短名称,例如core1.example.com和core1.stg.example.com都将其消息记录为core1.

客户端和服务器都具有相同的/ etc / default / rsyslog:

  1. RSYSLOGD_OPTIONS="-c4"

和/etc/rsyslogd.conf文件一样:

  1. $ModLoad imuxsock
  2. $ModLoad imklog
  3. $PreserveFQDN on
  4. $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
  5. $FileOwner root
  6. $FileGroup adm
  7. $FileCreateMode 0640
  8. $IncludeConfig /etc/rsyslog.d/*.conf

客户端有这个/etc/rsyslog.d/remote.conf文件,告诉他们发送到远程服务器:

  1. *.* @@syslog.example.com

并且服务器使用此/etc/rsyslog.d/server.conf文件

  1. $ModLoad imtcp
  2. $InputTCPServerRun 514
  3. $DirGroup root
  4. $DirCreateMode 0755
  5. $FileGroup root
  6. $template PerHostAuth,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/auth.log"
  7. $template PerHostCron,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/cron.log"
  8. $template PerHostSyslog,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/syslog"
  9. $template PerHostDaemon,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/daemon.log"
  10. $template PerHostKern,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/kern.log"
  11. $template PerHostLpr,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/lpr.log"
  12. $template PerHostUser,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/user.log"
  13. $template PerHostMail,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.log"
  14. $template PerHostMailInfo,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.info"
  15. $template PerHostMailWarn,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.warn"
  16. $template PerHostMailErr,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.err"
  17. $template PerHostNewsCrit,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/news.crit"
  18. $template PerHostNewsErr,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/news.err"
  19. $template PerHostNewsNotice,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/news.notice"
  20. $template PerHostDebug,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/debug"
  21. $template PerHostMessages,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/messages"
  22. auth,authpriv.* ?PerHostAuth
  23. *.*;auth,authpriv.none -?PerHostSyslog
  24. cron.* ?PerHostCron
  25. daemon.* -?PerHostDaemon
  26. kern.* -?PerHostKern
  27. lpr.* -?PerHostLpr
  28. mail.* -?PerHostMail
  29. user.* -?PerHostUser
  30. mail.info -?PerHostMailInfo
  31. mail.warn ?PerHostMailWarn
  32. mail.err ?PerHostMailErr
  33. news.crit ?PerHostNewsCrit
  34. news.err ?PerHostNewsErr
  35. news.notice -?PerHostNewsNotice
  36. *.=debug;\
  37. auth,authpriv.none;\
  38. news.none;mail.none -?PerHostDebug
  39. *.=info;*.=notice;*.=warn;\
  40. auth,authpriv.none;\
  41. cron,daemon.none;\
  42. mail,news.none -?PerHostMessages

由于客户端和服务器共享一个指定“$PreserveFQDN on”的配置,我希望在syslog消息中看到FQDN主机名,但该设置似乎没有任何效果.我发现的rsyslog的大多数其他设置都旨在从FQDN中剥离域而不是保留它们.我认为问题的根源是我的客户端首先不发送FQDN,但我不知道如何强制这种行为.

任何人都可以评论我可能会失踪的东西吗?我想我不是唯一需要将FQDN包含在日志消息中的人.

我也遇到了这个问题.这是我能够解决它的方式.

>在客户端上修改/ etc / hosts文件,使所需的主机名在localhost之前.

127.0.0.1 hostnameforlogs localhost
>在客户端和服务器上修改/etc/rsyslog.conf以包含此语句:

$PreserveFQDN开启>在服务器上,我使用%HOSTNAME%变量作为rsyslog.conf中的模板:

猜你在找的Ubuntu相关文章