logstash无法读取redis数据
来源:互联网 发布:网络电视打雷可以看吗 编辑:程序博客网 时间:2024/04/30 00:37
今天搭建logsatsh+redis+elasticsearch时出现了问题,经过近一小时排查,终于解决。记录一下。
环境是这样,一台客户端发送数据到位于服务器的redis,服务器端的logstash读redis的数据,存储到elasticsearch中。
初步问题是这样的:在服务器端,没有收到客户端发送过来的日志。
这样就可能有两种问题:一是客户端的logstash没有成功发送数据到redis,二是服务器端的logstash无法从redis读取数据。
排查问题一
为了避免redis中原有数据影响判断,首先清空redis中的数据:
进去redis目录下
src/redis-cli,连接到redis,执行fulshdb,会删除当前选中的数据库。这里的数据库其实是用KEY表示的,执行:
KEYS *
可以查看所有的KEY,这里的key和我们配置文件中的key是对应的,选中它,删除:
select $keyflushdb
在配置文件中,添加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了!顺便贴下配置文件。
服务器端:
客户端:
- logstash无法读取redis数据
- logstash 读取 Redis 数据
- logstash读取redis中的数据
- logstash读取kafka数据插件
- logstash——redis读取脚本
- filebeat - logstash 多行合并 解决数据丢失以及无法读取最后一行
- Elastic测试笔记:logstash读取redis,指定时间字段
- 使用logstash的logstash-input-kafka插件读取kafka中的数据
- docker 搭建 ELK,logstash 从 kafka读取数据
- json数据无法读取
- logstash 操作redis
- logstash配合redis实例
- 5.1.1 读取Redis 数据
- redis无法写入新数据
- ORA-01466: 无法读取数据
- 将数据存入redis进行读取数据
- logstash+es+kibana+redis搭建
- logstash+es+kibana+redis搭建
- 单独编译使用WebRTC的音频处理模块 - android
- YUV图像合成原理
- easy-ui DateBox取值,取出的数值格式转换
- 【C#】显示引用类型变量的内存地址(以字符串为例)
- CodeForces 25D Roads not only in Berland 并查集
- logstash无法读取redis数据
- H264解码器源码(Android 1.6 版)
- strace工具详解
- 关于afxbeginthread时WaitForMultipleObjects不起作用
- socket网络编程之TCP_Client
- 归并排序(C语言)
- Express文件上传之Multer
- C# CS格式文件导出为Dll库
- PHP实现验证码图片