0、引言
Logstash.input可以支持Redis的三種data_type,分別是list,channel,pattern_channel;
數據流轉 : Redis >> Logstash >> Elasticsearch
本次主要講解Logstash從Redis-list讀取數據,存入ES。
channel類型實踐後會更新
1、數據類型
Logstash對Redis不同的數據類型會導致實際採用不同的 Redis 命令操作:
數據類型 | 對應操作 | 類型理解 |
---|---|---|
list | BLPOP | 隊列 |
channel | SUBSCRIBE | 發佈訂閱的某個特定的頻道 |
pattern_channel | PSUBSCRIBE | 發佈訂閱某組頻道 |
2、配置參數
添加配置文件,重啓Logstash並引入。
vim test-redis.conf #配置名字自定義就可以,以.conf 結尾
input {
redis {
host => "xxxx" #redis地址
port => "6379" #redis端口號
password => '' #如果有安全認證,此項爲密碼
db => "0" #redis數據庫 默認0
data_type => "list" #redis插件工作方式
key => "test1" #redis的鍵值
}
}
output {
elasticsearch {
hosts => ["xxxx:9200"]
index => "redis-test1-%{+YYYY.MM.dd}"
}
}
3、其他的參數
-
db
Redis裏面有數據庫的概念,一般是16個,默認登錄後是0,可以通過命令選擇。如果應用系統選擇使用了不同的數據庫,那麼可以通過配置這個參數從指定的數據庫中讀取信息。 -
key
Redis中的數據都是通過鍵值來索引的,不管是字符串還是列表,所以這個key相當於數據庫中的表。
如果是list或者channel模式,key都是指定的鍵值;而如果是pattern_channel,那麼key可以通過glob通配的方式來指定。 -
password
有的Redis爲了安全,是需要進行驗證的。只有設置了password,才能正確的讀取信息。相反,如果redis沒有設置密碼,而logstash中配置了密碼,也會報錯!
ERR Client sent AUTH, but no password is set
解決方案 : 就是將配置文件中的password註釋掉。
4、測試
因爲對於list類型,Logstash的操作是BLPOP,所以我們向隊列插入數據時使用:
RPUSH test1 “hello world”