大佬教程收集整理的这篇文章主要介绍了linux – 从bash脚本启动时Logstash shutdown停止,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
[2018-03-22T08:59:53,833][INFO ][logstash.runner ] StarTing Logstash {"logstash.version"=>"6.2.3"} [2018-03-22T08:59:54,211][INFO ][logstash.agent ] successfully started Logstash API endpoint {:port=>9600} [2018-03-22T08:59:57,970][INFO ][logstash.pipeline ] StarTing pipeline {:pipeline_id=>"main","pipeline.workers"=>2,"pipeline.batch.size"=>125,"pipeline.batch.delay"=>50} [2018-03-22T08:59:58,116][INFO ][logstash.pipeline ] Pipeline started succesfully {:pipeline_id=>"main",:thread=>"#<Thread:0xf6851b3 run>"} [2018-03-22T08:59:58,246][INFO ][logstash.agent ] Pipelines running {:count=>1,:pipelines=>["main"]} [2018-03-22T08:59:58,976][INFO ][logstash.outputs.file ] opening file {:path=>"/home/kevin/otrs_customer_user"} [2018-03-22T09:00:06,471][WARN ][logstash.shutdownwatcher ] {"inflight_count"=>0,"stalling_thread_info"=>{["LogStash::Filters::CSV",{"separator"=>";","columns"=>["IOT","OID","SUM","XID","change_by","change_time","city","company","company2","create_by","create_time","customer_id","email","fax","first_name","id","inst_city","inst_first_name","inst_last_name","inst_street","inst_zip","last_name","login","mobile","phone","phone2","street","title","valid_id","varioCustomerId","zip"],"id"=>"f1c74146d6672ca71f489aac1b4c2a332ae515996657981e1ef44b441a7420c8"}]=>[{"thread_id"=>23,"name"=>nil,"current_call"=>"[...]/logstash-core/lib/logstash/util/wrapped_synchronous_queue.rb:90:in `read_batch'"}]}} [2018-03-22T09:00:06,484][ERROR][logstash.shutdownwatcher ] The shutdown process appears to be stalled due to busy or blocked plugins. check the logs for more information. [2018-03-22T09:00:11,438][WARN ][logstash.shutdownwatcher ] {"inflight_count"=>0,"current_call"=>"[...]/logstash-core/lib/logstash/util/wrapped_synchronous_queue.rb:90:in `read_batch'"}]}}
当我用bash logstash -f xyz.config<手动运行相同的文件和相同的配置时myfile.config它可以根据需要工作,并且进程得到正确终止.在bash脚本中我基本上使用的是确切的命令,我遇到了上面的错误. 我也注意到问题似乎是随机的,而不是每次都在同一个文件和配置上. 我的配置包括一个stdin输入一个csv过滤器和用于测试json格式的输出到一个文件(也删除了stdout {}). 有没有人知道为什么我的进程在脚本执行期间停止?或者如果没有,是否有可能告诉logstash在停止时关闭? 示例配置:
input { stdin { id => "${LS_FILE}" } } filter { mutate { add_field => { "foo_type" => "${foo_TYPE}" } add_field => { "[@Metadata][LS_FILE]" => "${LS_FILE}"} } if [@Metadata][LS_FILE] == "contacts.csv" { csv { separator => ";" columns => [ "IOT","kundenid" ] } if [kundenid]{ mutate { update => { "kundenid" => "n-%{kundeniD}" } } } } } output { if [@Metadata][LS_FILE] == "contacts.csv" { file{ path => "~/contacts_file" codec => json_lines } } }
示例脚本:
LOGSTASH="/customer/app/logstash-6.2.3/bin/logstash" for file in $(find $TARGETPATH -name *.csv) # Loop each file in given path do if [[ $file = *"foo"* ]]; then echo "ImporTing $file" export LS_FILE=$(basename $filE) bash $LOGSTASH -f $CFG_FILE < $file # StarTing logstash echo "file $file imported." fi done
我在bash脚本中导出环境变量,并将它们设置为logstash配置中的元数据,以便为不同的输入文件执行一些条件.文件中JSON的输出仅用于测试目的.
>它停止所有输入,过滤和输出插件
>处理所有飞行中的事件
>终止Logstash进程
并且有各种因素使得关机过程非常难以预测,例如:
>输入插件以慢速接收数据.
>慢速过滤器,如执行sleep(10000)的Ruby过滤器或执行非常繁重查询的Elasticsearch过滤器.
>断开连接的输出插件,等待重新连接以刷新飞行中事件.
您可以在启动logstash时使用–pipeline.unsafe_shutdown标志,以便在停止关闭时强制终止进程.如果未启用–pipeline.unsafe_shutdown,则Logstash会继续运行并定期生成这些报告,这就是为什么问题在您的情况下似乎是随机的.
请记住,不安全的关闭,强制执行Logstash进程或崩溃
由于任何其他原因,Logstash进程可能会导致数据丢失
(除非您已启用Logstash以使用persistent queues).
以上是大佬教程为你收集整理的linux – 从bash脚本启动时Logstash shutdown停止全部内容,希望文章能够帮你解决linux – 从bash脚本启动时Logstash shutdown停止所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。