1. 自动重启配置

从logstash2.3开始,当配置文件发生更改时,可以设置自动检测和重载配置文件而不用重启logstash。设置自动重载的命令如下:

1
# bin/logstash –f configFile.conf --config.reload.automatic

注意:

  • 当运行命令时(logstash指定-e运行)–config.reload.automatic参数不起作用。
  • 默认是每个3秒检测一次配置文件是否发生变化,当然检测间隔也可以自己设置,格式如下:
1
# bin/logstash –f configFile.conf --config.reload.automatic <interval>

如果已经运行了没有提供自动重启的logstash,可以发送一个挂起命令给logstash重新加载配置文件:

1
kill -1 <pid>

2. 工作原理

当检测到配置文件变化则通过停止所有输入来停止当前pipeline。然后用新的配置尝试创建一个新的pipeline。如果检查配置文件语法正确并且所有的输入和输出可以初始化,则使用新的pipeline替换当前的pipeline。如果检查失败,使用旧的继续工作。注意在重载过程中,jvm没有重启。

3. 注意事项

  • stdin输入插件不支持自动重启。
  • syslog作为输入源,当重载配置文件时会崩溃。

具体见官网:Reloading the Config File