Logstash 参考指南(关闭Logstash)

关闭Logstash

若是你将Logstash做为服务运行,请使用如下命令之一来中止它:安全

  • systemd使用:
systemctl stop logstash
  • upstart使用:
initctl stop logstash
  • sysv使用:
/etc/init.d/logstash stop

若是你正在POSIX系统的控制台中直接运行Logstash,那么你能够经过向Logstash发送SIGTERM来中止它,例如:ruby

kill -TERM {logstash_pid}

或者,在控制台中输入Ctrl-Capp

在受控关闭期间会发生什么?

当你试图关闭一个正在运行的Logstash实例时,在它能够安全关闭以前,Logstash会执行几个步骤,它必须:ui

  • 中止全部输入、过滤和输出插件
  • 处理全部运行中的事件
  • 终止Logstash进程

如下条件影响关闭过程:this

  • 一个输入插件以缓慢的速度接收数据。
  • 一个缓慢的过滤器,例如执行sleep(10000)的Ruby过滤器或执行很是繁重查询的Elasticsearch过滤器。
  • 一个断开链接的输出插件,正在等待从新链接以刷新运行中的事件。

这些状况使得关闭过程的持续时间和成功不可预测。插件

Logstash有一个失速检测机制,能够分析关闭期间管道和插件的行为,这种机制按期生成关于内部队列中运行中的事件计数和繁忙工做线程列表的信息。线程

为使Logstash在中断运行的状况下强制终止,当你启动Logstash时使用--pipeline.unsafe_shutdowncode

不安全的关闭、Logstash进程的强制关闭或因为任何其余缘由致使的Logstash进程崩溃均可能致使数据丢失(除非你启用了Logstash使用持久队列),尽量安全的关闭Logstash。

失速检测的例子

在本例中,缓慢的过滤器执行能够防止管道彻底关闭,因为Logstash是由--pipeline.unsafe_shutdown标志启动的,所以关闭会致使20个事件的丢失。orm

bin/logstash -e 'input { generator { } } filter { ruby { code => "sleep 10000" } }
  output { stdout { codec => dots } }' -w 1 --pipeline.unsafe_shutdown
Pipeline main started
^CSIGINT received. Shutting down the agent. {:level=>:warn}
stopping pipeline {:id=>"main", :level=>:warn}
Received shutdown signal, but pipeline is still waiting for in-flight events
to be processed. Sending another ^C will force quit Logstash, but this may cause
data loss. {:level=>:warn}
{"inflight_count"=>125, "stalling_thread_info"=>{["LogStash::Filters::Ruby",
{"code"=>"sleep 10000"}]=>[{"thread_id"=>19, "name"=>"[main]>worker0",
"current_call"=>"(ruby filter code):1:in `sleep'"}]}} {:level=>:warn}
The shutdown process appears to be stalled due to busy or blocked plugins.
Check the logs for more information. {:level=>:error}
{"inflight_count"=>125, "stalling_thread_info"=>{["LogStash::Filters::Ruby",
{"code"=>"sleep 10000"}]=>[{"thread_id"=>19, "name"=>"[main]>worker0",
"current_call"=>"(ruby filter code):1:in `sleep'"}]}} {:level=>:warn}
{"inflight_count"=>125, "stalling_thread_info"=>{["LogStash::Filters::Ruby",
{"code"=>"sleep 10000"}]=>[{"thread_id"=>19, "name"=>"[main]>worker0",
"current_call"=>"(ruby filter code):1:in `sleep'"}]}} {:level=>:warn}
Forcefully quitting logstash.. {:level=>:fatal}

--pipeline.unsafe_shutdown未启用,Logstash继续按期运行并生成这些报告。队列

相关文章
相关标签/搜索