Graylog: Resolver o erro "failed to parse field [XXXX] of type [YYYY]"
Esta documentação faz parte do guia Primeiros passos. Consulte o guia completo aqui: Como começar a utilizar o 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!
Poderá encontrar um erro como:
org.opensearch.index.mapper.MapperParsingException: failed to parse field [time] of type [long] in document with id 'xxxx'
Pode consultar este erro nos logs disponíveis no dashboard da Stackhero ou no painel de administração do Graylog em System > Overview > Indexer failures.
Este erro indica que foi enviado um log com um valor para o campo time que não corresponde ao tipo esperado (neste caso, um valor numérico do tipo "long"). O Graylog utiliza a funcionalidade de mapeamento dinâmico do OpenSearch. Quando um log é enviado pela primeira vez, o OpenSearch tenta adivinhar o tipo dos campos. Por exemplo, se um log incluir o campo time com o valor numérico 1234, o OpenSearch define-o como um campo numérico. Se outro log for enviado com o campo time definido como "abcd", uma string, o OpenSearch irá rejeitá-lo porque espera um valor numérico.
Tenha em atenção que o nome do campo time é apenas um exemplo. Pode tratar-se de qualquer nome de campo e tipo.
Para resolver este problema, é necessário redefinir o tipo que o OpenSearch espera. Para mais informações, consulte a documentação oficial do Graylog.
Atualizar o mapping do OpenSearch
Antes de avançar, ative o acesso ao OpenSearch no dashboard da Stackhero. Aceda ao seu serviço Graylog e clique no botão "Configurar" para ativar o acesso ao OpenSearch.
Tenha cuidado com estas alterações, pois uma configuração incorreta pode bloquear o seu cluster OpenSearch e resultar em perda de dados. Se não tiver a certeza, não prossiga.
-
Defina o seu novo mapping. Neste exemplo, redefinimos o campo
timepara ser do tipo string. Pode consultar os tipos disponíveis na documentação dos tipos de campo do OpenSearch. -
Guarde o seguinte conteúdo num ficheiro chamado
graylog-custom-mapping.json:{ "template": "graylog_*", "mappings": { "message": { "properties": { "time": { "type": "string", "index": "not_analyzed" } } } } } -
Envie este ficheiro utilizando o seguinte comando curl (substitua
<XXXXXX>.stackhero-network.compelo domínio da sua instância):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'Deverá receber uma resposta semelhante a:
{ "acknowledged": true } -
Por fim, verifique se o mapping foi atualizado com este comando (substitua o domínio conforme necessário):
curl -u 'admin' -X GET 'https://<XXXXXX>.stackhero-network.com/opensearch/graylog_deflector/_mapping?pretty'