Por vários motivos, não estou executando o logstash (7.10.1) como um serviço, mas sim invocá-lo sob demanda, em um script bash:
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/my_ls.conf &
echo ""
echo "#########################################################"
read -p "Press enter to continue "
Funciona bem, mas ao terminar de criar um índice elasticsearch com sucesso, sempre pausa com:
[INFO ] [[main]-pipeline-manager] javapipeline - Pipeline Java execution initialization time {"seconds"=>1.3}
[INFO ] [[main]-pipeline-manager] javapipeline - Pipeline started {"pipeline.id"=>"main"}
[INFO ] [[main]<file] observingtail - START, creating Discoverer, Watch with file and sincedb collections
[INFO ] [Agent thread] agent - Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[INFO ] [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600}
Para fazê-lo retornar ao prompt da CLI, preciso executar de outro terminal SSH o seguinte:
pkill -f logstash
Obviamente, isso é inconveniente e estou procurando uma maneira de fazer o prompt do script bash com "Pressione qualquer tecla para sair".
Meu problema é que as instruções após a invocação do logstash (com o &
anexo), incluindo o prompt, read -p "Press enter to continue"
são exibidas antes que o logstash realmente comece a fazer seu trabalho e o script bash nunca saia para o prompt da CLI.
Qual é a maneira correta de fazer o prompt do script bash com "Pressione qualquer tecla para sair" quando o logstash concluir a criação do índice?
Resolvido!
Aqui está como:
Primeiro, é importante reconhecer, como @roaima indicou, que é verdade que
logstash
não foi projetado para construir um índice e depois sair. Ter esse conhecimento ajuda a focar em uma solução alternativa, conforme sugerido pelo @Alex. Além disso, essa limitação conhecida levou a soluções alternativas baseadas no plug-in do logstash, conforme descrito aqui:No entanto, um plug-in requer sua instalação em cada instância do logstash e sua própria instrução em cada arquivo .conf.
Então, encontrei esta resposta da UL , que me deu a solução: