為什麼我的一些日誌使用本地主機而其他日誌使用主機名稱 - 不同的伺服器

為什麼我的一些日誌使用本地主機而其他日誌使用主機名稱 - 不同的伺服器

我正在調試與 LDAP 登入相關的內容,Ldap SSH 登入不起作用 - 相同的配置在 20 多個其他伺服器上工作 - Ubuntu我注意到在某些伺服器中,日誌使用本機主機,而在其他伺服器中,日誌使用主機名稱。擁有主機名稱似乎最有意義,特別是如果我們要集中日誌檔案的話。

這是如何配置的?為什麼不預設使用主機名稱?只是有點讓我好奇......

例 :

Oct 29 11:23:56 daily sshd[20625]: pam_unix(sshd:session): session opened for user LDAPUSERNAME by (uid=0)

或者

Oct 29 10:56:36 localhost sshd[2560]: pam_unix(sshd:auth): check pass; user unknown

更新:

user@qa-ops:~$ hostname
qa-ops
user@daily:~$ hostname
daily.domain.com

也許這與 Daily 在主機名稱中有完整的網域有關?我一直認為 /etc/hostname 應該是主機名稱的簡短部分,而不是完整的 hostname.domain.com 等。

答案1

https://wiki.archlinux.org/index.php/rsyslog#Configure_Hostname

Rsyslog 使用 glibc 程式 gethostname() 或 gethostbyname() 來決定本機的主機名稱。如果您不使用 BIND 或 NIS ,則 gethostname() 或 gethostbyname() 程式會檢查/etc/hosts完全限定網域名稱 (FQDN) 的內容。

更具體地說,如果localhost您的 IP 條目排在第一位/etc/hosts,那麼它將優先。

(假設這是中行files中的第一個值。或者,您的主機名稱無法使用 DNS 解析)。hosts:/etc/nsswitch.conf


Arch Wiki 頁面繼續解釋:

您可以透過執行 hostname --fqdn 來檢查本機目前設定的 FQDN。 rsyslog 在寫入日誌訊息時將使用 hostname --short 的輸出。如果您希望在日誌中包含完整的主機名,則需要將 $PreserveFQDN 新增至檔案的開頭(在使用任何寫入檔案的指令之前)。這是因為,rsyslog 讀取設定檔並即時套用它,然後讀取後面的行。

/etc/hosts 檔案包含許多將 FQDN 對應到 IP 位址以及將別名對應到 FQDN 的行。請參閱下面的範例 /etc/hosts 檔案:

/etc/主機

#<ip-address> <hostname.domain.org>   <hostname>
#<ip-address>      <actual FQDN>                       <aliases>
127.0.0.1 localhost.localdomain somehost.localdomain  localhost somehost
::1               localhost.localdomain somehost.localdomain  localhost somehost

localhost.localdomain 是 IP 位址後面的第一項,因此 gethostbyname() 函數將傳回 localhost.localdomain 作為本機的 FQDN。然後 /var/log/messages 檔案將使用 localhost 作為主機名稱。

使用 somehost 作為主機名稱。將 somehost.localdomain 移到第一項:

/etc/主機

#<ip-address> <hostname.domain.org>                           <hostname>
#<ip-address>      <actual FQDN>                                              <aliases>
127.0.0.1 somehost.localdomain localhost.localdomain  localhost somehost
::1               somehost.localdomain localhost.localdomain  localhost somehost

在各種情況下,可能很難準確地說明如何從/etc/hosts(或 DNS)中選擇相關資訊。再次閱讀原始程式碼,我認為rsyslog嘗試將系統主機名稱(hostname命令的輸出)解析為 FQDN。

我認為這意味著上面說“gethostname 或 gethostbyname”的地方,它實際上應該說“gethostnamegethostbyname」。所以這些說明可能可以改進,但它們至少為您指出了正確的位置。

網路上也有人問了一個非常相似的問題rsyslog-用戶郵件列表

相關內容