2014-07-08 69 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

相關問題