Logstash 如何自动重载(Auto-Reload)配置?

Logstash 启动加 --config.reload.automatic 即开启配置热重载,--config.reload.interval 控制检查间隔(默认 3 秒)。改完 conf 文件无需重启进程。本文给出用法与失败回滚行为说明。

最佳实践
Logstash 如何自动重载(Auto-Reload)配置?封面

启动时加 --config.reload.automatic 即可:Logstash 默认每 3 秒检查一次配置文件变化,发现修改重建管道而不重启 JVM 进程;会停止旧输入,是否丢失或重放取决于输入确认、缓冲和持久状态。

用法

bin/logstash -f /etc/logstash/conf.d/ \
  --config.reload.automatic \
  --config.reload.interval 5s

或在 logstash.yml 中持久化:

config.reload.automatic: true
config.reload.interval: 5s

重要行为

  • 新配置校验失败(语法错误、插件问题)→ Logstash 继续使用旧配置运行,错误写日志——不会因为坏配置把管道搞挂;
  • 重载是管道级:input 重启意味着文件 input 会从上次记录的位置(sincedb)继续;
  • Systemd 部署同理:把参数写进启动命令或 logstash.yml。

配套建议

生产发布流程:--config.test_and_exit 先校验 → 替换配置 → 自动重载生效 → 观察 Logstash 日志确认 reload 成功。

常见问题(FAQ)

Q:reload 期间数据会丢吗? 不能保证。重载会先停止输入并尝试构建新管道,UDP 等无确认输入可能丢失;文件恢复还取决于 sincedb 与轮转状态,持久队列也不是所有输入零丢失的保证。

Q:只想手动触发重载? 不发参数的情况下给进程发 SIGHUP 信号(支持该机制的平台可用;Windows 不支持这一信号方式)。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台