安全关闭Logstash

关闭Logstash
如果你将Logstash作为服务运行,请使用以下命令之一来停止它:

systemd使用:

systemctl stop logstash

upstart使用:

initctl stop logstash

sysv使用:

/etc/init.d/logstash stop

如果你正在POSIX系统的控制台中直接运行Logstash,那么你可以通过向Logstash发送SIGTERM来停止它,例如:

kill -TERM {logstash_pid}

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

在受控关闭期间会发生什么?
当你试图关闭一个正在运行的Logstash实例时,在它可以安全关闭之前,Logstash会执行几个步骤,它必须:

停止所有输入、过滤和输出插件
处理所有运行中的事件
终止Logstash进程
以下条件影响关闭过程:

一个输入插件以缓慢的速度接收数据。
一个缓慢的过滤器,例如执行sleep(10000)的Ruby过滤器或执行非常繁重查询的Elasticsearch过滤器。
一个断开连接的输出插件,正在等待重新连接以刷新运行中的事件。
这些情况使得关闭过程的持续时间和成功不可预测。

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

为使Logstash在中断运行的情况下强制终止,当你启动Logstash时使用–pipeline.unsafe_shutdown。

不安全的关闭、Logstash进程的强制关闭或由于任何其他原因导致的Logstash进程崩溃都可能导致数据丢失(除非你启用了Logstash使用持久队列),尽可能安全的关闭Logstash。
失速检测的例子
在本例中,缓慢的过滤器执行可以防止管道完全关闭,由于Logstash是由–pipeline.unsafe_shutdown标志启动的,因此关闭会导致20个事件的丢失。

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继续定期运行并生成这些报告。

原文链接:https://segmentfault.com/a/1190000016592079

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值