【问题标题】:Logstash : Directly send logs to redis brokerLogstash : 直接将日志发送到 redis broker
【发布时间】:2014-08-29 10:34:12
【问题描述】:

我已阅读有关集中式日志记录的不同文章。 他们中的大多数似乎使用 Redis 作为 Brocker 和 logstash shipper 来写入。

是否可以从 Java Web 应用程序直接写入 Redis? 无需登录到文件,然后让 logstash 读取文件并将事件发送到 Redis。 还是被认为是不好的做法?

由于logstash是用Java编写的,也许还有一种方法可以使用它的Redis输出?

【问题讨论】:

  • 你能纠正这个问题吗?你问是否可以在没有文件的情况下写入 Redis,然后提到让 logstash 读取一些文件。这没有意义。
  • 这个问题是对的。他在问是否可以将日志发送到redis而不是使用logstash读取日志文件然后发送到redis。

标签: java redis logstash


【解决方案1】:

首先,logstash 插件是用 Ruby 编写的,而不是 Java!

当然,你可以直接将日志发送到redis!

例如,这是我的 logstash 索引器配置。我的redis data_type 是list,key 是logstash

input {
    redis {
            port => 5566
            data_type => "list"
            key => "logstash"
    }
}

output {
    stdout {
        codec => rubydebug
    }
}

我在5566端口启动了一个redis服务器,然后logstash indexer直接从redis读取日志。

当我使用redis-cli 将日志放入logstash 列表时,

redis 127.0.0.1:5566> lpush logstash "abc"

Logstash 可以从 redis 读取日志并创建日志事件。 logstash 的输出是:

{
   "message" => "abc",
  "@version" => "1",
"@timestamp" => "2014-07-09T01:16:33.566Z"
}

另外,redis-cli的实现方法可以参考here。例如,在 JAVA 中使用 jredis 作为客户端,并将日志直接发送到 redis 中的 logstash 列表。

玩得开心并尝试一下。如果您有任何问题,请随时询问! :)

【讨论】:

  • 我对 java 不好!谢谢你的回答:)
  • 它是用JRuby编写的,运行在JVM上
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-15
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多