Rsyslog 无法识别某些主机名

Rsyslog 无法识别某些主机名

我有一个在 CentOS(CentOS Linux 版本 7.4.1708(核心))上运行的 rsyslog 服务器。我们主要将其用于网络设备,主要是 Cisco。我将主机名与所有日志记录事件一起发送。我的服务器根据主机名为每个主机创建一个目录。但是,许多主机名无法识别,并且目录是使用设备 IP 地址创建的。我正在尝试弄清楚是否可以调整设置以识别这些丢失的主机名。

以下是正常运行的设备的示例:

此 Cisco ASA 在时间戳后直接发送主机名:

Sep 12 10:04:13 FIREWALL01 : %ASA-6-302016: Teardown UDP connection ...

这些 ASA 日志被扔到名为“FIREWALL01”的目录中。这就是我想要的行为。

不正确的行为:

此设备是 Cisco ISR 路由器。它仍包含主机名,但它在事件日志中出现得较晚:

Sep 12 09:33:07 10.X.X.X 38174: ISRROUTER01: Sep 12 14:33:06.233: %BGP-5-ADJCHANGE: neighbor ...

在这个例子中,我希望 rsyslog 将这些事件放入名为“ISRROUTER01”的目录中,但是它却将它们放入名为“10.XXX”的目录中。

当前配置:

这是我当前的 /etc/rsyslog.conf 配置文件:

# Where to place auxiliary files
$WorkDirectory /var/lib/rsyslog

# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on

# Turn off message reception via local log socket;
# local messages are retrieved through imjournal now.
$OmitLocalLogging on

# File to store the position in the journal
$IMJournalStateFile imjournal.state

####  Templates ####

# log every host in its own directory
$template RemoteHost,"/var/log/syslog/%HOSTNAME%/%HOSTNAME%.log"

# Local Logging
$RuleSet local
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 :omusrmsg:*
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log

# use the local RuleSet as default if not specified otherwise
$DefaultRuleset local

# Remote Logging
$RuleSet remote
*.* ?RemoteHost

####  Listeners ####

# bind rulesets to listeners
$InputTCPServerBindRuleset remote
$InputUDPServerBindRuleset remote

# activate listeners
$InputTCPServerRun 514
$UDPServerRun 514

那么,有人知道我可以进行哪些配置更改,以便从几种不同类型的日志文件中挑选出主机名吗?也许是某种类型的模板?

提前致谢!

答案1

我的 rsyslog 服务器也遇到过类似的问题。我正在从许多设备(Linux 机器、Cisco 和 MikroTik 设备等)收集系统日志消息。看来网络设备的主机名没有得到正确解析,它们以 IP 地址或其他名称(例如 _gateway)的形式出现。

我想到的办法是将所有受监控的主机放在 rsyslog 服务器上的 /etc/hosts 中,问题就解决了。我个人运行的本地 DNS 服务器基本可以实现相同的效果。

相关内容