要旨
rsyslog 从哪里获取 %HOSTNAME% 的值,以及在什么条件下“未知”会是预期值?
我们在 EC2 实例上使用 rsyslog,并尝试将日志发送到 loggly。如果我查看tail -f
日志消息,我可以看到默认格式的日志,包括日期、主机名、标签和消息。
如果我使用,logger "message"
那么我在控制台和 loggly 中都会看到正确的日志条目。但是,如果 Java 控制台应用程序记录事件,则主机名在控制台和 loggly 中都是“未知的”。
奇怪的是,如果日志来自 tomcat 托管的 Web 应用程序,则 rsyslog 和 log4j 的相同配置会产生正确的日志条目。
我知道其中一些是 Java 特有的,但我的问题是:rsyslog 从哪里获取 %HOSTNAME% 的值,以及在什么条件下“未知”会是预期值?
答案1
我搞明白了。为了获取主机名,我需要将主机名映射到 hosts 文件中的 IP 地址。我实际上以为这已经发生了,但在脚本运行以附加正确的主机条目时,IP 地址未知,只有主机名被附加到文件中。
我添加了正确的条目,并且主机名在 rsyslog 和 loggly 中按预期出现。
同时,我已将 loggly 格式从 %HOSTNAME% 更改为 %$myhostname%。这对我们来说很完美,因为我们不是远程日志记录,所以 $myhostname 始终是正确的主机名。