Graylog: Kaip spręsti klaidą „failed to parse field [XXXX] of type [YYYY]“
Ši dokumentacija yra Pradžia vadovo dalis. Visą vadovą rasite čia: Kaip pradėti naudotis Graylog.
👋 Sveiki atvykę į Stackhero dokumentaciją
Stackhero siūlo pilnai valdomą Graylog cloud sprendimą, sukurtą greičiui ir paprastumui. Galite:
- Pasikliauti neribotu, dedikuotu SMTP el. pašto serveriu, kuris įtrauktas į jūsų paslaugą.
- Taikyti atnaujinimus be pastangų vienu paspaudimu, nereikalaujant rankinio įsikišimo.
- Naudoti individualų domeno vardą, apsaugotą HTTPS (pavyzdžiui, https://logs.jusu-imone.com), suteikiant komandai saugų ir tiesioginį priėjimą.
- Patirti aukštą veikimo spartą ir saugumą naudojant privačią, dedikuotą infrastruktūrą be bendrų resursų ar triukšmingų kaimynų.
Susitelkite į savo duomenis, o ne į įrankius: pradėti naudotis Stackhero Graylog cloud hosting sprendimu galite vos per kelias minutes.
Galite susidurti su tokia klaida:
org.opensearch.index.mapper.MapperParsingException: failed to parse field [time] of type [long] in document with id 'xxxx'
Šią klaidą galite matyti Stackhero valdymo skydelyje pateikiamuose žurnaluose arba Graylog administravimo panelėje, System > Overview > Indexer failures.
Ši klaida reiškia, kad žurnale lauko time reikšmė neatitinka laukiamo tipo (šiuo atveju – skaitinė „long“ tipo reikšmė). Graylog naudoja OpenSearch dinaminio žemėlapio (dynamic mapping) funkciją. Kai žurnalas siunčiamas pirmą kartą, OpenSearch bando atspėti laukų tipus. Pavyzdžiui, jei žurnale laukas time yra su skaitine reikšme 1234, OpenSearch jį apibrėžia kaip skaitinį lauką. Jei vėliau atsiunčiamas žurnalas su lauku time ir reikšme „abcd“ (eilutė), OpenSearch jį atmes, nes tikisi skaitinės reikšmės.
Atkreipkite dėmesį, kad lauko pavadinimas time naudojamas tik pavyzdžiui. Tai gali būti bet koks lauko pavadinimas ir tipas.
Norėdami išspręsti šią problemą, turite iš naujo apibrėžti lauką, kurio tikisi OpenSearch. Daugiau informacijos rasite oficialioje Graylog dokumentacijoje.
OpenSearch žemėlapio (mapping) atnaujinimas
Prieš tęsdami, Stackhero valdymo skydelyje įjunkite OpenSearch prieigą. Eikite į savo Graylog paslaugą ir spustelėkite „Configure“ mygtuką, kad aktyvuotumėte OpenSearch prieigą.
Būkite atsargūs su šiais pakeitimais – neteisinga konfigūracija gali užblokuoti jūsų OpenSearch klasterį ir sukelti duomenų praradimą. Jei nesate tikri, netęskite.
-
Apibrėžkite naują mapping. Šiame pavyzdyje laukas
timeperrašomas kaip string tipo. Galimus tipus rasite OpenSearch laukų tipų dokumentacijoje. -
Išsaugokite šį turinį faile
graylog-custom-mapping.json:{ "template": "graylog_*", "mappings": { "message": { "properties": { "time": { "type": "string", "index": "not_analyzed" } } } } } -
Išsiųskite šį failą naudodami šią curl komandą (pakeiskite
<XXXXXX>.stackhero-network.comį savo instancijos domeną):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'Turėtumėte gauti atsakymą:
{ "acknowledged": true } -
Galiausiai patikrinkite, ar mapping buvo atnaujintas, naudodami šią komandą (prireikus pakeiskite domeną):
curl -u 'admin' -X GET 'https://<XXXXXX>.stackhero-network.com/opensearch/graylog_deflector/_mapping?pretty'