Graylog: Obsługa błędu "failed to parse field [XXXX] of type [YYYY]"
Ta dokumentacja jest częścią przewodnika Pierwsze kroki. Pełny przewodnik znajdziesz tutaj: Jak rozpocząć pracę z Graylog.
👋 Witamy w dokumentacji Stackhero
Stackhero oferuje w pełni zarządzane rozwiązanie Graylog cloud, zaprojektowane z myślą o szybkości i prostocie. Możesz:
- Korzystać z nielimitowanego, dedykowanego serwera SMTP email, który jest wliczony w usługę.
- Wdrażać aktualizacje bez wysiłku, jednym kliknięciem, bez konieczności ręcznej ingerencji.
- Używać własnej nazwy domeny zabezpieczonej przez HTTPS (na przykład https://logs.twoja-firma.com), zapewniając swojemu zespołowi bezpieczny, bezpośredni dostęp.
- Doświadczać wysokiej wydajności i bezpieczeństwa na prywatnej, dedykowanej infrastrukturze – bez współdzielonych zasobów i zakłócających sąsiadów.
Skup się na swoich danych, nie na narzędziach: rozpoczęcie pracy z Graylog cloud hosting od Stackhero zajmuje tylko kilka minut.
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'