2014-07-08 70 views
1

我已阅读关于集中式日志记录的不同文章。 他们大多数似乎使用Redis作为Brocker和logstash托运人来写信给它。Logstash:直接发送日志到redis broker

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

既然logstash是用Java编写的,那么甚至有可能使用它的Redis输出?

+1

你能改正这个问题吗?您询问是否有可能在没有文件的情况下写入Redis,但随后提及使用logstash读取某个文件。这没有意义。 – Eli

+0

问题是对的。他询问是否可以将日志发送到redis,而不是使用logstash读取日志文件,然后发送到redis。 –

回答

2

首先,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索引直接从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" 
} 

并且也可以参照here有关如何实现Redis的-CLI。例如,在JAVA中使用jredis作为客户端,并将日志直接发送到redis中的logstash列表。

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

+0

我的Java不好!感谢您的回答:) –

+0

它使用JVM运行的JRuby编写 – user3767296

相关问题