「rsyslog」を使用して、syslog ip範囲を特定のファイルに


8

私は、Debianサーバーにログを送信する多くのCisco / JunOSルーターとスイッチを使用していますrsyslogd

rsyslogd送信元IPアドレスに基づいて、これらのルーターまたはスイッチのログを特定のファイルに送信するように構成するにはどうすればよいですか?これらのエントリで一般的なシステムログを汚染したくありません。

例えば:

  • シカゴのすべてのルーター(ソースIPブロック:172.17.25.0/24)のみにログを記録し/var/log/net/chicago.logます。
  • Dallas内のすべてのルーター(ソース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日間毎日ローテーションして圧縮する必要があります。


注:私は自分の質問に答えています

回答:


13

rsyslogd 構成

/etc/rsyslogd.conf

# provides remote UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# If logging to an NFS mount, use these settings...
#    "OMFileFlushOnTXEnd off" avoids fsync on every write...
#     mount -o hard,rsize=32768,wsize=32768,noacl,noatime,nodiratime -t nfs
$OMFileIOBufferSize 768k
$OMFileAsyncWriting on
$OMFileFlushOnTXEnd off
$OMFileFlushInterval 10
$MainMsgQueueSize 100000


# kill all INTF-FLAP messages...
if $msg contains 'INTF-FLAP' then /dev/null
&~
## Cisco ACS Accounting...
if ($fromhost-ip=='172.17.16.20') and ($programname == 'CSCOacs_TACACS_Accounting') then /var/log/tacacs_acct.log
&~
## CiscoACS 5.4 TACACS Authentication
if ($fromhost-ip=='172.17.16.20') and ($programname == 'CSCOacs_Passed_Authentications') then /var/log/tacacs_auth.log
&~

# Logging for Chicago issues...
if $fromhost-ip startswith '172.17.25' then /var/log/net/chicago.log
& ~
# Logging for Dallas issues...
if $fromhost-ip startswith '172.17.27' then /var/log/net/dallas.log
& ~
# Logging for firewall...
if $fromhost-ip=='172.17.4.4' then @10.14.12.12
if $fromhost-ip=='172.17.4.4' then /var/log/net/firewall.log
& ~

&~エントリは、残りのrsyslog.conf構成へのフォールスルーを防ぎます。したがって、ルータのsyslogエントリはに表示されません/var/log/messages

すべてのsyslogファイルをタッチします。

  • touch /var/log/net/chicago.log
  • touch /var/log/net/dallas.log
  • touch /var/log/net/firewall.log

再起動rsyslogdして/etc/init.d/rsyslogd restart

ログローテーション

/etc/logrotate.d/rsyslog

/var/log/net/*.log
{
        copytruncate
        rotate 30
        daily
        missingok
        dateext
        notifempty
        delaycompress
        create root 664 root root
        compress
        maxage 31
        sharedscripts
        lastaction
                # RHEL: Use "/sbin/service rsyslog restart"
                # Debian / Ubuntu: Use "invoke-rc.d rsyslog reload > /dev/null"
                invoke-rc.d rsyslog reload > /dev/null
        endscript
}

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.