Wyszukiwanie w witrynie

Jak skonfigurować klienta Rsyslog do wysyłania dzienników do serwera Rsyslog w CentOS 7


Zarządzanie logami jest jednym z najważniejszych elementów infrastruktury sieciowej. Komunikaty dzienników są stale generowane przez liczne oprogramowanie systemowe, takie jak narzędzia, aplikacje, demony, usługi związane z siecią, jądrem, urządzeniami fizycznymi i tak dalej.

Pliki dziennika okazują się przydatne w przypadku rozwiązywania problemów z systemem Linux, monitorowania systemu i sprawdzania siły i problemów związanych z bezpieczeństwem systemu.

Rsyslog to program rejestrujący typu open source, który jest najpopularniejszym mechanizmem rejestrującym w ogromnej liczbie dystrybucji Linuksa. Jest to także domyślna usługa rejestrowania w CentOS 7 lub RHEL 7.

Demon Rsyslog w CentOS można skonfigurować tak, aby działał jako serwer w celu zbierania komunikatów dziennika z wielu urządzeń sieciowych. Urządzenia te działają jako klienci i są skonfigurowane do przesyłania swoich dzienników do serwera rsyslog.

Jednakże usługę Rsyslog można także skonfigurować i uruchomić w trybie klienta. Ta konfiguracja instruuje demona rsyslog, aby przesyłał komunikaty dziennika do zdalnego serwera Rsyslog przy użyciu protokołów transportowych TCP lub UDP. Usługę Rsyslog można również skonfigurować tak, aby działała jednocześnie jako klient i serwer.

W tym samouczku opiszemy, jak skonfigurować demona Rsyslog CentOS/RHEL 7, aby wysyłał komunikaty dziennika do zdalnego serwera Rsyslog. Taka konfiguracja zapewnia zachowanie miejsca na dysku komputera do przechowywania innych danych.

Miejscem, w którym domyślnie zapisywane są prawie wszystkie pliki dziennika w CentOS, jest ścieżka systemowa /var. Wskazane jest również, aby zawsze tworzyć osobną partycję dla katalogu /var, którą można dynamicznie powiększać, aby nie wyczerpać partycji /(root).

Klient Rsyslog zawsze wysyła komunikaty dziennika w postaci zwykłego tekstu, jeśli nie określono inaczej. Nie powinieneś konfigurować klienta Rsyslog do przesyłania komunikatów dziennika przez Internet lub sieci, nad którymi nie masz całkowitej kontroli.

Wymagania

  1. Procedura instalacji CentOS 7.3
  2. RHEL 7.3 Procedura instalacji
  3. Skonfiguruj serwer Rsyslog w CentOS/RHEL 7

Krok 1: Sprawdź instalację Rsyslog

1. Domyślnie demon Rsyslog jest już zainstalowany i działa w systemie CentOS 7. Aby sprawdzić czy w systemie jest dostępna usługa rsyslog należy wydać poniższe polecenia.

rpm -q | grep rsyslog
rsyslogd -v

2. Jeśli pakiet Rsyslog nie jest zainstalowany w CentOS, wykonaj poniższe polecenie, aby zainstalować usługę.

yum install rsyslog

Krok 2: Skonfiguruj usługę Rsyslog jako klienta

3. Aby wymusić, aby demon Rsyslog zainstalowany w systemie CentOS 7 działał jako klient dziennika i kierował wszystkie lokalnie generowane komunikaty dziennika do zdalnego serwera Rsyslog, zmodyfikuj plik konfiguracyjny rsyslog w następujący sposób:

Najpierw otwórz główny plik konfiguracyjny do edycji.

vi /etc/rsyslog.conf

Następnie dodaj poniższą linię na końcu pliku, jak pokazano w poniższym fragmencie.

*. *  @192.168.10.254:514

W powyższym wierszu upewnij się, że odpowiednio zastąpiłeś adres IP nazwy FQDN zdalnego serwera rsyslog. Powyższa linia instruuje demona Rsyslog, aby wysyłał wszystkie komunikaty dziennika, niezależnie od możliwości i wagi, do hosta o adresie IP 192.168.10.254 przez port 514/UDP.

4. Jeśli zdalny serwer logów jest skonfigurowany do nasłuchiwania tylko połączeń TCP lub chcesz używać niezawodnego protokołu sieci transportowej, takiego jak TCP, dodaj na początku kolejny znak @ zdalnego hosta, jak pokazano w poniższym przykładzie:

*. *  @@logs.domain.lan:514

Linux rsyslog pozwala również na użycie znaków specjalnych, takich jak = lub !, które można poprzedzić poziomami priorytetów, aby wskazać „tylko ten priorytet ” dla znaku równości i „nie ten priorytet lub wyższy niż ten”.

Niektóre przykłady kwalifikatorów poziomu priorytetu Rsyslog w CentOS 7:

  • kern.info=logi jądra z priorytetem info i wyższym.
  • kern.=info=tylko wiadomości jądra z priorytetem info.
  • kern.info;kern.!err=tylko komunikaty jądra z priorytetami informacji, powiadomień i ostrzeżeń.
  • kern.debug;kern.!=warning=wszystkie priorytety jądra z wyjątkiem ostrzeżenia.
  • kern.*=wszystkie komunikaty o priorytetach jądra.
  • kern.none=nie rejestruj żadnych komunikatów związanych z obsługą jądra, niezależnie od priorytetu.

Na przykład, zakładając, że chcesz wysyłać do zdalnego serwera logów tylko określone wiadomości o obiekcie, takie jak wszystkie powiązane wiadomości pocztowe niezależnie od poziomu priorytetu, dodaj poniższą linię do pliku konfiguracyjnego rsyslog:

mail.* @192.168.10.254:514 

5. Na koniec, aby zastosować nową konfigurację, należy ponownie uruchomić usługę Rsyslog, aby demon mógł wykryć zmiany, uruchamiając poniższe polecenie:

systemctl restart rsyslog.service

6. Jeśli z jakichś powodów demon Rsyslog nie jest włączony podczas uruchamiania, wydaj poniższe polecenie, aby włączyć usługę w całym systemie:

systemctl enable rsyslog.service

Krok 3: Wyślij dzienniki Apache i Nginx do zdalnego serwera dzienników

7. Serwer Apache HTTP można skonfigurować tak, aby wysyłał komunikaty dziennika do zdalnego serwera syslog, dodając następujący wiersz do głównego pliku konfiguracyjnego, jak pokazano w poniższym przykładzie.

vi /etc/httpd/conf/httpd.conf

W głównym pliku konfiguracyjnym Apache dodaj poniższą linię.

CustomLog "| /bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-access.log | /usr/bin/logger -thttpd -plocal1.notice'" combined

Linia ta zmusi demona HTTP do wewnętrznego zapisywania komunikatów dziennika w pliku dziennika systemu plików, ale także będzie przetwarzać je dalej za pomocą narzędzia potok do rejestratora, które wyśle je do odległego serwera syslog, zaznaczając je jako pochodzące z lokalnego1 obiekt.

8. Jeśli chcesz także kierować komunikaty dziennika błędów Apache do zdalnego serwera syslog, dodaj nową regułę, taką jak ta przedstawiona w powyższym przykładzie, ale pamiętaj o zastąpieniu nazwę pliku dziennika httpd i poziom ważności pliku dziennika odpowiadający priorytetowi błędu, jak pokazano w poniższym przykładzie:

ErrorLog "|/bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-error.log | /usr/bin/logger -thttpd -plocal1.err'"

9. Po dodaniu powyższych linii musisz ponownie uruchomić demona Apache, aby zastosować zmiany, wydając następujące polecenie:

systemctl restart httpd.service                 

10. Od wersji 1.7.1 serwer WWW Nginx ma wbudowane możliwości umożliwiające bezpośrednie rejestrowanie wiadomości na zdalnym serwerze syslog poprzez dodanie następujących wierszy kod do pliku konfiguracyjnego Nginx.

error_log syslog:server=192.168.1.10:514,facility=local7,tag=nginx,severity=error;
access_log syslog:server=192.168.10.254:514,facility=local7,tag=nginx,severity=info main;

W przypadku serwera IPv6 użyj następującego formatu składni, aby dołączyć adres IPv6.

access_log syslog:server=[7101:dc7::9]:514,facility=local7,tag=nginx,severity=info;

11. Na zdalnym serwerze Rsyslog musisz dokonać następujących zmian w pliku konfiguracyjnym rsyslog, aby otrzymywać logi wysyłane przez serwer WWW Apache.

local1.* @Apache_IP_address:514

To wszystko! Pomyślnie skonfigurowałeś demona Rsyslog do działania w trybie klienta, a także poinstruowałeś serwer Apache HTTP lub Nginx, aby przesyłał dalej swoje komunikaty dziennika do zdalnego serwera syslog.

W przypadku awarii systemu powinieneś być w stanie zbadać problem, sprawdzając zawartość plików dziennika przechowywanych na zdalnym serwerze syslog.