我读过有关集中式日志记录的不同文章。 他们中的大多数似乎都使用Redis作为Brocker和logstash发货人来写信。
是否可以从Java Web应用程序直接写入Redis? 无需登录文件,然后使用logstash读取文件并将事件发送到Redis。 或者它被认为是不好的做法?
由于logstash是用Java编写的,也许甚至有办法使用它的Redis输出?
答案 0 :(得分:2)
首先,logstash插件是用Ruby编写的,而不是Java!
当然,您可以直接将日志发送到redis!
例如,这是我的logstash索引器配置。我的redis data_type为list
,密钥为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列表。
玩得开心并尝试一下。如果您有任何问题,请随时询问! :)