Redis->logstash->Elasticsearch 订阅模式同步数据,写入到ES中

Redis使用订阅模式,将指定channel频道收到的信息推送给logstash

logstash使用Input为redis插件,指定单机Redis服务器,指定channel频道接收来自redis的消息。

logstash使用Output为ES写入数据。

  1. Redis安装部署

Linux 上Redis安装单机版server

安装步骤:

  1. 下载redis-4.0.9.tar.gz

  1. 移动到/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
  1. 修改配置

cp redis.conf redis.conf.bk
vi redis.conf 修改其中:
bind 改为bind 0.0.0.0 ; 
daemonize 改为 no
  1. 启动redis服务

./redis-server redis.conf
  1. redis客户端登录

./redis-client

结束安装。

  1. 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上查看数据已经入库:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值