我有一个正在运行的实时系统,该系统使用Redis DB和旧的ELK堆栈。我正在创建一个新版本。我想要的是使用新Logstash的输入部分从旧的redis数据库中读取数据,但是在我的测试中,我似乎从中耗尽了数据。无论如何,我都不想修改当前的logstash或实时管道实现(即,将第二个输出添加到实时logstash配置中)。
LIVE Data -> Redis -> Logstash -> ES -> Kibana
| :
Read only compare old with new
| :
V V
New Logstash -> New ES -> New Kibana
我觉得我缺少有关logstash和Redis之间关系的信息。我希望只复制在新的logstash配置中读取的redis,并在使用之前验证管道的行为与旧管道相同,但是如果我删除此数据而不是复制它,我将认真对待破坏了监控团队!
如何防止新的logtash耗尽redis的日志?
答案 0 :(得分:0)
我没有找到答案就找到了解决方案。我使用了redis replica
LIVE Data -> Redis -> Logstash -> ES -> Kibana
| :
Read only compare
| :
V V
Redis Replica -> New Logstash -> New ES -> New Kibana
唯一的问题是,logstash从旧Redis DB中如此快地提取了数据,以至于我无法使用新的logstash读取数据(通常是通过位)。 DB将LPOP发送到副本,并删除了数据。这还算不错,因为我可以在旧系统上停止logstash,让新系统填充它的ES数据库,然后重新启用旧logtash,这很快就会赶上。然后他们在同一时期拥有相同的数据集,我可以进行比较。
目前还没有一种方法可以同时运行这两个系统,但这对我来说已经足够了,因为它不会更改旧系统的配置,只需中断一会儿即可。