logstash无法读取redis数据

logstash无法读取redis数据

  有两种问题:一是客户端的logstash没有成功发送数据到redis,二是服务器端的logstash无法从redis读取数据。

问题一

为了避免redis中原有数据影响判断,首先清空redis中的数据:

进去redis目录下

src/redis-cli,连接到redis,执行fulshdb,会删除当前选中的数据库。这里的数据库其实是用KEY表示的,执行:

KEYS *


可以查看所有的KEY,这里的key和我们配置文件中的key是对应的,选中它,删除:

select $key
flushdb


在配置文件中,添加stdout{},将日志打印到屏幕。

由于配置的input为file,其在用户主目录有一个记录读取内容位置的文件: .sincedb*。为了防止因为没有新日志导致误判,因此先删除这个文件,然后重新启动Logstash。

此时发现屏幕是有日志输出的。然后查看redis中是否有相应的key:

KEYS *

如果有,就说明我们已经将数据发送到redis了。我这里是有的,因此排除了第一个问题的可能性。

问题二

为了避免elasticsearch中原有数据的影响,先清除elsaticsearch中的数据:

curl -XDELETE 'http://localhost:9200/_all'

然后同样在配置文件中添加stdout{}输出。

启动logstash,发现没有屏幕没有日志输出。。现在问题确定了。。

解决

既然redis里面有数据,es为什么取不到呢?难道是因为没连接到redis?还是key和data_type没对上?

因为redis和服务器端的Logstash是在同一台机器上,之前写的host是本机ip,看官方文档写的127.0.0.1,遂改成127.0.0.1。

为了避免客户端和服务器端的key和data_type没对上,而且查看官方文档,看里面写的是双引号,死马当活马医吧。把服务器端的都改成双引号,然后把key和data_type复制到客户端的配置文件。

重启,OK了!顺便贴下配置文件。


本文转自 wdy198622 51CTO博客,原文链接:http://blog.51cto.com/weimouren/1716437


上一篇:mPaas H5离线包优化指南


下一篇:mPaas-MSS服务端架构介绍