Logstash 获取通道类型 Redis 数据

发布时间 2023-09-29 10:20:34作者: 王先生架构

Redis 服务器是 logstash 官方推荐的 broker 选择。Broker 角色也就意味着会同时存在输入和输出俩个插件。这里我们先学习输入插件。

LogStash::Inputs::Redis 支持三种 data_type(实际上是redis_type),不同的数据类型会导致实际采用不同的 Redis 命令操作:

  • list => BLPOP
  • channel => SUBSCRIBE
  • pattern_channel => PSUBSCRIBE

说明:

  容器搭建的ELK,使用队列

步骤:

  1、进入容器通道,复制一份logstash.conf 然后修改名称

logstash@b4779271fd0f:~$ pwd
/usr/share/logstash
logstash@b4779271fd0f:~$ cd pipeline/
logstash@b4779271fd0f:~/pipeline$ ls
logstash.conf  redis_to_es.conf

  2、编写redis通道配置文件

# @Author: Wanghaipeng

# @Date:   2023-03-27 17:03:16

input {
   redis {
    data_type => "list" #["list", "channel", "pattern_channel"]
    host => "XXX" #153 服务器的内网地址
    db => "1"
    port => "6379"
    key => "redis153-to-es-log"
    password => "XXXX"
    timeout => "30"
  }
}


output {
  elasticsearch {
      hosts  => ["http://172.20.0.3:9200"]
      user   => "" #填写ES账号信息
      password => ""
      index => "redis-153-systemlog-%{+YYYY.MM.dd}" # 把日期去掉 这是ES的索引 会造成每天一个索引源
      codec  => "json"
  }
  stdout {
    codec => rubydebug
  }
}

  3、写入数据

  

[root@host-10-10-1-18 ~]# redis-cli
127.0.0.1:6379> auth XXXXXX
OK
127.0.0.1:6379> select 1 #选择数据库1
OK
127.0.0.1:6379[1]> lpush redis153-to-es-log '{"name":"wanghaipeng008","age":"33","timestamp":"1695895769"}' 
(integer) 1
127.0.0.1:6379[1]> llen redis153-to-es-log # 已取出
(integer) 0

  4、创建索引

 

  5、ES查看数据