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!

Wejście to punkt końcowy, w którym Graylog odbiera Twoje logi. Możesz wysyłać logi za pomocą TCP lub UDP. Dodatkowo, Graylog może zbierać wpisy logów z API, kolejki Kafka, serwera RabbitMQ i innych metod.

W tym przykładzie utworzymy surowe wejście 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 swoje wejście z następującymi wartościami i zatwierdź formularz:

  1. Node: Wybierz swój węzeł
  2. Title: RAW UDP
  3. 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 dodatkowych wejść i pulpitów dostosowanych do Twoich potrzeb. W celu uzyskania dalszych wskazówek możesz skorzystać z oficjalnej dokumentacji Graylog.

Kilka przykładów kodu jest dostępnych w naszym repozytorium Git. To repozytorium oferuje praktyczne implementacje i dodatkowe dostosowania, aby pomóc Ci w pełni wykorzystać Graylog.

Jeśli masz klienta rsyslog i chcesz bezpiecznie wysyłać logi do Graylog, postępuj zgodnie z tymi krokami:

Nie aktywuj żadnej opcji TLS na wejściu Graylog. TLS będzie zarządzany bezpośrednio przez reverse proxy na Twojej instancji, aby Graylog nie musiał się tym zajmować.

  1. Przejdź do konfiguracji swojej usługi Graylog w panelu Stackhero i włącz "TLS encryption" dla portu Syslog TCP 514.

  2. Zaktualizuj swoją konfigurację rsyslog zgodnie z poniższymi wskazówkami. Zastąp <XXXXXX>.stackhero-network.com nazwą hosta swojej instancji:

    # Definiowanie certyfikatu CA TLS
    global(
      DefaultNetstreamDriver="gtls"
      DefaultNetstreamDriverCAFile="/etc/ssl/certs/ca-certificates.crt"
    )
    
    # Wysyłanie wszystkich logów do zdalnego serwera
    # Tworzona jest kolejka na dysku dla tej akcji. Jeśli zdalny host jest
    # niedostępny, wiadomości są zapisywane na dysku i wysyłane, gdy stanie się dostępny ponownie
    # 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 nazwy dla plików kolejki
      queue.type="LinkedList"
      queue.maxDiskSpace="256m"
      queue.saveOnShutdown="on"
      action.resumeRetryCount="-1"
      action.resumeInterval="30"
    )
    
  3. Zrestartuj swoją usługę rsyslog i zweryfikuj konfigurację, wysyłając log za pomocą polecenia:

    logger This is a test
    

To kończy konfigurację. Teraz bezpiecznie wysyłasz logi do Graylog z użyciem szyfrowania TLS!

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'

Możesz zobaczyć ten błąd w logach dostępnych w panelu Stackhero lub w panelu administracyjnym Graylog w System > Overview > Indexer failures.

Ten błąd wskazuje, że log został wysłany z wartością dla pola time, która nie odpowiada oczekiwanemu typowi (w tym przypadku, wartość numeryczna typu "long"). Graylog wykorzystuje funkcję dynamicznego mapowania OpenSearch. Kiedy log jest wysyłany po raz pierwszy, OpenSearch próbuje odgadnąć typy pól. Na przykład, jeśli log zawiera pole time z wartością numeryczną 1234, OpenSearch definiuje je jako pole numeryczne. Jeśli inny log zostanie wysłany z polem time ustawionym jako "abcd", ciąg znaków, OpenSearch go odrzuci, ponieważ oczekuje wartości numerycznej.

Pamiętaj, że nazwa pola time jest używana tylko jako przykład. Może to być dowolna nazwa pola i typ.

Aby rozwiązać ten problem, musisz zdefiniować na nowo typ, którego oczekuje OpenSearch. Więcej informacji znajdziesz w oficjalnej dokumentacji Graylog.

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.

Bądź ostrożny z tymi zmianami, ponieważ nieprawidłowe konfiguracje mogą zablokować Twój klaster OpenSearch i potencjalnie spowodować utratę danych. Jeśli nie jesteś pewien, nie kontynuuj.

  1. Zdefiniuj swoje nowe mapowanie. W tym przykładzie redefiniujemy pole time, aby było typu string. Dostępne typy znajdziesz w dokumentacji typów pól OpenSearch.

  2. Zapisz następującą zawartość do pliku o nazwie graylog-custom-mapping.json:

    {
      "template": "graylog_*",
      "mappings": {
        "message": {
          "properties": {
            "time": {
              "type": "string",
              "index": "not_analyzed"
            }
          }
        }
      }
    }
    
  3. Wyślij ten plik za pomocą następującego polecenia curl (zastąp <XXXXXX>.stackhero-network.com nazwą domeny 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ź taką jak:

    {
      "acknowledged": true
    }
    
  4. Na koniec, zweryfikuj, że mapowanie zostało zaktualizowane za pomocą tego polecenia (zastąp domenę w razie potrzeby):

    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

dzieje się tak, ponieważ Graylog Enterprise został aktywowany bez ważnej licencji. Jeśli masz licencję, możesz ją wprowadzić w interfejsie Graylog. Jeśli nie masz licencji, po prostu wyłącz Graylog Enterprise w panelu Stackhero.