【问题标题】:How to use redis inside logstash filter?如何在logstash过滤器中使用redis?
【发布时间】:2019-12-12 16:25:10
【问题描述】:

我正在将我的 ELK+Redis 从一个非常旧的版本升级到最新版本。

ES 1.6 to 7.4
LS 1.4 to 7.4
Redis 2.8 to 5.0

我将所有东西都安装在新机器上。除了一件事,一切都很顺利:logstash-filter-redis 插件

这是我的logstash conf文件

input
  {
    redis {
      host
      port => 6380
      data_type
      key
    }
  }
filter {
  grok {
    match => [ "message", "" ]
  }
  redis {
    host => ""
    port => 6379
    key => ""
    }
output {
  elasticsearch {
    host => ""
    index => ""
  }

这里,输入 { } 中的第一个 redis:6380 用于获取日志(作为 logstash 输入源)

在过滤器 { } 中调用第二个 redis:6379 以获取与这些日志关联的数据。

我在https://www.elastic.co/guide/en/logstash/current/filter-plugins.html 看不到任何logstash-filter-redis 插件

有人可以帮我吗?

谢谢

【问题讨论】:

  • logstash-filter-redis 没有与logstash 绑定,而且开发者似乎多年没有更新它,您可以尝试安装它,但它可能不适用于较新的版本。

标签: ruby plugins redis logstash elk


【解决方案1】:

Logstash 中确实不支持 Redis 过滤器。您可以找到两个社区过滤器 by synlaymeulop,但我不确定它们的支持和维护情况如何。

我最近刚刚学到了另一种通过ruby 过滤器访问 Redis 来丰富 Redis 数据的方法,如下所示:

filter {
   ...
   ruby {
      init => 'require "redis"; $rc = Redis.new(path: "/var/run/redis/redis.sock", db: 0)'
      code => 'event.set("enriched_field", $rc.get(event.get("key_field")))'
   }
}

【讨论】:

  • 感谢分享这个 - 上面建议的方法对我有用 - 一些额外的东西 - 你需要先添加 redis gem (stackoverflow.com/a/54224889/150878),如果你有一个远程服务器,使用这个: $rc = Redis.new(host: "", port: )
  • 谢谢@Val。它肯定有帮助,我们用它来达到目的。没有其他过滤器起作用。
  • 太棒了,很高兴它有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-27
  • 2016-11-08
相关资源
最近更新 更多