LogStash的调试

a min to read

在用LogStash做日志处理的时候,几乎都需要进行许多的调试,主要是针对Filter。而LogStash是运行在Jvm上,意味着每一次的启动都需要耗费大量的时间,许多教程文章都说推荐使用stdin/stdout,从 command line 输入,然后将输出打印到控制台来输出。LogStash也提供了配置文件重载功能,期望场景是:从命令行输入,然后观察输出是否符合预期,如不符合则修改DSL的配置,然后再重复前步骤。但问题是,stdin方式不支持配置重载。

于是,我抛弃了stdin的调试方式,直接使用beat或者file:

然后手工Mock数据:

echo "log" >> test.log

然后开启自动重载和间隔(启动参数或者配置文件)

--config.reload.automatic
--config.reload.interval <interval>

当自动重载触发失败时,可以发送信号到进程手工触发:

kill -SIGHUP <pid>

当然了,grok的正则调试还是可以先采用在线工具(虽然仍然有些反应“缓慢”):

Refs