Graylog: Problemas de mapeamento de dados
Como resolver problemas de mapeamento de dados de índice no Graylog
👋 Bem-vindo à documentação da Stackhero!
A Stackhero oferece uma solução Graylog cloud pronta a usar que proporciona uma série de benefícios, incluindo:
- Servidor de email SMTP ilimitado e dedicado incluído.
- Atualizações sem esforço com apenas um clique.
- Nome de domínio personalizável seguro com HTTPS (por exemplo, https://logs.sua-empresa.com).
- Desempenho ótimo e segurança robusta alimentados por uma VM privada e dedicada.
Poupe tempo e simplifique a sua vida: são necessários apenas 5 minutos para experimentar a solução Graylog cloud hosting da Stackhero!
Um problema comum no Graylog são os conflitos de mapeamento de dados que podem levar a falhas nas tentativas de indexação. Pode encontrar este problema se vir logs como estes:
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"]];
Razão para o problema
Este problema surge da funcionalidade de mapeamento dinâmico do OpenSearch. O mapeamento dinâmico determina automaticamente o tipo de dados de cada campo com base no primeiro documento escrito num índice. Uma vez definido, este tipo de dados é "bloqueado", e qualquer documento futuro com um tipo de dados diferente para esse campo é rejeitado, causando uma exceção de parsing do mapper.
Quando um novo índice é criado, o primeiro documento define o mapeamento do índice. Por exemplo, se o documento contiver um campo "level" com um valor de 3 (um valor numérico), o OpenSearch define o tipo de dados para "level" como "long" (um tipo numérico). Se um documento posterior enviado para o Graylog contiver o campo "level" definido como "error" (um tipo string), será rejeitado porque o tipo de dados não corresponde ao tipo inicialmente definido. Isto desencadeia um erro mapper_parsing_exception com a razão failed to parse field [level] of type [long] in document with id 'xxx'.
Este problema pode ocorrer com qualquer campo se os tipos de dados forem inconsistentes entre documentos.
Como resolver o problema
Para resolver este problema, tem 2 opções:
1. Assegurar a consistência dos tipos de dados entre sistemas
A solução ideal é padronizar os tipos de dados usados para campos em todos os sistemas que enviam dados para o Graylog. Por exemplo, assegure-se de que o campo "level" é sempre enviado como uma string (como "error", "warn", etc.) ou sempre como um número (3, 4, etc.). Esta consistência previne conflitos de mapeamento e garante que todos os documentos são ingeridos corretamente.
2. Usar pipelines do Graylog para conversão de dados
Se a padronização dos tipos de dados em todos os sistemas não for viável, pode usar os pipelines do Graylog para converter os tipos de dados ao recebê-los. Os pipelines permitem definir regras que transformam dados com base em condições específicas.
Para implementar esta solução:
- Navegue até "System" > "Pipelines" na interface web do Graylog.
- Clique em "Add new pipeline" para criar um novo pipeline.
- Defina regras para converter o campo "level" (ou outros campos) para o tipo de dados desejado. Por exemplo, pode converter níveis numéricos para as suas representações string correspondentes (como 3 para "error", 4 para "warning", etc.).
Esta abordagem garante que todos os dados recebidos respeitam os tipos de dados esperados, evitando conflitos de mapeamento.
Visualização e alteração dos mapeamentos de índice
Para utilizadores avançados, o Graylog oferece a capacidade de visualizar e ajustar manualmente o mapeamento dos índices:
- Vá para "System" > "Indices" na interface web do Graylog.
- Selecione o índice relevante.
- Navegue até "Configuration" > "Configure index field types" para visualizar ou modificar os mapeamentos de campos.
No entanto, os ajustes manuais devem ser abordados com cautela, pois mapeamentos incorretos podem levar a mais problemas de ingestão.