Graylog: Wybór typów wejść

Jak wybrać odpowiedni typ wejścia Graylog

👋 Witamy w dokumentacji Stackhero!

Stackhero oferuje gotowe do użycia rozwiązanie Graylog cloud, które zapewnia wiele korzyści, w tym:

  • Nieograniczony i dedykowany serwer e-mail SMTP w zestawie.
  • Bezproblemowe aktualizacje za pomocą jednego kliknięcia.
  • Dostosowywalna nazwa domeny zabezpieczona za pomocą HTTPS (na przykład, https://logs.twoja-firma.com).
  • Optymalna wydajność i solidne zabezpieczenia dzięki prywatnej i dedykowanej VM.

Oszczędzaj czas i upraszczaj swoje życie: wystarczy 5 minut, aby wypróbować rozwiązanie Graylog cloud hosting Stackhero!

Graylog oferuje różne typy wejść. Dzięki nim można przesyłać logi do serwera Graylog lub umożliwić Graylog pobieranie logów z innego źródła.

W niemal każdym przypadku będziecie chcieli przesyłać dane z aplikacji lub urządzenia do serwera Graylog. Nie omawiamy tutaj zaawansowanych przypadków, w których Graylog pobiera logi z innych źródeł. Jeśli jednak chcecie to zrobić, zapewniamy, że jest to bardzo proste.

Aby wybrać najlepszy typ wejścia, najpierw należy zdecydować, w jakim formacie będą wysyłane logi do Graylog. Zalecamy korzystanie z formatu GELF, jak opisano poniżej.

Następnie należy wybrać protokół: UDP lub TCP.

Pierwszym krokiem jest wybór formatu wiadomości logów. Do dyspozycji są trzy główne opcje: RAW/Plaintext, Syslog lub GELF.

To najprostszy format. Działa z każdym systemem, ponieważ przesyła pełną wiadomość w postaci czystego tekstu. Jest bardzo łatwy w użyciu i idealnie nadaje się do wstępnych testów, na przykład do wysłania wiadomości za pomocą narzędzia netcat.

Aby przetestować, można utworzyć wejście "Raw/Plaintext UDP", a następnie wysłać testowy log za pomocą jednej z poniższych komend:

  1. Z macOS: echo "Hello Graylog from UDP" | nc -u -w1 -c <XXXXXX>.stackhero-network.com 5555
  2. Z Linux: echo "Hello Graylog from UDP" | nc -u -w1 <XXXXXX>.stackhero-network.com 5555

To bardzo proste, prawda? Jednak ze względu na podstawowy charakter tego formatu szybko napotkacie ograniczenia. Dlatego nie zalecamy używania go do niczego poza prostymi testami.

To dobrze znany format, szeroko stosowany do przechowywania i przesyłania logów w środowiskach serwerowych. Występuje w systemach Linux, Windows, *BSD i innych systemach operacyjnych.

Jeśli korzystacie z Syslog, Rsyslog lub innej kompatybilnej usługi i chcecie przesyłać logi z serwera do Graylog, wejście syslog jest najprostszą opcją.

Jednak ponieważ GELF jest bardziej zaawansowany, jeśli możecie wysyłać wiadomości w formacie GELF, zalecamy właśnie to rozwiązanie, jak opisano poniżej.

Należy pamiętać, że format syslog jest ograniczony do 1024 znaków.

GELF to skrót od "Graylog Extended Log Format". Ten format został stworzony przez Graylog i jest obecnie szeroko stosowany w wielu produktach, stając się standardem.

Format GELF jest bardzo funkcjonalny, ponieważ umożliwia przesyłanie logów w sposób strukturalny. Logowanie strukturalne pozwala przekazywać wiele pól i wartości zamiast pojedynczej, niestrukturalnej wiadomości tekstowej. Dzięki temu Graylog może łatwiej analizować i wyszukiwać informacje.

Na przykład, jeśli chcecie przesłać log zawierający adres IP i typ żądania, możecie wysłać wiadomość z dwoma polami: ip oraz request_type. Po stronie Graylog będziecie mogli wyszukiwać bezpośrednio po tych polach, np. wszystkie żądania z zapytaniem: request_type: POST.

GELF opiera się na formacie JSON i musi zawierać co najmniej pola: version, host oraz short_message. Można dodać dodatkowe pola, które muszą być poprzedzone podkreśleniem (_).

Przykładowa prosta wiadomość z dodatkowym polem device_id wygląda następująco:

{
  "version": "1.1",
  "host": "myIotDevice",
  "short_message": "Something is happening",
  "_device_id": "abcd"
}

Następnie można wyszukać wszystkie wiadomości pochodzące z urządzenia "abcd" w Graylog, używając zapytania: device_id: abcd.

Więcej szczegółów na temat GELF znajdziecie w oficjalnej specyfikacji: https://docs.graylog.org/en/4.0/pages/gelf.html.

Jeśli chcecie przesyłać logi z serwerów lub aplikacji, możecie skorzystać z jednej z wielu dostępnych bibliotek, które automatycznie tworzą i wysyłają wiadomości. Przykłady dostępne są dla Node.js, .NET oraz Python.

Po wybraniu odpowiedniego formatu (mamy nadzieję, że wybraliście GELF!), należy zdecydować się na protokół komunikacyjny: TCP lub UDP.

Protokół UDP jest bardzo prosty. Aplikacja wysyła wiadomość do serwera bez oczekiwania na potwierdzenie odbioru. Nie ma dialogu między klientem a serwerem, co oznacza, że serwer nie potwierdza otrzymania wiadomości.

Zaletą tego podejścia jest to, że jeśli serwer Graylog działa wolno lub jest niedostępny, nie wpłynie to na wydajność aplikacji. Wadą jest brak pewności, że każda wysłana wiadomość dotrze do serwera. Dodatkowo, UDP nie obsługuje szyfrowania.

  1. Nie wpływa na działanie aplikacji, jeśli Graylog jest wolny lub niedostępny.
  1. Niektóre wiadomości mogą zostać utracone.
  2. Brak możliwości szyfrowania.
  3. Rozmiar wiadomości ograniczony do 8192 bajtów.

Protokół TCP, w przeciwieństwie do UDP, umożliwia wymianę informacji między aplikacją a Graylog. Oznacza to, że otrzymujecie potwierdzenie, że wiadomość została odebrana przez Graylog.

Zaletą TCP jest możliwość ponownego wysłania wiadomości, jeśli nie została odebrana przez Graylog (np. gdy serwer jest niedostępny). Wadą jest to, że jeśli Graylog działa wolno lub nie odpowiada, aplikacja musi czekać na odpowiedź lub timeout, co może ją spowolnić.

Dodatkową zaletą jest możliwość szyfrowania komunikacji za pomocą TLS (znanego również jako SSL).

  • Gwarancja, że wiadomość została odebrana.
  • Możliwość szyfrowania (TLS).
  • Brak ograniczenia rozmiaru wiadomości
  • Może spowolnić nadawcę, jeśli Graylog odpowiada wolno lub jest niedostępny.

Mamy nadzieję, że ten przewodnik dostarczył wszystkich niezbędnych informacji, aby wybrać najlepszy format i protokół do przesyłania logów do Graylog.

Pamiętajcie, że możecie uruchomić kilka wejść jednocześnie, korzystając z różnych portów dla każdego z nich. Na przykład możecie mieć wejście "syslog UDP" na porcie 514 oraz "GELF TCP" na porcie 12201.