O Elasticsearch morre quando o Logstash tenta gravar dados

9

Eu tenho uma configuração do Raspberry Pi 2 (mais recente Raspbian a partir de abril de 2015) que na semana passada estava executando o ElasticSearch e o Logstash em uma rede de teste (não é uma configuração direta, mas foi estável por mais de uma semana!). Reiniciei minha máquina hoje e estou tendo muita dificuldade em fazer as coisas funcionarem novamente; ES e LS serão executados independentemente, mas quando tento enviar a saída LS para ES, a instância ES morre sem explicação. Meu objetivo é obter dados de execução e de extração de LS no ES por meio do plug-in de saída padrão.

ElasticSearch [v1.5.0]

Eu acredito que é aqui que está o principal problema. O ES pode inicializar via service elasticsearch starte continua em execução, é acessível via solicitações HTTP para a porta 9200 e todos os sinais de vida parecem íntegros. Assim que algo (pelo que sei) tenta gravar dados em um índice, o processo morre e os logs de depuração @ / var / log / elasticsearch / * não contêm nada relacionado à falha do serviço. Tentei inserir via logstash (veja abaixo) e também com curl, os quais encerram o processo ES. O comando curl que estou executando é curl -XPOST "http://localhost:9200/logstash-2015.04.05/records/" -d "{ \"type\" : \"specialRecord\" }".

Logstash [v1.4.2]

Atualmente, estou executando com esta configuração simples:

input {
    stdin { }
}

output {
        stdout { codec => rubydebug }
        elasticsearch {
                host => '127.0.0.1'
                cluster => 'elasticsearch'
        }
}

Outras notas

Algumas coisas que eu tentei:

  • Tentei aumentar os níveis de registro do ElasticSearch para DEBUG / TRACE e a saída é notavelmente desinteressante. É um prazer fornecer logs, se for útil.

  • Tentei fornecer ES 256MB e 512MB de espaço de heap, o que parece não afetar nada. Também observei a utilização da memória durante tudo isso e ficar sem memória não parece ser um problema.

  • Tentei desabilitar o multicast para tentar eliminar um monte de variáveis ​​de rede, mas isso não pareceu fazer a diferença.

  • Garanto que o diretório de dados do ES tenha bastante espaço, permissões de gravação, etc. O ES cria subdiretórios no path.datadiretório quando ele é carregado, mas não acredito que nada seja adicionado, pois, quando reinicio o processo do ES, as estatísticas do índice sugerem que o número total de documentos é zero.

Estou muito perplexo agora e decepcionado que nada que eu precise (ou pelo menos consiga encontrar) esteja sendo registrado. Alguma idéia do que pode estar acontecendo aqui?

Salis
fonte
Se você não está obtendo nada útil dos logs, a única opção (além de compilar a partir do código-fonte e adicionar mais instruções de depuração) parece estar usando strace para assistir às chamadas do sistema. Isso pode lhe dar uma dica de por que a pesquisa elástica está morrendo. Para reduzir o volume, inicie normalmente e siga o processo em execução imediatamente antes de iniciar a gravação.
Paul Haldane
Ter uma falha sem nenhum registro me lembra dos problemas da JNI, não há um dump do processo da JVM ( hs_err_PID.log)? O ES 1.5 usa uma biblioteca nativa chamada Sigar para monitoramento, pode ter problemas com o ARM do Raspberry. Você poderia tentar executar o Sigar sozinho? Eu tentaria atualizar para o ES 1.5.2 ou ES 2.0, que não usa mais o Sigar.
G # # # Quintana
Você desativou a troca?
Rumbles
A Elasticsearch recomenda 8G de RAM para começar. Certa vez, eu o executei em um Raspberry Pi 3. Funciona, mas você precisa ter um pouco de cuidado com a velocidade na qual envia dados e também as consultas podem levar algum tempo.
Webwurst # 9/19

Respostas:

1

Você precisa de mais hardware

Seu raspi pode estar (consideravelmente) com pouca energia para sua carga de trabalho.

Não sou especialista em Elasticstack, mas o configurei em vários cenários de teste e para uso em produção limitada / leve. Na minha experiência, enquanto a configuração inicial requer relativamente poucos recursos, à medida que o número de índices aumenta, o sistema gera significativamente mais IO de disco e carga de CPU.

Isso é especialmente aparente após uma reinicialização enquanto o sistema está recuperando os shards. Se seus índices não forem muito grandes, considere os intervalos mensais em vez dos intervalos diários padrão, o que parece ajudar nesse sentido.

Jens Ehrich
fonte