Logs

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

  • August 12, 2019

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

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

例子 :

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 等。

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

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

更具體地說,如果localhost您的 IP 條目首先出現在 中/etc/hosts,那麼它將優先。

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


Arch Wiki 頁面繼續解釋:

您可以通過執行 hostname –fqdn 檢查本地電腦目前配置的 FQDN 是什麼。rsyslog 在寫入日誌消息時將使用 hostname –short 的輸出。如果您想在日誌中包含完整的主機名,您需要在文件的開頭添加 $PreserveFQDN(在使用任何寫入文件的指令之前)。這是因為,rsyslog 讀取配置文件並在執行中應用它,然後讀取後面的行。

/etc/hosts 文件包含許多將 FQDN 映射到 IP 地址以及將別名映射到 FQDN 的行。請參閱下面的範例 /etc/hosts 文件:

/etc/hosts

#<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/hosts

#<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-users mailing list上也有一個非常相似的問題。

引用自:https://unix.stackexchange.com/questions/319737