Graylog: Duomenų susiejimo problemos
Kaip išspręsti Graylog indekso duomenų susiejimo problemas
👋 Sveiki atvykę į Stackhero dokumentaciją!
Stackhero siūlo paruoštą naudoti Graylog cloud sprendimą, kuris suteikia daugybę privalumų, įskaitant:
- Įtrauktas neribotas ir dedikuotas SMTP el. pašto serveris.
- Lengvi atnaujinimai vienu paspaudimu.
- Pritaikomas domeno vardas, apsaugotas HTTPS (pavyzdžiui, https://logs.jusu-imone.com).
- Optimali veikla ir tvirta sauga, užtikrinta privačia ir dedikuota VM.
Taupykite laiką ir supaprastinkite savo gyvenimą: tereikia 5 minučių, kad išbandytumėte Stackhero Graylog cloud hosting sprendimą!
Dažna problema Graylog yra duomenų susiejimo konfliktai, kurie gali sukelti nesėkmingus indeksavimo bandymus. Galite susidurti su šia problema, jei matote tokius žurnalus:
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"]];
Problemos priežastis
Ši problema kyla dėl OpenSearch dinaminio susiejimo funkcijos. Dinaminis susiejimas automatiškai nustato kiekvieno lauko duomenų tipą pagal pirmą dokumentą, įrašytą į indeksą. Kai nustatytas, šis duomenų tipas yra "užrakintas", ir bet kokie būsimi dokumentai su skirtingu duomenų tipu tam laukui yra atmetami, sukeldami mapper parsing exception.
Kai sukuriamas naujas indeksas, pirmasis dokumentas apibrėžia indekso susiejimą. Pavyzdžiui, jei dokumente yra "level" laukas su verte 3 (skaitinė vertė), OpenSearch nustato "level" duomenų tipą kaip "long" (skaitinis tipas). Jei vėlesnis dokumentas, siunčiamas į Graylog, turi "level" lauką su verte "error" (eilutės tipas), jis bus atmestas, nes duomenų tipas nesutampa su pradiniu tipu. Tai sukelia mapper_parsing_exception klaidą 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 duomenų tipai yra nesuderinami tarp dokumentų.
Kaip išspręsti problemą
Norėdami išspręsti šią problemą, turite 2 pasirinkimus:
1. Užtikrinti nuoseklius duomenų tipus tarp sistemų
Idealiausias sprendimas yra standartizuoti duomenų tipus, naudojamus laukams visose sistemose, siunčiančiose duomenis į Graylog. Pavyzdžiui, užtikrinkite, kad "level" laukas visada būtų siunčiamas kaip eilutė (pvz., "error", "warn" ir kt.) arba visada kaip skaičius (3, 4 ir kt.). Šis nuoseklumas užkerta kelią susiejimo konfliktams ir užtikrina, kad visi dokumentai būtų tinkamai įtraukti.
2. Naudoti Graylog vamzdynus duomenų konversijai
Jei standartizuoti duomenų tipus visose sistemose nėra įmanoma, galite naudoti Graylog vamzdynus duomenų tipams konvertuoti gavimo metu. Vamzdynai leidžia apibrėžti taisykles, kurios transformuoja duomenis pagal specifines sąlygas.
Norėdami įgyvendinti šį sprendimą:
- Eikite į "System" > "Pipelines" Graylog žiniatinklio sąsajoje.
- Spustelėkite "Add new pipeline", kad sukurtumėte naują vamzdyną.
- Apibrėžkite taisykles, kad konvertuotumėte "level" lauką (ar kitus laukus) į norimą duomenų tipą. Pavyzdžiui, galite konvertuoti skaitinius lygius į jų atitinkamas eilutės reprezentacijas (pvz., 3 į "error", 4 į "warning" ir kt.).
Šis požiūris užtikrina, kad visi gaunami duomenys atitiktų tikėtinus duomenų tipus, išvengiant susiejimo konfliktų.
Indeksų susiejimų peržiūra ir keitimas
Pažengusiems vartotojams Graylog suteikia galimybę peržiūrėti ir rankiniu būdu koreguoti indeksų susiejimus:
- Eikite į "System" > "Indices" Graylog žiniatinklio sąsajoje.
- Pasirinkite atitinkamą indeksą.
- Eikite į "Configuration" > "Configure index field types", kad peržiūrėtumėte arba pakeistumėte laukų susiejimus.
Tačiau rankiniai pakeitimai turėtų būti atliekami atsargiai, nes neteisingi susiejimai gali sukelti tolesnes įtraukimo problemas.