ip syslog располагается в определенных файлах с помощью `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
- Переадресация журналов брандмауэра на 10.14.12.12 с использованием UDP-порта 514
Наконец, эти журналы должны ежедневно вращаться до 30 дней и сжиматься.
ПРИМЕЧАНИЕ: я отвечаю на свой вопрос
2 ответа
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
конфигурации; таким образом я не буду видеть записи системного журнала маршрутизатора в /var/log/messages
,
Коснитесь всех файлов системного журнала:
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
}
Кроме того, я нашел это на вики-журнале rsyslog, который может послужить будущей ссылкой для кого-то.
http://www.rsyslog.com/storing-messages-from-a-remote-system-into-a-specific-file/