让我们想象一下我运行了一个Logstash实例,但是想要干净利落地停止它,例如改变它的配置。
如何确保完成将批量发送到Elasticsearch的同时停止Logstash实例?我不想在停止logstash时丢失任何日志。
答案 0 :(得分:9)
Logstash 1.5在关闭之前刷新管道以响应SIGTERM信号,因此您应该能够使用service logstash stop
,init.d脚本或您通常使用的任何内容将其关闭。
使用Logstash 1.4.x时,SIGTERM信号突然关闭Logstash而不允许管道刷新所有正在进行的消息,但您可以发送SIGINT强制刷新。但是,一些插件(如redis输入插件)无法正常处理并无限期挂起。
答案 1 :(得分:0)
使用Logstash 2.3:
Logstash会在处理过程中将所有事件保留在主内存中。 Logstash通过在关闭之前尝试暂停输入并等待挂起事件完成处理来响应SIGTERM。
来源:https://www.elastic.co/guide/en/logstash/2.3/pipeline.html