Налаштування прийому syslog на unix через rsyslog

Для початку перевіряємо чи є встановлений rsyslog командою sudo systemctl status rsyslog
Звісно якщо не встановленій то встановлюємо sudo apt install rsyslog
Для налаштування редагуємо sudo vim /etc/rsyslog/rsyslog.conf Розкоментувати рядки для прийому логів

    module(load="imudp")
    input(type="imudp" port="514")

    module(load="imtcp")
    input(type="imtcp" port="514")

Додати для прийому всіх логів і скидання в певний каталог, за певним програмним іменем

    $template RemoteHostLog,"/var/log/rsyslog/%HOSTNAME%/%PROGRAMNAME%.log"
    *.*?RemoteHostLog

Для відправлення всіх логів (*.*) на інший віддалений сервер:

    *.*@@192.n.n.n:514 --->це для TCP
    *.*@@192.n.n.n:514 --->це для UDP

Інший варіант налаштування

    Створюю новий файл
    /etc/rsyslog.d/20-network.conf
    Туди копіюю слідуюче:
  • 			# --- INPUTS ---
    			module(load="imudp")
    			module(load="imtcp")
    
    			input(type="imudp" port="514")
    			input(type="imtcp" port="514")
    
    			# --- TEMPLATE ---
    			template(
    			  name="NetLogs"
    			  type="string"
    			  string="/var/log/network/%FROMHOST-IP%/current.log"
    			)
    
    			# --- RULE ---
    			if ($fromhost-ip != "127.0.0.1") then {
    			    action(type="omfile" dynaFile="NetLogs")
    			    stop
    			}
    		
  • Створюю нову папку, і задаю їй дозволи
  • 			sudo mkdir -p /var/log/network
    			sudo chown syslog:adm /var/log/network
    			sudo chmod 755 /var/log/network
    		
  • Створив новий файл
    /etc/logrotate.d/network-logs
    Туди копі слідуюче
  • 			/var/log/network/*/current.log {
    			    missingok
    			    notifempty
    			    nocompress
    			    copytruncate
    			    dateext
    			    dateformat -%Y-%m-%d_08-00
    			    rotate 100000
    			}
    		
  • Створюємо задачу в крон
    sudo crontab -e
  • 			0 8 * * * /usr/sbin/logrotate -f /etc/logrotate.d/network-logs
    		
PS: Для більш зручного відображення встановив утиліту lnav, нижче деякі команди:
  1. lnav /var/log/network/*/current.log
  2. lnav /var/log/network/XXX.XXX.XXX.XXX/*
  3. lnav /var/log/network/*/current.log-YYYY-MM-DD_08-00
    Команди писав по пам'яті, ось що вони означають:
  1. Подивитись логи в реальному часі
  2. Подивитись всі логи конкретного пристрою, де ххх.ххх.ххх.ххх замінити на іп
  3. Подивитись всі логи за певну дату