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 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ą!

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.

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.

  1. Apibrėžkite naują mapping. Šiame pavyzdyje laukas time perrašomas kaip string tipo. Galimus tipus rasite OpenSearch laukų tipų dokumentacijoje.

  2. Išsaugokite šį turinį faile graylog-custom-mapping.json:

    {
      "template": "graylog_*",
      "mappings": {
        "message": {
          "properties": {
            "time": {
              "type": "string",
              "index": "not_analyzed"
            }
          }
        }
      }
    }
    
  3. 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
    }
    
  4. 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'