LogStash::Inputs::Redis 支持三種 data_type(實際上是redis_type)诫给,不同的數據類型會導致實際采用不同的 Redis 命令操作:
list => BLPOP
channel => SUBSCRIBE
pattern_channel => PSUBSCRIBE
其中l(wèi)ist居灯,相當于隊列;channel相當于發(fā)布訂閱的某個特定的頻道镀迂;pattern_channel相當于發(fā)布訂閱某組頻道丁溅。
Redis發(fā)布訂閱中使用到的命令就只有三個:PUBLISH,SUBSCRIBE,PSUBSCRIBE
PUBLISH 用于發(fā)布消息
SUBSCRIBE 也叫頻道訂閱,用于訂閱某一特定的頻道
PSUBSCRIBE 也叫模式訂閱探遵,用于訂閱某一組頻道窟赏,使用glob的方式措译,比如xxx-*可以匹配xxx-a,xxx-b,xxx-ddd等等
pattern_channel模式之redis_pattern_channel.conf 配置文件:
redis_pattern_channel.conf 配置文件:
input {
redis {
data_type => "pattern_channel" #logstash redis插件工作方式
key => "redis_pattern_channel-*" #監(jiān)聽的鍵值
host => "localhost" #redis地址
port => 6379 #redis端口號
threads => 5 #啟用線程數量
}
}
output {
stdout { codec => rubydebug }
}
打開2個控制臺同時執(zhí)行:
/usr/share/logstash/bin/logstash -f /usr/share/logstash/config/conf.d/redis_pattern_channel.conf
然后在redis客戶端輸入:PUBLISH redis_pattern_channel-jimmy "hello jimmy"
(JSON格式測試數據:PUBLISH redis_pattern_channel-json '{"message":"hello world","@version":"1","@timestamp":"2014-08-08T16:34:21.865Z","host":"raochenlindeMacBook-Air.local","key1":"value1"}')
每個控制臺都會顯示如下
list模式之redis_list.conf 配置文件:
input {
redis {
data_type => "list"
key => "logstash-list"
host => "localhost"
port => 6379
batch_count => 1
threads => 5
}
}
output {
stdout { codec => rubydebug }
}
打開2個控制臺同時執(zhí)行:
/usr/share/logstash/bin/logstash -f /usr/share/logstash/config/conf.d/redis_list.conf
然后在redis客戶端輸入:RPUSH logstash-list "hello world"
只有一個控制臺會顯示如下