Centralny serwer logów – konfiguracja zdalnych logów z RSyslog w Debianie

Konrad Kowalski
  • Konrad Kowalski
  • 16/06/2013
  • Debian
  • 0 komentarzy
Serwer logów

Do konfiguracji centralnego serwera logów zabierałem się dość długo. Chyba ze względu na to, że nie był on mi niezbędny. W codziennej pracy wystarczały mi lokalne logi znajdujące się na serwerach oraz logwatch, który codziennie rano wysyłał mi mailowo krótkie podsumowania dotyczące zdarzeń z dnia poprzedniego.

W ostatnim czasie wprowadziłem w firmie ostrzejszą politykę dotyczącą tego co będzie logowane i jak długo będą te informacje przechowywane. Zwiększona szczegółowość oraz długość przechowywania logów spowodowała znaczny wzrost ich objętości co oczywiście przełożyło się na ilość zajmowanego na serwerach miejsca na HDD. Kolejnymi problemami były sposób przechowywania logów, odkopiowywania, backupowania itp.

Rozwiązaniem okazał się już wcześniej wspomniany centralny serwer logów. Do jego budowy wykorzystany został RSyslog obecny w większości dystrybucji Linuxa.

Aby skonfigurować RSyslog w celu odbierania logów musimy wyeedytować plik (w Debianie)

/etc/rsyslog.conf

Pierwszą rzeczą, na którą musimy się zdecydować to protokół, którym będziemy odbierać logi na naszym serwerze logującym. Do wyboru mamy m.in. protokół TCP i UDP (są jeszcze m.in. RELP gwarantujący, że każda wiadomość dotrze do serwera zbierającego logi, więcej informacji można znaleźć w manualu)

W celu uruchomienia nasłuchu RSyslog na protokole UDP musimy dodać/odkomentować poniższe opcje (514 to numer portu, możemy go zmienić):

$ModLoad imudp
$UDPServerRun 514

Dla TCP opcje konfiguracyjne wyglądają następująco:

$ModLoad imtcp
$InputTCPServerRun 514

RSyslog może działać również na obu protokołach jednocześnie. Wystarczy wtedy dodać/odkomentować obie opcje konfiguracyjne.

Po dokonaniu zmian w pliku konfiguracyjnym restartujemy usługę:

/etc/init.d/rsyslog restart

Po restarcie sprawdzamy czy RSyslog nasłuchuje na zdefiniowanych przez nas portach i protokołach

netstat -antup | grep "rsyslog"
udp        0      0 0.0.0.0:514             0.0.0.0:*            24908/rsyslogd  
udp6       0      0 :::514                  :::*                 24908/rsyslogd 

Teraz czas na skonfigurowanie RSysloga na serwerze, który będzie wysyłał logi do naszego serwera centralnego.

Edytujemy plik:

/etc/rsyslog.conf

Oraz dodajemy wpis
dla UDP

*.*   @192.168.8.31:514

dla TCP:

*.*  @@192.168.8.31:514

Restartujemy usługę:

/etc/init.d/rsyslog restart

Aby przetestować działanie na serwerze centralnym wydajemy polecenie

tail -f /var/log/syslog

Na serwerze wysyłającym logi:

logger -t TEST "Test ze zdalnego serwera"

Jeśli wszystko działa poprawnie na serwerze centralnym zobaczymy taki oto wpis:

Jun  16 14:50:26 destiny TEST: Test z wysłannika
(Data, nazwa hosta, wiadomość)

Dodaj komentarz