Logstash 如何自动重载(Auto-Reload)配置?
Logstash 启动加 --config.reload.automatic 即开启配置热重载,--config.reload.interval 控制检查间隔(默认 3 秒)。改完 conf 文件无需重启进程。本文给出用法与失败回滚行为说明。
启动时加 --config.reload.automatic 即可:Logstash 默认每 3 秒检查一次配置文件变化,发现修改自动平滑重载管道——不丢数据、不需要重启进程。
用法
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 期间数据会丢吗? 不会——新管道就绪前旧管道继续运行(需要持久化队列配合更稳)。
Q:只想手动触发重载? 不发参数的情况下给进程发 SIGHUP 信号(旧版本支持)。