Graylog: Pierwsze kroki
Jak rozpocząć pracę z 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!
Tworzenie pierwszego inputu w Graylog
Input to punkt końcowy, do którego Graylog odbiera Twoje logi. Możesz przesyłać logi za pomocą TCP lub UDP. Dodatkowo Graylog może zbierać wpisy logów z API, kolejki Kafka, serwera RabbitMQ oraz innymi metodami.
W tym przykładzie utworzymy surowy input UDP. Aby rozpocząć, otwórz interfejs Graylog i przejdź do "System", a następnie "Inputs". Wybierz "Raw/Plaintext UDP" i kliknij "Launch new input". Skonfiguruj input według poniższych wartości i zatwierdź formularz:
- Node: Wybierz swój node
- Title: RAW UDP
- Port: 5555
Następnie otwórz terminal na swoim komputerze i wyślij wiadomość UDP do swojego serwera Graylog. Pamiętaj, aby zastąpić XXXXXX nazwą domeny swojej usługi:
- Na macOS:
echo "Hello Graylog from UDP" | nc -u -w1 -c <XXXXXX>.stackhero-network.com 5555 - Na Linux:
echo "Hello Graylog from UDP" | nc -u -w1 <XXXXXX>.stackhero-network.com 5555
Po wysłaniu wiadomości wróć do Graylog i kliknij "Search". Powinieneś zobaczyć swoją wiadomość 🎉
Gratulacje, właśnie wysłałeś swoją pierwszą wiadomość do Graylog! Zachęcamy do tworzenia kolejnych inputów i dashboardów dostosowanych do Twoich potrzeb. Po więcej informacji zajrzyj do oficjalnej dokumentacji Graylog.
Przykłady kodu Graylog
Kilka przykładów kodu znajdziesz w naszym repozytorium Git. Repozytorium to oferuje praktyczne implementacje i dodatkowe możliwości personalizacji, które pomogą Ci w pełni wykorzystać Graylog.
Wysyłanie logów rsyslog do Graylog z użyciem szyfrowania TLS
Jeśli korzystasz z klienta rsyslog i chcesz bezpiecznie przesyłać logi do Graylog, wykonaj następujące kroki:
Nie aktywuj żadnej opcji TLS na inputcie Graylog. TLS będzie obsługiwany bezpośrednio przez reverse proxy na Twojej instancji, więc Graylog nie będzie go obsługiwał.
-
Przejdź do konfiguracji swojej usługi Graylog w panelu Stackhero i włącz "TLS encryption" dla portu Syslog TCP 514.
-
Zaktualizuj konfigurację rsyslog zgodnie z poniższymi wskazówkami. Zamień
<XXXXXX>.stackhero-network.comna nazwę hosta swojej instancji:# Definiowanie certyfikatu CA TLS global( DefaultNetstreamDriver="gtls" DefaultNetstreamDriverCAFile="/etc/ssl/certs/ca-certificates.crt" ) # Wysyłanie wszystkich logów na serwer zdalny # Dla tej akcji tworzona jest kolejka na dysku. Jeśli host zdalny # jest niedostępny, wiadomości są buforowane na dysku i wysyłane, gdy stanie się ponownie dostępny # Zobacz https://www.rsyslog.com/doc/v8-stable/configuration/actions.html # oraz https://www.rsyslog.com/doc/v8-stable/configuration/modules/omfwd.html *.* action( type="omfwd" target="<XXXXXX>.stackhero-network.com" port="514" protocol="tcp" KeepAlive="on" KeepAlive.Interval="30" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" ResendLastMSGOnReconnect="on" queue.filename="fwdRule1" # unikalny prefiks dla plików bufora queue.type="LinkedList" queue.maxDiskSpace="256m" queue.saveOnShutdown="on" action.resumeRetryCount="-1" action.resumeInterval="30" ) -
Zrestartuj usługę rsyslog i sprawdź konfigurację, wysyłając log poleceniem:
logger This is a test
Konfiguracja została zakończona. Od teraz przesyłasz logi do Graylog w sposób bezpieczny z użyciem TLS!
Obsługa błędu "failed to parse field [XXXX] of type [YYYY]"
Możesz napotkać błąd taki jak:
org.opensearch.index.mapper.MapperParsingException: failed to parse field [time] of type [long] in document with id 'xxxx'
Błąd ten możesz zobaczyć w logach dostępnych w panelu Stackhero lub w panelu administracyjnym Graylog w System > Overview > Indexer failures.
Ten błąd oznacza, że log został wysłany z wartością pola time, która nie odpowiada oczekiwanemu typowi (w tym przypadku liczba typu "long"). Graylog wykorzystuje funkcję dynamicznego mapowania OpenSearch. Gdy log jest wysyłany po raz pierwszy, OpenSearch próbuje zgadnąć typy pól. Na przykład, jeśli log zawiera pole time z wartością liczbową 1234, OpenSearch zdefiniuje je jako pole numeryczne. Jeśli kolejny log zostanie wysłany z polem time ustawionym na "abcd" (ciąg znaków), OpenSearch odrzuci go, ponieważ oczekuje wartości liczbowej.
Pamiętaj, że nazwa pola time jest użyta tylko jako przykład. Może to być dowolna nazwa pola i typ.
Aby rozwiązać ten problem, należy ponownie zdefiniować typ oczekiwany przez OpenSearch. Więcej informacji znajdziesz w oficjalnej dokumentacji Graylog.
Aktualizacja mapowania OpenSearch
Przed kontynuacją włącz dostęp do OpenSearch w panelu Stackhero. Przejdź do swojej usługi Graylog i kliknij przycisk "Configure", aby aktywować dostęp do OpenSearch.
Zachowaj ostrożność podczas tych zmian – nieprawidłowa konfiguracja może zablokować Twój klaster OpenSearch i potencjalnie spowodować utratę danych. Jeśli masz wątpliwości, nie kontynuuj.
-
Zdefiniuj nowe mapowanie. W tym przykładzie redefiniujemy pole
timejako typ string. Dostępne typy znajdziesz w dokumentacji typów pól OpenSearch. -
Zapisz poniższą zawartość do pliku o nazwie
graylog-custom-mapping.json:{ "template": "graylog_*", "mappings": { "message": { "properties": { "time": { "type": "string", "index": "not_analyzed" } } } } } -
Wyślij ten plik za pomocą poniższego polecenia curl (zamień
<XXXXXX>.stackhero-network.comna domenę swojej instancji):curl -u 'admin' -X PUT -d @'graylog-custom-mapping.json' -H 'Content-Type: application/json' 'https://<XXXXXX>.stackhero-network.com/opensearch/_template/graylog-custom-mapping?pretty'Powinieneś otrzymać odpowiedź podobną do:
{ "acknowledged": true } -
Na koniec sprawdź, czy mapowanie zostało zaktualizowane tym poleceniem (w razie potrzeby zamień domenę):
curl -u 'admin' -X GET 'https://<XXXXXX>.stackhero-network.com/opensearch/graylog_deflector/_mapping?pretty'
Obsługa błędu "Unable to write audit log entry"
Jeśli zobaczysz błąd taki jak:
Unable to write audit log entry because there is no valid license
lub
Not running cleanup for auditlog entries in MongoDB because there is no valid license
oznacza to, że Graylog Enterprise został aktywowany bez ważnej licencji. Jeśli posiadasz licencję, możesz ją wprowadzić w interfejsie Graylog. Jeśli nie masz licencji, po prostu wyłącz Graylog Enterprise w panelu Stackhero.