重新加载配置文件

编辑

您可以设置 Logstash 来自动检测和重新加载配置更改。

要启用自动配置重新加载,请使用指定的 --config.reload.automatic (或 -r) 命令行选项启动 Logstash。例如

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

当您指定 -e 标志从命令行传入配置设置时,--config.reload.automatic 选项不可用。

默认情况下,Logstash 每 3 秒检查一次配置更改。要更改此间隔,请使用 --config.reload.interval <interval> 选项,其中 interval 指定 Logstash 检查配置文件更改的频率(以秒为单位)。

请注意,单位限定符 (s) 是必需的。

强制重新加载配置文件

编辑

如果 Logstash 已经在运行但未启用自动重新加载,您可以强制 Logstash 重新加载配置文件并重新启动管道。通过向运行 Logstash 的进程发送 SIGHUP (挂起信号) 来执行此操作。例如

kill -SIGHUP 14175

其中 14175 是运行 Logstash 的进程 ID。

此功能在 Windows 操作系统上不受支持。

自动配置重新加载的工作原理

编辑

当 Logstash 检测到配置文件中的更改时,它会停止当前管道(通过停止所有输入),并尝试创建一个使用更新配置的新管道。在验证新配置的语法后,Logstash 会验证是否可以初始化所有输入和输出(例如,所有必需的端口是否打开)。如果检查成功,Logstash 会将现有管道与新管道交换。如果检查失败,则旧管道继续运行,并且错误会传播到控制台。

在自动配置重新加载期间,JVM 不会重新启动。管道的创建和交换都在同一个进程中完成。

grok 模式文件的更改也会重新加载,但仅当配置文件中的更改触发重新加载(或管道重新启动)时才会重新加载。

通常,Logstash 不会监视或监控输入、过滤器或输出使用或引用的任何配置文件。

阻止自动重新加载的插件

编辑

输入和输出插件通常与操作系统资源交互。在某些情况下,这些资源无法在不重新启动的情况下释放。因此,某些插件不能简单地更新,这会阻止管道重新加载。

例如,stdin 输入插件出于这些原因会阻止重新加载。