关于elk中filebeat定义好日志输出,但是redis里面却没有输出内容的问题

时间:2024-04-05 14:06:58

这两天在搞elk的时候,filebeat中指定输出日志至Broker(此处Broker采用redis作为缓存),但是redis中却没有内容,所以就开始排查来

filebeat采用RPM安装的方式来的。

1、首先是检查filebeat的配置文件是否有问题:

关于elk中filebeat定义好日志输出,但是redis里面却没有输出内容的问题

注意:这个配置文件的这个红色方框中的内容是我自己定义的,是在网上搜的一个例子来编写的。不过事实上我们可以在/etc/filebeat这个目录下的filebeat.reference.yml按照这个文件中来进行仿写,但是最终要写到filebeat.yml文件中才算生效。这是filebeat服务指定的配置文件。

关于elk中filebeat定义好日志输出,但是redis里面却没有输出内容的问题

也出现过一个问题就是filebeat服务总是启动不了,总是失败,报错也是跟服务没有关系的一个错误,后来修改了这个配置文件成功了,我们这里是将日志收集在redis中,除了redis之外的其他broker都要注释掉。

2、接下来是指定redis配置文件参数

其中在redis中主要指定的参数是:bind 0.0.0.0  以及protected-mode no 这两项,要修改成现在的这个样子才行。或者说把bind 这一行注释掉也行。

3、这个时候再重启filebeat服务和redis服务。今天出现的情况是redis里面的数据库“2”里面什么文件都没有,查询不到filebeat收集的信息。

此时没有收集到信息我就去查看这两个服务的日志文件,redis的日志里面没有报错,初始化也成功了,所以没有问题。这个时候就去查看filebeat服务

4、filebeat服务的日志文件在/var/log/filebeat目录下,主要有以下几个:

关于elk中filebeat定义好日志输出,但是redis里面却没有输出内容的问题

这里查看filebeat这个文件,其他的都是每次重启后都会自动生成一个filebeat文件名字加一个数字的这个文件。主要看这里的第一个文件“filebeat”

5、我们从这个文件的最后几行获取error信息即可,就能定位到错误在哪里,不过我自己定位了好几次才找到。如果最后几行长时间不报错的情况下,说明redis可以建立连接成功。如果报redis 的错误refuse等,说明redis拒绝外部IP连接,这个时候要去配置redis的配置文件即可。可是对我来说filebeat没有报错但是redis数据库就是没有信息,后来我就在filebeat服务的配置文件里面修改了数据库,这次修改为“4”,(这是数据库的名字),这个时候再重启filebeat,,居然成功了,好吧,估计是我对redis不太熟造成的。这个时候filebeat的日志文件也没有报错,再去查看数据库,发现里面有东西了。

关于elk中filebeat定义好日志输出,但是redis里面却没有输出内容的问题

6、今天看到一篇文章讲的是logstash从redis中取出数据后,redis里面也是没有数据的,这个时候其实集群是没有错误的,只是被logstash取出数据放在了es里面。所以大家不必惊慌。

----------------------------------------------------------更新---------------------------------------------------------------

此刻3月16日,今天做个实验,是把filebeat的输入端中的-type想自定义修改成errorlog,结果没有输出日志,后来才发现,这个type的内容是filebeat固定好的,不能修改。

关于elk中filebeat定义好日志输出,但是redis里面却没有输出内容的问题

出问题最好查日志。精准问题所在,及时解决问题。