Graylog: Problemen met datamapping
Hoe u problemen met Graylog index datamapping oplost
👋 Welkom bij de Stackhero documentatie!
Stackhero biedt een kant-en-klare Graylog cloud oplossing die tal van voordelen biedt, waaronder:
- Onbeperkte en toegewijde SMTP e-mailserver inbegrepen.
- Moeiteloze updates met slechts één klik.
- Aanpasbare domeinnaam beveiligd met HTTPS (bijvoorbeeld, https://logs.uw-bedrijf.com).
- Optimale prestaties en robuuste beveiliging aangedreven door een privé en toegewijde VM.
Bespaar tijd en vereenvoudig uw leven: het kost slechts 5 minuten om de Graylog cloud hosting oplossing van Stackhero te proberen!
Een veelvoorkomend probleem in Graylog zijn datamapping-conflicten die kunnen leiden tot mislukte indexeringspogingen. U kunt dit probleem tegenkomen als u logs ziet zoals deze:
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"]];
Oorzaak van het probleem
Dit probleem ontstaat door de dynamische mapping-functionaliteit van OpenSearch. Dynamische mapping bepaalt automatisch het gegevenstype van elk veld op basis van het eerste document dat naar een index wordt geschreven. Zodra het gegevenstype is vastgesteld, wordt dit "vastgezet" en worden toekomstige documenten met een afwijkend gegevenstype voor dat veld geweigerd, wat resulteert in een mapper parsing exception.
Wanneer een nieuwe index wordt aangemaakt, bepaalt het eerste document de indexmapping. Als het document bijvoorbeeld een veld "level" bevat met de waarde 3 (een numerieke waarde), stelt OpenSearch het gegevenstype van "level" in op "long" (een numeriek type). Als een later document dat naar Graylog wordt gestuurd het veld "level" bevat met de waarde "error" (een string), wordt dit geweigerd omdat het gegevenstype niet overeenkomt met het oorspronkelijk ingestelde type. Dit veroorzaakt een mapper_parsing_exception-fout met als reden failed to parse field [level] of type [long] in document with id 'xxx'.
Dit probleem kan bij elk veld optreden als de gegevenstypen niet consistent zijn tussen documenten.
Hoe lost u het probleem op
Om dit probleem op te lossen, heeft u twee opties:
1. Zorg voor consistente gegevenstypen tussen systemen
De ideale oplossing is het standaardiseren van de gebruikte gegevenstypen voor velden in alle systemen die data naar Graylog sturen. Zorg er bijvoorbeeld voor dat het veld "level" altijd als string (zoals "error", "warn", enz.) of altijd als nummer (3, 4, enz.) wordt verzonden. Deze consistentie voorkomt mapping-conflicten en zorgt ervoor dat alle documenten correct worden geïmporteerd.
2. Gebruik Graylog pipelines voor dataconversie
Als het niet mogelijk is om de gegevenstypen in alle systemen te standaardiseren, kunt u gebruikmaken van de pipelines-functionaliteit van Graylog om gegevenstypen bij ontvangst te converteren. Met pipelines kunt u regels definiëren die data transformeren op basis van specifieke voorwaarden.
Om deze oplossing te implementeren:
- Ga in de Graylog webinterface naar "System" > "Pipelines".
- Klik op "Add new pipeline" om een nieuwe pipeline aan te maken.
- Definieer regels om het veld "level" (of andere velden) naar het gewenste gegevenstype te converteren. U kunt bijvoorbeeld numerieke levels omzetten naar hun overeenkomstige stringrepresentaties (zoals 3 naar "error", 4 naar "warning", enz.).
Met deze aanpak zorgt u ervoor dat alle binnenkomende data voldoen aan de verwachte gegevenstypen, waardoor mapping-conflicten worden voorkomen.
Indexmappings bekijken en aanpassen
Voor gevorderde gebruikers biedt Graylog de mogelijkheid om de mapping van indices te bekijken en handmatig aan te passen:
- Ga in de Graylog webinterface naar "System" > "Indices".
- Selecteer de relevante index.
- Navigeer naar "Configuration" > "Configure index field types" om de veldmappings te bekijken of aan te passen.
Let op: handmatige aanpassingen dienen met de nodige voorzichtigheid te worden uitgevoerd, omdat onjuiste mappings kunnen leiden tot verdere problemen bij het importeren van data.