
要旨
rsyslog 從哪裡取得 %HOSTNAME% 的值以及在什麼條件下「未知」是預期值?
我們在 EC2 執行個體上使用 rsyslog,並嘗試將日誌傳送到 loggly。如果我tail -f
查看日誌訊息,我可以看到預設格式的日誌,包括日期、主機名稱、標籤和訊息。
如果我使用,logger "message"
那麼我會在控制台和 loggly 中看到正確的日誌條目。但是,如果 java 控制台應用程式記錄事件,則主機名稱在控制台和 loggly 中都是「未知」。
奇怪的是,如果 rsyslog 和 log4j 的配置來自 tomcat 託管的 Web 應用程序,則相同的日誌條目會產生正確的日誌條目。
我知道其中一些是非常特定於 Java 的,但我的問題是:rsyslog 在哪裡獲取 %HOSTNAME% 的值以及在什麼條件下「未知」是預期值?
答案1
我明白了這一點。為了取得主機名,我需要將主機名稱對應到主機檔案中的 IP 位址。我實際上認為這種情況已經發生了,但是當腳本運行以附加正確的主機條目時,IP 位址未知,只有主機名稱被附加到檔案中。
我新增了正確的條目,主機名稱按預期顯示在 rsyslog 和 loggly 中。
同時,我已將 loggly 格式從 %HOSTNAME% 更改為 %$myhostname%。這對我們來說效果很好,因為我們不是遠端日誌記錄,所以 $myhostname 始終是正確的主機名稱。