rsyslog 从远程思科交换机创建多个日志文件的问题

rsyslog 从远程思科交换机创建多个日志文件的问题

以下是我们的设置

服务器:rsyslog 服务器 - CentOS 7

客户端:思科 Catalyst C6880-X-LE

/etc/rsyslog.conf 从 CentOS 7 服务器:

$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal

$template TmplAuth, "/var/log/client_logs/%HOSTNAME%/%PROGRAMNAME%.log"
$template TmplMsg, "/var/log/client_logs/%HOSTNAME%/%PROGRAMNAME%.log"
authpriv.* ?TmplAuth
*.info;mail.none;authpriv.none;cron.none ?TmplMsg
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state
*.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

由于某种原因/var/log/client_logs,每次交换机上生成新的日志消息时,cisco 日志都会在文件夹中创建一个新的 .log 文件。这显然不是理想的,我希望 rsyslog 将所有日志放在一个文件中,我计划让 logrotate 每天处理创建一个新的日志文件。

/var/log/client_logs这是我在目录中看到的一个例子

-rw------- 1 root root 184 Oct 13 14:30 156598.log
-rw------- 1 root root 164 Oct 13 14:30 156599.log
-rw------- 1 root root 186 Oct 13 14:30 156600.log
-rw------- 1 root root 162 Oct 13 14:30 156601.log
-rw------- 1 root root 184 Oct 13 14:30 156602.log
-rw------- 1 root root 164 Oct 13 14:35 156603.log
-rw------- 1 root root 186 Oct 13 14:35 156604.log
-rw------- 1 root root 162 Oct 13 14:35 156605.log
-rw------- 1 root root 184 Oct 13 14:35 156606.log
-rw------- 1 root root 164 Oct 13 14:35 156607.log
-rw------- 1 root root 186 Oct 13 14:35 156608.log
-rw------- 1 root root 162 Oct 13 14:35 156609.log
-rw------- 1 root root 184 Oct 13 14:35 156610.log
-rw------- 1 root root 162 Oct 13 14:39 156611.log
-rw------- 1 root root 164 Oct 13 14:41 156612.log
-rw------- 1 root root 186 Oct 13 14:41 156613.log
-rw------- 1 root root 162 Oct 13 14:41 156614.log
-rw------- 1 root root 184 Oct 13 14:41 156615.log

考虑到它会为从 Cisco 交换机发送的每条新消息创建一个 .log,这个过程会一直持续下去。以下是其中一个日志文件内容的示例

2021-10-13T14:41:10.866435-07:00 X 156613: X-Switch: .Oct 13 13:40:44 PST: %LINEPROTO-SW1-5-UPDOWN: Line protocol on Interface GigabitEthernet195/1/0/11, changed state to down

我不确定问题是否出在 Cisco 交换机的配置上或我的 rsyslog 配置上,但我以前这样做过,并且从来没有遇到过为发送到服务器的每条消息创建新的 .log 文件的问题。

这是思科交换机端的配置

Switch1#show run | include logging
logging userinfo
logging reload debugging
logging event link-status default
logging origin-id hostname
logging host 10.1.1.1
 logging synchronous
 logging synchronous

仅供参考,该logging host语句是 CentOS 7 rsyslog 服务器的 IP 地址。从其他主机捕获的所有其他日志都很好,并且不会为收到的每条消息创建新的 .log 文件,但发送日志的其他系统不是 Cisco 交换机,它们都是各种版本的 Linux(主要是 CentOS 和 RHEL)。

知道为什么 rsyslog 会为从此 Cisco Catalyst 交换机接收到的每条消息创建新的 .log 文件吗?

答案1

消息示例如下:

2021-10-13T14:41:10.866435-07:00 X 156613: X-Switch: .Oct 13 13:40:44 PST: %LINEPROTO-SW1-5-UPDOWN: Line protocol on Interface GigabitEthernet195/1/0/11, changed state to down

PROGRAMNAME 似乎指向一个随着每条消息而增加 1 的数字,在这个特定情况下为 156613:

$template TmplAuth, "/var/log/client_logs/%HOSTNAME%/%PROGRAMNAME%.log"

因此上述配置看起来是正确的。根本原因可能是 PROGRAMNAME,它在消息中递增。

相关内容