Instalacja rsyslog (w niektórych systemach jest domyślnie już zainstalowany)
apt-get install rsyslog
Dodatkowa dokumentacja
apt-get install rsyslog-doc
Pliki konfiguracyjne można znaleźć tutaj
/etc/rsyslog.conf
/etc/rsyslog.d/
Po zmianie pliku konfiguracyjnego wymagane jest ponowne uruchomienie serwisu
service rsyslog restart
Instalacja obsługi bazy danych MySQL lub PostgreSQL,
może automatycznie utworzyć plik konfiguracyjny oraz bazę danych Syslog razem z tablicami SystemEvents i SystemEventsProperties, dodatkowo może dodać użytkownika rsyslog (jedynym wymaganym dla niego uprawnieniem jest INSERT)
apt-get install rsyslog-mysql
apt-get install rsyslog-pgsql
Po instalacji obsługi bazy danych plik konfiguracyjny, np. /etc/rsyslog.d/mysql.conf, powinien wyglądać podobnie do tego,
zostanie załadowany do głównego pliku konfiguracyjnego przez $IncludeConfig /etc/rsyslog.d/*.conf
$ModLoad ommysql
*.* :ommysql:localhost,Syslog,rsyslog,hasło
Po instalacji rsyslog, domyślnie czas jest zapisywany w skróconej formie: np. 2012-05-20 11:57:42,
odpowiada za to poniższa linia w pliku konfiguracyjnym,
by włączyć dokłane zapisywanie czasu - trzeba zamienić ją na komentarz
# $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
Zebrane logi, w np. bazie danych MySQL, można wyświetlić w ten sposób
USE Syslog;
SELECT ReceivedAt, FromHost, SysLogTag, Message FROM SystemEvents;
| data czas | host | mpt-statusd:           | detected non-optimal RAID status                                |
| data czas | host | CRON[11144]:           | pam_unix(cron:session): session opened for user root by (uid=0) |
| data czas | host | /USR/SBIN/CRON[11146]: | (root) CMD (   cd / && run-parts --report /etc/cron.hourly)     |
| data czas | host | CRON[11144]:           | pam_unix(cron:session): session closed for user root            |
| data czas | host | mpt-statusd:           | detected non-optimal RAID status                                |
Na serwerze przeznaczonym do zbierania logów można włączyć wybrane porty do ich odbierania,
w domyślnym pliku konfiguracyjnym sprowadza się to do usunięcia znaków komentarzy (#) przy odpowiednich liniach
# UDP
$ModLoad imudp
$UDPServerRun 514

# TCP
$ModLoad imtcp
$InputTCPServerRun 514

# RELP
$ModLoad imrelp
$InputRELPServerRun 20514
Na pozostałych serwerach można włączyć odsyłanie ich logów
# UDP (jeden znak @)
*.*	 @192.168.0.1:514

# TCP (dwa znaki @@)
*.*	@@192.168.0.1:514

# RELP
$ModLoad omrelp
*.*	:omrelp:192.168.0.1:20514;RSYSLOG_ForwardFormat
Reguły są zapisywane w postaci: facility.priority,
można dodatkowo używać: * - oznaczającą wszystko oraz none - oznaczające nic,
natomiast przecinkiem można rozdzielić kilka wpisów z jednej grupy

Facilities
Code Keyword Facility
0 kern Kernel
1 user Regular user processess
2 mail Mail system
3 daemon System daemons
4 auth Security (authentication and authorisation) related commands
5 syslog Syslog internal messages
6 lpr Line printers system
7 news NNTP subsystem
8 uucp UUCP subsystem
10 authpriv Private authorisation messages
16-23 local0-7 Site specific use

Priorities
Code Keyword Facility
0 emerg Emergency: system is unusable
1 alert Alert: action must be taken immediately
2 crit Critical: critical conditions
3 err Error: error conditions
4 warn Warning: warning conditions
5 notice Notice: normal but significant conditions
6 info Informational: informational messages
7 debug Debug: debug level messages

Reguła zapisująca logi jądra z obojętnie jakim priorytetem
kern.*			/var/log/kern.log
Logi auth oraz authpriv z obojętnie jakim priorytetem będą zapisywane do jednego pliku, a wszystkie pozostałe trafią w inne miejsce
auth,authpriv.*		/var/log/auth.log
*.*;auth,authpriv.none	/var/log/sys.log
Zapisywanie wszystkich logów kern poza tymi z priorytetem info, służy do tego: !=
kern.*;kern.!=info	/var/log/kernel/noinfo.log
Można użyć samego znaku =, czyli wybrać logi tylko z jednym priorytetem
kern.=info
Dodatkowe opcje można przypisać do danej reguły
*.*	/var/log/traditionalfile.log;RSYSLOG_TraditionalFormat
Usunięcie starych wpisów z bazy danych MySQL
DELETE FROM SystemEvents WHERE ReceivedAt < date_add(current_date, interval -1 day)
Data w nazwie plików
$template DynamicFile,"/var/log/test_logs/%timegenerated%-test.log"
*.* ?DynamicFile
Znak - przed ścieżką pliku logów pozwala na utworzenie buforu danych przed ich zapisem
mail.info	-/var/log/mail.info

Dodanie reguły logowania połączeń na port 80, np. ze strony internetowej
iptables -A INPUT -p tcp --dport 80 -j LOG --log-level 6 --log-prefix "iptables "
Utworzenie pliku /etc/rsyslog.d/iptables.conf z konfiguracją dla rsyslog,
druga linia zatrzymuje logi, które zawierały wybrane słowo kluczowe "iptables"
:msg,contains,"iptables"  /var/log/iptables.log
& ~ 
Zadania na ćwiczenia:
1. Skonfiguruj jeden z serwerów, tak by mógł zbierać logi do bazy danych. Następnie na innym serwerze
ustaw przekazywanie niektórych logów.
2. Ustaw logowanie do pliku z automatycznie generowaną nazwą zawierającą datę, czas oraz nazwę komputera.
3. Sprawdź, w jaki sposób można zapisywać wiadomości od wybranego nazwanego procesu.
4. Przejrzyj opcje pozwalające na przesyłanie logów w określonych godzinach, a w pozostałych zapisywanie
ich tymczasowo do pliku.