Redis使用订阅模式,将指定channel频道收到的信息推送给logstash
logstash使用Input为redis插件,指定单机Redis服务器,指定channel频道接收来自redis的消息。
logstash使用Output为ES写入数据。
Redis安装部署
Linux 上Redis安装单机版server
安装步骤:
下载redis-4.0.9.tar.gz
移动到/opt路径下,解压,编译
mv redis-4.0.9.tar.gz /opt
cd /opt
tar -zxvf redis-4.0.9.tar.gz
cd redis-4.0.9
make
修改配置
cp redis.conf redis.conf.bk
vi redis.conf 修改其中:
bind 改为bind 0.0.0.0 ;
daemonize 改为 no
启动redis服务
./redis-server redis.conf
redis客户端登录
./redis-client
结束安装。
logstash安装部署
linux上安装logstash-7.9.3.rpm
rpm -ivh logstash-7.9.3.rpm
修改配置/etc/logstash/conf.d/logstash.conf
input {
redis {
data_type => "list"
key => "energy-message"
host => "10.16.9.138"
port => "6379"
db => "0"
codec => "plain"
}
redis {
data_type => "channel"
key => "energy-subscribe"
host => "10.16.9.138"
port => "6379"
db => "0"
codec => "plain"
}
}
output {
file{
path => "/var/log/logstash/logstash-%{+YYYY.MM.dd}-file.txt"
}
elasticsearch {
hosts => ["10.16.9.138:9200"]
index => "energy-message-%{+YYYY.MM.dd}"
}
}
名词解释:
redis.data_type | 监控数据的接受方式。枚举类型:list,channel,pattern_channel |
redis.db | 数据库编号 |
redis.key | redis 订阅通道名称或者 list 的 key 名称 |
redis.password | redis访问密码 |
redis.host | redis服务IP |
redis.port | redis端口号 |
output.file | logstash 从input读入并解析后的文件会被保存在指定文件中 |
output.elasticsearch | logstash 从input读入并解析后的文件会被保存在ES中,指定分区为index的值 |
3. 测试验证
测试一:
redis中配置lpush key value
127.0.0.1:6379> lpush energy-message 1kkjjhh
(integer) 1
127.0.0.1:6379> lrange energy-message 0 -1
(empty list or set)
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> lpush energy-message 1kkjjhh
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> lrange energy-message 0 -1
(empty list or set)
可见,在设置结束后,再去读取,数据已经消失,表明logstash在读取了redis的数据后,会将其从redis上删除。
Logstash日志验证:(tags报错原因是input中设置了json类型,与redis读取数据不匹配导致)

测试二:
redis-cli上

redis-cli上订阅energy-subscribe频道

Logstash日志验证:

最后一条没有了tags和@version,是因为codec=plain 表示传输的是文本不加限制。
ES上查看数据已经入库:
