从logst2.3开始,我们就可以把Logstash配置成动态监听配置文件修改、再加载配置文件功能。
在启动logstash的时候使用命令行选项--config.reload.automatic(或是-r)就可以将logstash配置成动态更新配置信息。
举个例子:

bin/logstash -f apache.config --config.reload.automatic

注意:当在命令行中使用-e来传入配置信息的时候,–config.reload.automatic就不能起作用。

默认情况下,logstash每个3s会检查一次配置信息是否更改。如果要修改这个间隔时间,可以使用--config.reload.interval <interval>选项。其中,interval规定了logstash检查配置文件的时间间隔,以秒为单位。

如果logstash在没有启用自动加载功能的情况下已经启动的话,可以通过发送SIGHUP(signal hangup)到运行logstash的进程中,迫使logstash重新加载配置文件、并且重新启动管道。

kill -SIGHUP 14175

其中14175为运行logstash的进程ID。

linux下kill的用法除了参考官方文档外,也可以参照该文档:https://www.sogou.com/link?url=hedJjaC291OfPyaFZYFLI4KQWvqt63NBpc2t0hZYVCeNMhcNHpE5BQ…

查找运行logstash的进程ID的方法:
通过命令行方式启动logstash的时候,市级上启动的是java程序。所以用ps -ef|grep logstash找到的进程实际上是java的进程。用ps PID查看时得到的是JAVA进程信息。

logstash的自动加载配置文件是如何工作的?

当logstash发现配置文件发生更改时,它首先停止当前管道的所有输入,然后尝试根据新的配置文件建立新的管道。在验证了新的配置文件的语法后,logstash还会验证所有的输入和输出能否初始化(比如,要求的端口是否已经打开)。如果所有的检查都通过的话,logstash就会切换当前的管道到新的管道。如果其中的一项检查失败的话,原先的管道继续工作,同时在控制台中输出错误信息。

在自动加载配置文件过程中,JVM不会重新启动。管道的生成和切换都是在同一个进程中进行。

只有当配置文件发生变化引发再加载(或是管道重启的时候),grok样式文件的修改才会重新加载。