今天搭建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 $key
flushdb
在配置文件中,添加stdout{},将日志打印到屏幕。
由于配置的input为file,其在用户主目录有一个记录读取内容位置的文件: .sincedb*。为了防止因为没有新日志导致误判,因此先删除这个文件,然后重新启动Logstash。