Graylog: Duomenų atvaizdavimo problemos

Kaip išspręsti Graylog indekso duomenų atvaizdavimo problemas

👋 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.

Viena iš dažniausiai pasitaikančių Graylog problemų yra duomenų atvaizdavimo (mapping) konfliktai, dėl kurių gali nepavykti indeksuoti duomenų. Su šia problema galite susidurti, jei žurnaluose matote tokius įrašus:

ElasticsearchException[Elasticsearch exception [type=mapper_parsing_exception, reason=failed to parse field [level] of type [long] in document with id '34fd4d11-36ed-11f0-afc9-0242ac140002'. Preview of field's value: 'error']]; nested: ElasticsearchException[Elasticsearch exception [type=illegal_argument_exception, reason=For input string: "error"]];

Ši problema kyla dėl OpenSearch dinaminio atvaizdavimo (dynamic mapping) funkcijos. Dinaminis atvaizdavimas automatiškai nustato kiekvieno lauko duomenų tipą pagal pirmąjį į indeksą įrašytą dokumentą. Nustačius duomenų tipą, jis tampa „užrakintas“, ir visi vėlesni dokumentai, kuriuose tas laukas turi kitokį duomenų tipą, bus atmesti, sukeldami mapper parsing exception klaidą.

Kai sukuriamas naujas indeksas, pirmasis dokumentas apibrėžia indekso atvaizdavimą. Pavyzdžiui, jei dokumente yra laukas „level“ su verte 3 (skaitinė reikšmė), OpenSearch nustato „level“ duomenų tipą kaip „long“ (skaitinis tipas). Jei vėliau į Graylog siunčiamame dokumente laukas „level“ bus „error“ (tekstinis tipas), toks dokumentas bus atmestas, nes duomenų tipas nesutampa su pradiniu. Tokiu atveju bus išmesta mapper_parsing_exception klaida su priežastimi failed to parse field [level] of type [long] in document with id 'xxx'.

Ši problema gali kilti su bet kuriuo lauku, jei dokumentuose naudojami nesuderinami duomenų tipai.

Yra du būdai, kaip išspręsti šią problemą:

Idealiausias sprendimas – standartizuoti laukų duomenų tipus visose sistemose, siunčiančiose duomenis į Graylog. Pavyzdžiui, užtikrinkite, kad laukas „level“ visada būtų siunčiamas kaip tekstas (pvz., „error“, „warn“ ir pan.) arba visada kaip skaičius (3, 4 ir t. t.). Tokia nuoseklumas padeda išvengti atvaizdavimo konfliktų ir užtikrina, kad visi dokumentai būtų tinkamai įkelti.

Jei standartizuoti duomenų tipus visose sistemose nėra galimybės, galite naudoti Graylog pipelines funkcionalumą duomenų tipams konvertuoti gavimo metu. Pipelines leidžia apibrėžti taisykles, kurios transformuoja duomenis pagal tam tikras sąlygas.

Norėdami įgyvendinti šį sprendimą:

  • Eikite į „System“ > „Pipelines“ Graylog žiniatinklio sąsajoje.
  • Spauskite „Add new pipeline“, kad sukurtumėte naują pipeline.
  • Apibrėžkite taisykles, kurios konvertuoja lauką „level“ (ar kitus laukus) į norimą duomenų tipą. Pavyzdžiui, galite konvertuoti skaitinius lygius į atitinkamas tekstines reikšmes (pvz., 3 į „error“, 4 į „warning“ ir pan.).

Šis metodas užtikrina, kad visi gaunami duomenys atitiktų tikėtinus duomenų tipus ir išvengtumėte atvaizdavimo konfliktų.

Patyrusiems naudotojams Graylog suteikia galimybę peržiūrėti ir rankiniu būdu koreguoti indeksų atvaizdavimą:

  • Eikite į „System“ > „Indices“ Graylog žiniatinklio sąsajoje.
  • Pasirinkite reikiamą indeksą.
  • Eikite į „Configuration“ > „Configure index field types“, kad peržiūrėtumėte arba pakeistumėte laukų atvaizdavimą.

Tačiau rankinius pakeitimus reikia atlikti atsargiai, nes neteisingas atvaizdavimas gali sukelti papildomų duomenų įkėlimo problemų.