syslog ip phạm vi đến các tệp cụ thể bằng cách sử dụng `rsyslog`


8

Tôi có nhiều bộ định tuyến và chuyển mạch Cisco / JunOS gửi nhật ký đến máy chủ Debian của tôi, sử dụng rsyslogd.

Làm cách nào tôi có thể định cấu hình rsyslogdđể gửi các bản ghi bộ định tuyến / chuyển đổi này đến một tệp cụ thể, dựa trên địa chỉ IP nguồn của chúng? Tôi không muốn làm ô nhiễm nhật ký hệ thống chung với các mục này.

Ví dụ:

  • tất cả các bộ định tuyến ở Chicago (khối ip nguồn: 172.17.25.0/24) chỉ đăng nhập vào /var/log/net/chicago.log.
  • tất cả các bộ định tuyến ở Dallas (khối ip nguồn 172.17.27.0/24) chỉ đăng nhập vào /var/log/net/dallas.log.
  • Xóa tất cả các APF-3-RCV_UNSUPP_MSGtin nhắn mà không đăng nhập chúng
  • Gửi nhật ký cho 172.17.4.4 đến một tệp có tên /var/log/net/firewall.log
  • Chuyển tiếp bản ghi tường lửa đến 10.14.12.12 bằng cổng UDP 514

Cuối cùng, các bản ghi này nên được quay hàng ngày trong tối đa 30 ngày và được nén.


LƯU Ý: Tôi đang trả lời câu hỏi của riêng tôi

Câu trả lời:


13

rsyslogd Cấu hình

Trong /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
& ~

Mỗi &~mục ngăn chặn sự rơi xuống phần còn lại của rsyslog.confcấu hình; do đó tôi sẽ không thấy các mục syslog của bộ định tuyến /var/log/messages.

Chạm vào tất cả các tệp nhật ký hệ thống:

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

Khởi động lại rsyslogdvới/etc/init.d/rsyslogd restart

Nhật ký luân chuyển

Trong /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
}

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.