我有一个在 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 服务器基本可以实现相同的效果。