天天看點

[logstash-input-redis]插件使用詳解

Redis插件參數配置詳解

最小化配置

input {
    redis {
        data_type => "list" #logstash redis插件工作方式
        key => "logstash-test-list" #監聽的鍵值
        host => "127.0.0.1" #redis位址
        port => 6379 #redis端口号
    }
}
output {
 stdout{}
}
      

詳細配置

input {
    redis {
        batch_count => 1 #EVAL指令傳回的事件數目
        data_type => "list" #logstash redis插件工作方式
        key => "logstash-test-list" #監聽的鍵值
        host => "127.0.0.1" #redis位址
        port => 6379 #redis端口号
        password => "123qwe" #如果有安全認證,此項為密碼
        db => 0 #redis資料庫的編号
        threads => 1 #啟用線程數量
    }
}
output {
 stdout{}
}
      

threads參數測試

單個logstash啟動後,如果配置多個threads,那麼最後列印出的資訊與隊列中的資訊順序是不一樣的。

[logstash-input-redis]插件使用詳解

下面給出了2w資料量,logstash在不同線程下的讀取速度:

[logstash-input-redis]插件使用詳解

關于其他的參數

db

Redis裡面有資料庫的概念,一般是16個,預設登入後是0,可以通過指令選擇。如果應用系統選擇使用了不同的資料庫,那麼可以通過配置這個參數從指定的資料庫中讀取資訊。

key

Redis中的資料都是通過鍵值來索引的,不管是字元串還是清單,是以這個key相當于資料庫中的表。

如果是list或者channel模式,key都是指定的鍵值;而如果是pattern_channel,那麼key可以通過glob通配的方式來指定。

password

有的Redis為了安全,是需要進行驗證的。隻有設定了password,才能正确的讀取資訊。相反,如果redis沒有設定密碼,而logstash中配置了密碼,也會報錯!

batch_count

這個屬性設定了伺服器端傳回的事件數目,比如設定了5條,那麼每次請求最多會直接擷取5條日志傳回。

data_type logstash工作的類型

logstash中的redis插件,指定了三種方式來讀取redis隊列中的資訊。

  • list=>BLPOP
  • channel=>SUBSCRIBE
  • pattern_channel=>PSUBSCRIBE

其中list,相當于隊列;channel相當于釋出訂閱的某個特定的頻道;pattern_channel相當于釋出訂閱某組頻道。

【list】運作結果

[logstash-input-redis]插件使用詳解

【channel】運作結果

[logstash-input-redis]插件使用詳解

【pattern_channel】運作結果

[logstash-input-redis]插件使用詳解

可以看到channel與pattern_channel差別就在于一個是監聽特定的鍵值,一個是監聽某一組鍵值。