Linux-Networking
從主機上的 /var/log/syslog 中排除遠端 syslog 客戶端日誌
背景:
我有一個執行最新的 Raspbian 作業系統的 lil Raspberry Pi 伺服器,執行許多網路設備來幫助管理客戶端的複雜 IOT LAN。
我一直在使用 rsyslog 將日誌從網路硬體和伺服器寫入外部驅動器,安裝到 /media/syslog。這工作正常。不,我不能將它們寫入 /var/log,因為我每天要生成數百兆字節的日誌文件,並且我需要將它們未壓縮存檔。同樣,這是完美無缺的。
問題:
寫入 /media/syslog 中日誌的每個事件也會寫入 /var/log/syslog。
我真的不能誇大這是多麼令人討厭,特別是因為來自客戶端設備的日誌量如此之大,以至於即使是非常慷慨的 logrotate 設置也意味著我在伺服器上最多有大約 24 小時的 syslog 歷史記錄。當發現問題並報告給我時(通常在一兩天內),日誌已經完全輪換出來了。
如何防止這些遠端客戶端的日誌出現在 /var/log/syslog 中?
我看到一堆文章說我需要做點什麼,
*.*;auth,authpriv.none -/var/log/syslog
但我不知道如何弄亂系統日誌設施,或者在這種特殊情況下它會是什麼樣子,所以如果你要告訴我對於類似的事情,我需要你詳細解釋到底要在哪裡剪切和粘貼。附件是我對 rsyslog.conf 的設置…
# /etc/rsyslog.conf configuration file for rsyslog # # For more information install rsyslog-doc and see # /usr/share/doc/rsyslog-doc/html/configuration/index.html ################# #### MODULES #### ################# module(load="imuxsock") # provides support for local system logging module(load="imklog") # provides kernel logging support #module(load="immark") # provides --MARK-- message capability # provides UDP syslog reception module(load="imudp") input(type="imudp" port="4565") # provides TCP syslog reception module(load="imtcp") input(type="imtcp" port="4565") ########################### #### GLOBAL DIRECTIVES #### ########################### # # Use traditional timestamp format. # To enable high precision timestamps, comment out the following line. # $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat # # Set the default permissions for all log files. # $FileOwner root $FileGroup adm $FileCreateMode 0640 $DirCreateMode 0755 $Umask 0022 # # Where to place spool and state files # $WorkDirectory /var/spool/rsyslog # # Include all config files in /etc/rsyslog.d/ # $IncludeConfig /etc/rsyslog.d/*.conf ############### #### RULES #### ############### # # First some standard log files. Log by facility. # auth,authpriv.* /var/log/auth.log *.*;auth,authpriv.none -/var/log/syslog #cron.* /var/log/cron.log daemon.* -/var/log/daemon.log kern.* -/var/log/kern.log lpr.* -/var/log/lpr.log mail.* -/var/log/mail.log user.* -/var/log/user.log # # Logging for the mail system. Split it up so that # it is easy to write scripts to parse these files. # mail.info -/var/log/mail.info mail.warn -/var/log/mail.warn mail.err /var/log/mail.err # # Some "catch-all" log files. # *.=debug;\ auth,authpriv.none;\ news.none;mail.none -/var/log/debug *.=info;*.=notice;*.=warn;\ auth,authpriv.none;\ cron,daemon.none;\ mail,news.none -/var/log/messages # # Emergencies are sent to everybody logged in. # *.emerg :omusrmsg:*
…和 rsyslog.d/00-remotes.conf
$template NetworkLog1, "/media/syslog/%FROMHOST-IP%.log" :fromhost-ip, isequal, "192.168.2.1" -?NetworkLog1 :fromhost-ip, isequal, "192.168.2.124" -?NetworkLog1 :fromhost-ip, isequal, "192.168.2.160" -?NetworkLog1 & stop
你需要
& stop
在每一行之後。該&
手段應用相同的過濾器,如果它匹配stop
此事件的進一步處理。:fromhost-ip, isequal, "192.168.2.1" -?NetworkLog1 & stop :fromhost-ip, isequal, "192.168.2.124" -?NetworkLog1 & stop :fromhost-ip, isequal, "192.168.2.160" -?NetworkLog1 & stop