logstash中怎么删除redis中过期数据?
想请教一下搭建过logstash朋友们。最近在学习logstash,参考了《logstash book》这本书和网上别人的文档,发现绝大多数使用的是input file -> redis -> output elasticsearch这样的一种架构,redis和elasticsearch在中央日志服务器中。因此我也是这么搭建的。
目前我有两个问题想请教:
问题1: 如何清理redis中过期数据?output redis的配置段中,指定一个key,类型list,最终会将所有的日志推送至redis中一个key,这样的话无法直接用TTL功能清理掉过期的数据啊。怎么才能清理掉过期的日志数据呢?
问题2: 中央日志服务器和产品服务器不在一个局域网中,而redis的认证功能又比较弱,为了防止redis直接暴露在互联网上,我的做法是让redis直接监听127.0.0.1,产品服务器通过ssh tunnel(ssh tunnel@logstash -L 127.0.0.1:6379:127.0.0.1:6379 -f)的方式连接至日志服务器的。但总感觉这种方式批量部署并不方便,最主要的似乎觉得有点笨,想请教下有没有更好的方案?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
所以我目前的方案只是做了ssh隧道,将中央服务器的redis端口映射到本地。不过这样的话部署不方便,所以看看有没有其他更好的方案
哦,好主意,把数据直接发送到tcp端口上,这样应该可以不存储了
回复
即使是用的redis方案,redis也不是用于存储的,在这里redis是被当做消息服务器使用的被服务端取走后redis里面就没了。
回复
奇怪的是我的output设置tcp之后,在input tcp这里得不到event。我尝试curl 127.0.0.1:8888是有消息的,而且netstat看到的127.0.0.1:8888也是establish,但是就是没有消息推上来
回复
好吧,果然关键时刻还得靠google: https://github.com/elasticsearch/logstash/issues/1650 搜到了这个issue,设置codec之后,it works
tcp方式传输:
http://www.nightbluefruit.com/blog/2014/03/managing-logstash-with-the-redis-client/
google到一个不错的方案,按照日期做key的关键字,然后应该可以加上TTL了
再顶一下,真心求解
自己顶一下