为什么我的一些日志使用本地主机而其他日志使用主机名 - 不同的服务器

为什么我的一些日志使用本地主机而其他日志使用主机名 - 不同的服务器

我正在调试与 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-用户邮件列表

相关内容