logstash中怎么删除redis中过期数据?

发布于 2021-11-24 08:22:25 字数 558 浏览 824 评论 9

想请教一下搭建过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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

眼眸 2021-11-30 02:51:42

所以我目前的方案只是做了ssh隧道,将中央服务器的redis端口映射到本地。不过这样的话部署不方便,所以看看有没有其他更好的方案

做个少女永远怀春 2021-11-30 02:44:13

哦,好主意,把数据直接发送到tcp端口上,这样应该可以不存储了

谁的新欢旧爱 2021-11-30 02:30:56

回复
即使是用的redis方案,redis也不是用于存储的,在这里redis是被当做消息服务器使用的被服务端取走后redis里面就没了。

乞讨 2021-11-29 22:35:51

回复
奇怪的是我的output设置tcp之后,在input tcp这里得不到event。我尝试curl 127.0.0.1:8888是有消息的,而且netstat看到的127.0.0.1:8888也是establish,但是就是没有消息推上来

少女情怀诗 2021-11-29 10:38:17

回复
好吧,果然关键时刻还得靠google: https://github.com/elasticsearch/logstash/issues/1650 搜到了这个issue,设置codec之后,it works

奢望 2021-11-29 07:42:43

tcp方式传输:

input {
    tcp {
        port => 8888
        mode => "server"
        ssl_enable => false
    }
}

巡山小妖精 2021-11-28 06:40:17

http://www.nightbluefruit.com/blog/2014/03/managing-logstash-with-the-redis-client/

google到一个不错的方案,按照日期做key的关键字,然后应该可以加上TTL了

梦里兽 2021-11-28 00:21:10

再顶一下,真心求解

感情旳空白 2021-11-27 06:15:37

自己顶一下

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文