我有一个正在运行的实时系统,它使用一个redis DB和一个旧的ELK堆栈。我正在创建一个新版本。我想要的是使用我的新Logstash的输入部分从旧的redis DB读取数据,但在我的测试中,当我这样做时,我似乎会耗尽它的数据。我不想以任何方式修改当前的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读取,并在我上线之前验证管道的行为与旧管道相同,但如果我删除这些数据而不是复制它,我将严重扰乱监控团队!
如何防止我的新logstash从redis中耗尽日志?
发布于 2018-09-10 23:16:16
我没有回答这个问题就找到了一个解决方案。我用的是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读取数据(通常是位通过)。数据库向副本服务器发送了LPOP,并删除了数据。这并不是太糟糕,因为我可以停止旧系统上的logstash,让新系统填满它的ES数据库,然后重新启用旧的logstash,这将很快赶上。然后,他们有了相同时期的相同数据集,我可以进行比较。
我还没有想出一种同时运行这两个系统的方法,但这对我的目的来说已经足够好了,因为它不会改变旧系统的配置,只是中断它一段时间。
https://stackoverflow.com/questions/52221894
复制相似问题