停止关闭检测
关闭正在运行的Logstash实例包括日下步骤:
- 停止所有的输入、过滤和输出插件
- 处理所有的正在被处理的事件
- 终止Logstash进程
如下的条件影响关闭进程:
- 输入插件接收数据非常缓慢
- 非常缓慢的过滤,比如像Ruby过滤器执行sleep(10000)或者一个Elasticsearch过滤器执行非常好使的查询
- 断开连接的输出插件等待重新连接来发送正在处理的事件
这些情况是关闭Logstash的过程是是否成功变的不可预知。
Logstash有一套停止检测机制在其关闭期间来分析管道和插件的行为。这套机制产生关于内部队列正在处理事件的数量和繁忙工作线程的定期信息。
为了使Logstash强制终止这些情形的关闭,可以在启动Logstash的时候使用 --allow-unsafe-shutdown参数(不同版本Logstash可能不一样,我的是使用的logstash 5.1.2 参数为--pipeline.unsafe_shutdown)
关闭检测示例
如下信息,使用一个慢过滤器阻止关闭管道。当启动Logstash时,使用--pipeline.unsafe_shutdown参数,当使用Ctrl+C退出时,正在处理的事件(ruby sleep(10000))会丢失。如果不使用--pipeline.unsafe_shutdown,则会等待事件处理完。
-
使用--pipeline.unsafe_shutdown
image.png
当--pipeline.unsafe_shutdown为false时,Logstash继续定时运行和产生这些报告信息
网友评论