Другими словами, как мне убедиться, что Logstash умирает, когда конвейер не запускается?
Я использую Logstash 7.1.1 с 5 конвейерами, вызывая друг друга, используя связь между конвейерами . Когда при запуске одного из конвейеров возникает ошибка (например, синтаксическая ошибка), эта ошибка просто регистрируется, и ее легко пропустить.
Упрощение задачи на 2 конвейера:
[2019-07-04T17:48:47,887][INFO ][logstash.runner ] Starting Logstash {"logstash.version"=>"7.1.1"}
[2019-07-04T17:48:56,393][ERROR][logstash.plugins.registry] Tried to load a plugin's code, but failed. {:exception=>#<LoadError: no such file to load -- logstash/filters/BADFILTER>, :path=>"logstash/filters/BADFILTER", :type=>"filter", :name=>"BADFILTER"}
[2019-07-04T17:48:56,423][ERROR][logstash.agent ] Failed to execute action {:action=>LogStash::PipelineAction::Create/pipeline_id:myid, :exception=>"LogStash::PluginLoadingError", :message=>"Couldn't find any filter plugin named 'BADFILTER'. Are you sure this is correct? Trying to load the BADFILTER filter plugin resulted in this error: no such file to load -- logstash/filters/BADFILTER", :backtrace=>["/opt/logstash/logstash-core/lib/logstash/plugins/registry.rb:211:in `lookup_pipeline_plugin'", "/opt/logstash/logstash-core/lib/logstash/plugin.rb:137:in `lookup'", "org/logstash/plugins/PluginFactoryExt.java:200:in `plugin'", "org/logstash/execution/JavaBasePipelineExt.java:50:in `initialize'", "/opt/logstash/logstash-core/lib/logstash/java_pipeline.rb:23:in `initialize'", "/opt/logstash/logstash-core/lib/logstash/pipeline_action/create.rb:36:in `execute'", "/opt/logstash/logstash-core/lib/logstash/agent.rb:325:in `block in converge_state'"]}
[2019-07-04T17:48:58,313][INFO ][logstash.javapipeline ] Starting pipeline {:pipeline_id=>"myid2", "pipeline.workers"=>8, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>50, "pipeline.max_inflight"=>1000, :thread=>"#<Thread:0x357de3fe@/opt/logstash/logstash-core/lib/logstash/pipeline_action/create.rb:37 run>"}
[2019-07-04T17:48:58,412][INFO ][logstash.javapipeline ] Pipeline started {"pipeline.id"=>"myid2"}
[2019-07-04T17:49:00,440][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
В этом примере не удалось запустить конвейер «myid», так как я использовал несуществующий плагин BADFILTER, и «myid2» запустился нормально. Затем процесс продолжает работать и не дает сбоя.
Как я могу настроить Logstash на смерть, если он не может запустить конвейер? Дополнительный вопрос, как я могу заставить Logstash умереть, если после успешного запуска произошла ошибка (например, потеря связи с упругой)?