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”