Graylog: Problemi di mapping dei dati
Come risolvere i problemi di mapping dei dati degli indici 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!
Un problema comune in Graylog riguarda i conflitti di mapping dei dati che possono causare errori durante i tentativi di indicizzazione. Potreste riscontrare questo problema se visualizzate log simili ai seguenti:
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"]];
Motivo del problema
Questo problema deriva dalla funzionalità di mapping dinamico di OpenSearch. Il mapping dinamico determina automaticamente il tipo di dato di ciascun campo in base al primo documento scritto in un indice. Una volta impostato, questo tipo di dato viene "bloccato" e qualsiasi documento successivo che presenta un tipo di dato diverso per quel campo viene rifiutato, generando un'eccezione di tipo mapper parsing exception.
Quando viene creato un nuovo indice, il primo documento definisce il mapping dell'indice. Ad esempio, se il documento contiene un campo "level" con valore 3 (un valore numerico), OpenSearch imposta il tipo di dato di "level" su "long" (tipo numerico). Se un documento successivo inviato a Graylog contiene il campo "level" impostato su "error" (tipo stringa), verrà rifiutato perché il tipo di dato non corrisponde a quello inizialmente definito. Questo genera un errore mapper_parsing_exception con la motivazione failed to parse field [level] of type [long] in document with id 'xxx'.
Questo problema può verificarsi con qualsiasi campo se i tipi di dato non sono coerenti tra i documenti.
Come risolvere il problema
Per risolvere questo problema, avete due opzioni:
1. Garantire la coerenza dei tipi di dato tra i sistemi
La soluzione ideale è standardizzare i tipi di dato utilizzati per i campi su tutti i sistemi che inviano dati a Graylog. Ad esempio, assicuratevi che il campo "level" venga sempre inviato come stringa (ad esempio "error", "warn", ecc.) oppure sempre come numero (3, 4, ecc.). Questa coerenza previene conflitti di mapping e garantisce che tutti i documenti vengano ingeriti correttamente.
2. Utilizzare le pipeline di Graylog per la conversione dei dati
Se non è possibile standardizzare i tipi di dato su tutti i sistemi, potete utilizzare le pipeline di Graylog per convertire i tipi di dato al momento della ricezione. Le pipeline consentono di definire regole che trasformano i dati in base a condizioni specifiche.
Per implementare questa soluzione:
- Accedete a "System" > "Pipelines" nell'interfaccia web di Graylog.
- Fate clic su "Add new pipeline" per creare una nuova pipeline.
- Definite regole per convertire il campo "level" (o altri campi) nel tipo di dato desiderato. Ad esempio, potete convertire livelli numerici nella loro rappresentazione testuale corrispondente (come 3 in "error", 4 in "warning", ecc.).
Questo approccio garantisce che tutti i dati in ingresso rispettino i tipi di dato previsti, prevenendo conflitti di mapping.
Visualizzazione e modifica dei mapping degli indici
Per gli utenti avanzati, Graylog offre la possibilità di visualizzare e modificare manualmente il mapping degli indici:
- Andate su "System" > "Indices" nell'interfaccia web di Graylog.
- Selezionate l'indice di interesse.
- Accedete a "Configuration" > "Configure index field types" per visualizzare o modificare i mapping dei campi.
Tuttavia, le modifiche manuali devono essere effettuate con cautela, poiché mapping errati possono causare ulteriori problemi di ingestione.