我已阅读关于集中式日志记录的不同文章。 他们大多数似乎使用Redis作为Brocker和logstash托运人来写信给它。Logstash:直接发送日志到redis broker
是否可以从Java Web应用程序直接写入Redis? 不记录到文件,然后使用logstash读取文件并将事件发送到Redis。 或者它被认为是不好的做法?
既然logstash是用Java编写的,那么甚至有可能使用它的Redis输出?
我已阅读关于集中式日志记录的不同文章。 他们大多数似乎使用Redis作为Brocker和logstash托运人来写信给它。Logstash:直接发送日志到redis broker
是否可以从Java Web应用程序直接写入Redis? 不记录到文件,然后使用logstash读取文件并将事件发送到Redis。 或者它被认为是不好的做法?
既然logstash是用Java编写的,那么甚至有可能使用它的Redis输出?
首先,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列表。
玩得开心,试试吧。如果您有任何问题,请随时询问! :)
我的Java不好!感谢您的回答:) –
它使用JVM运行的JRuby编写 – user3767296
你能改正这个问题吗?您询问是否有可能在没有文件的情况下写入Redis,但随后提及使用logstash读取某个文件。这没有意义。 – Eli
问题是对的。他询问是否可以将日志发送到redis,而不是使用logstash读取日志文件,然后发送到redis。 –