停止 Logstash 的干净方法
Clean way to stop Logstash
假设我有一个 Logstash 实例 运行,但想完全停止它,例如更改它的配置。
如何停止 Logstash 实例,同时确保它完成向 Elasticsearch 的批量发送?我不想在停止 logstash 时丢失任何日志。
Logstash 1.5 在关闭之前刷新管道以响应 SIGTERM 信号,因此您应该能够使用 service logstash stop
、init.d 脚本或任何它关闭它你平时用的。
使用 Logstash 1.4.x SIGTERM 信号会突然关闭 Logstash,不允许管道刷新所有传输中的消息,但您可以发送 SIGINT 来强制刷新。然而,一些插件(如 redis 输入插件)不能很好地处理这个问题并无限期地挂起。
使用 Logstash 2.3:
Logstash keeps all events in main memory during processing. Logstash responds to a SIGTERM by attempting to halt inputs and waiting for pending events to finish processing before shutting down.
来源:https://www.elastic.co/guide/en/logstash/2.3/pipeline.html
kill -TERM {logstash_pid}
也会发出一个SIGTERM
信号,比如service logstash stop
。 Logstash 7.15
kill -SIGHUP {logstash_pid}
重新加载配置文件并重新启动管道。
如果您 运行 logstash 使用 docker,命令 docker stop <logstash_container>
发送一个 SIGTERM
信号。如果您再次启动 docker 变量,例如 :sql_last_value
returns 到“1970-01-01”
docker restart <logstash_container>
发送一个 SIGHUP
因此重新加载管道保持变量的 provious 值很有用,例如 :sql_last_value
.
假设我有一个 Logstash 实例 运行,但想完全停止它,例如更改它的配置。
如何停止 Logstash 实例,同时确保它完成向 Elasticsearch 的批量发送?我不想在停止 logstash 时丢失任何日志。
Logstash 1.5 在关闭之前刷新管道以响应 SIGTERM 信号,因此您应该能够使用 service logstash stop
、init.d 脚本或任何它关闭它你平时用的。
使用 Logstash 1.4.x SIGTERM 信号会突然关闭 Logstash,不允许管道刷新所有传输中的消息,但您可以发送 SIGINT 来强制刷新。然而,一些插件(如 redis 输入插件)不能很好地处理这个问题并无限期地挂起。
使用 Logstash 2.3:
Logstash keeps all events in main memory during processing. Logstash responds to a SIGTERM by attempting to halt inputs and waiting for pending events to finish processing before shutting down.
来源:https://www.elastic.co/guide/en/logstash/2.3/pipeline.html
kill -TERM {logstash_pid}
也会发出一个SIGTERM
信号,比如service logstash stop
。 Logstash 7.15
kill -SIGHUP {logstash_pid}
重新加载配置文件并重新启动管道。
如果您 运行 logstash 使用 docker,命令 docker stop <logstash_container>
发送一个 SIGTERM
信号。如果您再次启动 docker 变量,例如 :sql_last_value
returns 到“1970-01-01”
docker restart <logstash_container>
发送一个 SIGHUP
因此重新加载管道保持变量的 provious 值很有用,例如 :sql_last_value
.