rsyslog 從遠端 cisco 交換機創建多個日誌文件的問題
所以這是我們的設置
伺服器:rsyslog 伺服器 - CentOS 7
客戶端:Cisco 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 文件的任何問題。
這是 Cisco 交換機端的配置
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 文件嗎?
消息範例如下:
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 指向每條消息都加一的數字,在這種特定情況下為 156613:
$template TmplAuth, "/var/log/client_logs/%HOSTNAME%/%PROGRAMNAME%.log"
所以上面的配置看起來是正確的。根本原因可能是在消息中遞增的 PROGRAMNAME。