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,那么最后打印出的信息與隊列中的信息順序是不一樣的。
下面給出了2w數據量,logstash在不同線程下的讀取速度:
關於其他的參數
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】運行結果
【channel】運行結果
【pattern_channel】運行結果
可以看到channel與pattern_channel區別就在於一個是監聽特定的鍵值,一個是監聽某一組鍵值。