linux – syslog ip使用`rsyslog`到特定文件

前端之家收集整理的这篇文章主要介绍了linux – syslog ip使用`rsyslog`到特定文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有许多Cisco / JunOS路由器和交换机将日志发送到我的Debian服务器,后者使用rsyslogd.

如何配置rsyslogd根据源IP地址将这些路由器/交换机日志发送到特定文件?我不想用这些条目污染一般系统日志.

例如:

>芝加哥的所有路由器(源IP块:172.17.25.0/24)只能登录到/var/log/net/chicago.log.
>达拉斯的所有路由器(源ip块172.17.27.0/24)只能登录到/var/log/net/dallas.log.
>删除所有APF-3-RCV_UNSUPP_MSG消息而不记录它们
>将172.17.4.4的日志发送到名为/var/log/net/firewall.log的文件
>使用UDP端口514将防火墙日志转发到10.14.12.12

最后,这些日志应每天轮换最多30天并进行压缩.

注意:我是answering my own question

解决方法

rsyslogd配置

在/etc/rsyslogd.conf中

  1. # provides remote UDP syslog reception
  2. $ModLoad imudp
  3. $UDPServerRun 514
  4.  
  5. # If logging to an NFS mount,use these settings...
  6. # "OMFileFlushOnTXEnd off" avoids fsync on every write...
  7. # mount -o hard,rsize=32768,wsize=32768,noacl,noatime,nodiratime -t nfs
  8. $OMFileIOBufferSize 768k
  9. $OMFileAsyncWriting on
  10. $OMFileFlushOnTXEnd off
  11. $OMFileFlushInterval 10
  12. $MainMsgQueueSize 100000
  13.  
  14.  
  15. # kill all INTF-FLAP messages...
  16. if $msg contains 'INTF-FLAP' then /dev/null
  17. &~
  18. ## Cisco ACS Accounting...
  19. if ($fromhost-ip=='172.17.16.20') and ($programname == 'CSCOacs_TACACS_Accounting') then /var/log/tacacs_acct.log
  20. &~
  21. ## CiscoACS 5.4 TACACS Authentication
  22. if ($fromhost-ip=='172.17.16.20') and ($programname == 'CSCOacs_Passed_Authentications') then /var/log/tacacs_auth.log
  23. &~
  24.  
  25. # Logging for Chicago issues...
  26. if $fromhost-ip startswith '172.17.25' then /var/log/net/chicago.log
  27. & ~
  28. # Logging for Dallas issues...
  29. if $fromhost-ip startswith '172.17.27' then /var/log/net/dallas.log
  30. & ~
  31. # Logging for firewall...
  32. if $fromhost-ip=='172.17.4.4' then @10.14.12.12
  33. if $fromhost-ip=='172.17.4.4' then /var/log/net/firewall.log
  34. & ~

每个&〜条目都可以防止落入rsyslog.conf配置的其余部分;因此我不会在/ var / log / messages中看到路由器syslog条目.

触摸所有syslog文件

>触摸/var/log/net/chicago.log
>触摸/var/log/net/dallas.log
>触摸/var/log/net/firewall.log

使用/etc/init.d/rsyslogd restart重新启动rsyslogd

记录旋转

在/etc/logrotate.d/rsyslog中

  1. /var/log/net/*.log
  2. {
  3. copytruncate
  4. rotate 30
  5. daily
  6. missingok
  7. dateext
  8. notifempty
  9. delaycompress
  10. create root 664 root root
  11. compress
  12. maxage 31
  13. sharedscripts
  14. lastaction
  15. # RHEL: Use "/sbin/service rsyslog restart"
  16. # Debian / Ubuntu: Use "invoke-rc.d rsyslog reload > /dev/null"
  17. invoke-rc.d rsyslog reload > /dev/null
  18. endscript
  19. }

猜你在找的Linux相关文章