Graylog: Gestire l'errore "failed to parse field [XXXX] of type [YYYY]"
Questa documentazione fa parte della guida Come iniziare. Consulta la guida completa qui: Come iniziare con Graylog.
👋 Benvenuti nella documentazione di Stackhero!
Stackhero offre una soluzione Graylog cloud pronta all'uso che fornisce numerosi vantaggi, tra cui:
- Server email SMTP illimitato e dedicato incluso.
- Aggiornamenti senza sforzo con un solo clic.
- Nome di dominio personalizzabile sicuro con HTTPS (ad esempio, https://logs.tua-azienda.com).
- Prestazioni ottimali e sicurezza robusta grazie a una VM privata e dedicata.
Risparmia tempo e semplifica la tua vita: bastano 5 minuti per provare la soluzione Graylog cloud hosting di Stackhero!
Potreste incontrare un errore come:
org.opensearch.index.mapper.MapperParsingException: failed to parse field [time] of type [long] in document with id 'xxxx'
Potete visualizzare questo errore nei log disponibili nella dashboard Stackhero o nel pannello di amministrazione di Graylog sotto System > Overview > Indexer failures.
Questo errore indica che è stato inviato un log con un valore per il campo time che non corrisponde al tipo atteso (in questo caso, un valore numerico di tipo "long"). Graylog sfrutta la funzionalità di mapping dinamico di OpenSearch. Quando un log viene inviato per la prima volta, OpenSearch tenta di dedurre i tipi dei campi. Ad esempio, se un log contiene il campo time con il valore numerico 1234, OpenSearch lo definisce come campo numerico. Se successivamente viene inviato un altro log con il campo time impostato a "abcd", ovvero una stringa, OpenSearch lo rifiuterà perché si aspetta un valore numerico.
Ricordate che il nome del campo time è solo a scopo illustrativo. Può trattarsi di qualsiasi nome di campo e tipo.
Per risolvere questo problema, è necessario ridefinire il tipo che OpenSearch si aspetta. Per maggiori informazioni, consultate la documentazione ufficiale di Graylog.
Aggiornare il mapping di OpenSearch
Prima di procedere, abilitate l'accesso a OpenSearch dalla dashboard Stackhero. Accedete al vostro servizio Graylog e cliccate sul pulsante "Configura" per attivare l'accesso a OpenSearch.
Fate attenzione a queste modifiche: una configurazione errata può bloccare il vostro cluster OpenSearch e causare la perdita di dati. Se avete dubbi, non procedete.
-
Definite il nuovo mapping. In questo esempio, ridefiniamo il campo
timecome tipo string. Potete trovare i tipi disponibili nella documentazione dei tipi di campo di OpenSearch. -
Salvate il seguente contenuto in un file chiamato
graylog-custom-mapping.json:{ "template": "graylog_*", "mappings": { "message": { "properties": { "time": { "type": "string", "index": "not_analyzed" } } } } } -
Inviate questo file utilizzando il seguente comando curl (sostituite
<XXXXXX>.stackhero-network.comcon il dominio della vostra istanza):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'Dovreste ricevere una risposta simile a:
{ "acknowledged": true } -
Infine, verificate che il mapping sia stato aggiornato con questo comando (sostituite il dominio se necessario):
curl -u 'admin' -X GET 'https://<XXXXXX>.stackhero-network.com/opensearch/graylog_deflector/_mapping?pretty'