我已閱讀關於集中式日誌記錄的不同文章。 他們大多數似乎使用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。 –