Graylog: Wybierz typy wejściowe

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óżnorodne wejścia. Te wejścia pozwalają na wysyłanie logów do serwera Graylog lub umożliwiają Graylog pobieranie logów z innego źródła.

W prawie każdym przypadku będziesz chciał wysłać dane z aplikacji lub urządzenia do serwera Graylog. Nie omówimy zaawansowanych przypadków, w których chcesz, aby Graylog pobierał logi z innego miejsca. Jednak jeśli chcesz to zrobić, bądź pewny, że jest to bardzo proste.

Aby wybrać najlepszy typ wejścia, najpierw musisz zdecydować o formacie logu, który chcesz wysłać do Graylog. Zalecamy użycie formatu GELF, jak opisano poniżej.

Następnie musisz wybrać protokół: UDP lub TCP.

Pierwszą decyzją jest wybór formatu wiadomości logów. Istnieją trzy główne opcje: RAW/Plaintext, Syslog lub GELF.

Jest to najprostszy format. Działa z każdym systemem, ponieważ wysyła pełną wiadomość w postaci tekstu. Jest bardzo łatwy w użyciu i idealny do początkowych testów, takich jak wysyłanie wiadomości za pomocą narzędzia netcat.

Aby go przetestować, możesz utworzyć wejście "Raw/Plaintext UDP" i następnie wysłać testowy log za pomocą jednej z poniższych linii poleceń:

  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że, ponieważ jest to podstawowy format, szybko napotkasz ograniczenia. Dlatego odradzamy używanie go do czegoś więcej niż proste testy.

Jest to dobrze znany format szeroko stosowany do przechowywania i wysyłania logów w środowiskach serwerowych. Można go znaleźć w systemach Linux, Windows i *BSD, wśród innych systemów operacyjnych.

Jeśli używasz Syslog, Rsyslog lub innej kompatybilnej usługi i chcesz wysłać logi z serwera do Graylog, wejście syslog jest najprostszą opcją.

Jednakże, ponieważ GELF jest bardziej zaawansowany, jeśli możesz wysyłać wiadomości w formacie GELF, zalecamy to zrobić, jak wyjaśniono poniżej.

Zauważ, że format syslog jest ograniczony do 1024 znaków.

GELF oznacza "Graylog Extended Log Format". Ten format został stworzony przez Graylog i stał się szeroko przyjęty przez wiele produktów, ustanawiając się jako standard.

Format GELF jest potężny, ponieważ wysyła logi w sposób strukturalny. Strukturalne logowanie pozwala na przesyłanie wielu pól i wartości zamiast jednej niestrukturalnej wiadomości tekstowej. Ułatwia to Graylog analizowanie i pobieranie informacji.

Na przykład, jeśli chcesz wysłać log zawierający adres IP i typ żądania, możesz wysłać wiadomość z dwoma polami nazwanymi ip i request_type. Po stronie Graylog będziesz mógł bezpośrednio wyszukiwać w tych polach, na przykład wyszukiwać wszystkie żądania z zapytaniem: request_type: POST.

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

Na przykład, prosta wiadomość z dodatkowym polem nazwanym device_id wygląda tak:

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

Możesz następnie wyszukiwać wszystkie wiadomości z urządzenia "abcd" na Graylog używając zapytania: device_id: abcd.

Więcej szczegółów na temat GELF można znaleźć w oficjalnej specyfikacji tutaj: https://docs.graylog.org/en/4.0/pages/gelf.html.

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

Gdy już wybierzesz odpowiedni format (mamy nadzieję, że wybrałeś GELF!), musisz wybrać protokół komunikacyjny między TCP a UDP.

Protokół UDP jest dość prosty. Twoja aplikacja wysyła wiadomość do serwera bez potrzeby potwierdzenia odbioru. Nie ma dialogu między klientem a serwerem, co oznacza, że serwer nie potwierdza, że otrzymał wiadomość.

Zaletą tego podejścia jest to, że jeśli twój serwer Graylog jest wolny lub nie działa, nie wpłynie to na wydajność twojej aplikacji. Wadą jest to, że nie możesz być pewny, że każdy log wysłany z twojej aplikacji dotrze do serwera. Dodatkowo, szyfrowanie nie jest dostępne z UDP.

  1. Nie wpływa na twoją aplikację, jeśli Graylog jest wolny lub nie działa.
  1. Niektóre wiadomości mogą zostać utracone.
  2. Szyfrowanie nie jest dostępne.
  3. Rozmiar wiadomości jest ograniczony do 8192 bajtów.

Protokół TCP, w przeciwieństwie do UDP, wymienia informacje między twoją aplikacją a Graylog. Oznacza to, że otrzymujesz potwierdzenie, że wiadomość została odebrana przez Graylog.

Zaletą TCP jest to, że możesz ponownie wysłać wiadomość, jeśli nie zostanie odebrana przez Graylog (na przykład, gdy serwer nie działa). Wadą jest to, że jeśli Graylog jest wolny lub nie odpowiada, twoja aplikacja musi czekać na odpowiedź lub timeout, co może potencjalnie ją spowolnić.

Inną zaletą jest to, że możesz szyfrować swoje komunikacje za pomocą TLS (znanego również jako SSL).

  • Zapewnia, że wiadomość została odebrana.
  • Szyfrowanie jest dostępne (TLS).
  • Brak ograniczenia rozmiaru wiadomości
  • Może spowolnić nadawcę, jeśli Graylog wolno odpowiada lub nie działa.

Mamy nadzieję, że ten przewodnik dostarczył ci niezbędnych informacji do wyboru najlepszego formatu i protokołu do wysyłania logów do Graylog.

Pamiętaj, że możesz uruchamiać wiele wejść jednocześnie, używając różnych portów dla każdego. Na przykład, możesz mieć wejście "syslog UDP" na porcie 514 równolegle z wejściem "GELF TCP" na porcie 12201.