ELK Stack和Redis。我可以停止清空数据库吗?

时间:2018-09-07 11:44:42

标签: redis elastic-stack

我有一个正在运行的实时系统,该系统使用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的日志?

1 个答案:

答案 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,这很快就会赶上。然后他们在同一时期拥有相同的数据集,我可以进行比较。

目前还没有一种方法可以同时运行这两个系统,但这对我来说已经足够了,因为它不会更改旧系统的配置,只需中断一会儿即可。