Logstash 在启动时不加载配置管道

Logstash not loading config pipeline on startup

我使用 rpm 方法在 CentOS 7(使用 5.6 版)机器上安装了 ELK(5.6 版 elastic / logstash / kibana)堆栈,并在启动时启用了服务 运行。我在重新启动后验证它是 运行ning,如下所示:

ps aux | grep logstash
logstash   744  4.6  2.2 3381144 363308 ?      SNsl 09:06   0:48 /usr/bin/java -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+DisableExplicitGC -Djava.awt.headless=true -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError -Xmx1g -Xms256m -Xss2048k -Djffi.boot.library.path=/usr/share/logstash/vendor/jruby/lib/jni -Xbootclasspath/a:/usr/share/logstash/vendor/jruby/lib/jruby.jar -classpath : -Djruby.home=/usr/share/logstash/vendor/jruby -Djruby.lib=/usr/share/logstash/vendor/jruby/lib -Djruby.script=jruby -Djruby.shell=/bin/sh org.jruby.Main /usr/share/logstash/lib/bootstrap/environment.rb logstash/runner.rb --path.settings /etc/logstash

我在该进程命令中没有看到任何关于我的管道配置的信息。在我的设置文件中,我有 path.config : /etc/logstash/conf.d/*.conf.

这是从默认 path.config : /etc/logstash/conf.d/ 修改而来的,根据 documentation 做完全相同的事情(我都试过了)。

我拥有的 3 个文件都是有效的,因为我可以使用以下方法手动提取数据: /usr/share/logstash/bin/logstash -f '/etc/logstash/conf.d/{fileA,fileB,fileC}.conf'(或者我可以 运行 他们单独)。

我希望这些摄取管道在我的服务器重新启动时启动,但我相信我的配置设置正确。为了更好地衡量,我什至重新 运行 system-install 脚本。有什么想法吗?

我最终手动更改了 logstash 的 systemd 配置,方法是转到 /etc/systemd/system/logstash.service 并更改:

ExecStart=/usr/share/logstash/bin/logstash "--path.settings" "/etc/logstash"

至:

ExecStart=/usr/share/logstash/bin/logstash "--path.settings" "/etc/logstash" "-f" "/etc/logstash/conf.d/{fileA,fileB,fileC}.conf"

重新启动后,我发现进程确实在加载这些管道。