在实验中logstash是作为日志过滤器的作用,日志收集使用的则是filebeat组件。redis作为缓存器,logstash从redis中拉取数据进行过滤并传给elasticsearch组件。

但是logstash总是启动失败,还没有报错信息,因此追查起来异常艰难。

Jan 15 07:13:42 ip-172-31-22-29.ec2.internal systemd[1]: Unit logstash.service entered failed state.
Jan 15 07:13:42 ip-172-31-22-29.ec2.internal systemd[1]: logstash.service failed.
Jan 15 07:13:42 ip-172-31-22-29.ec2.internal systemd[1]: logstash.service holdoff time over, scheduling restart.
Jan 15 07:13:42 ip-172-31-22-29.ec2.internal systemd[1]: start request repeated too quickly for logstash.service
Jan 15 07:13:42 ip-172-31-22-29.ec2.internal systemd[1]: Failed to start logstash.
Jan 15 07:13:42 ip-172-31-22-29.ec2.internal systemd[1]: Unit logstash.service entered failed state.
Jan 15 07:13:42 ip-172-31-22-29.ec2.internal systemd[1]: logstash.service failed.

就像上面的这个样子,什么也看不出来问题信息在哪。

今天我们来看一下logstash的一些用法:

1、查看配置文件:

logstash服务中,会去pipelines.yml中过滤数据,但这个文件的内容其实指向的是conf.d这个目录,因此我们要在conf.d目录下创建好配置文件,以备logstash服务来对数据进行使用。

2、我们在conf.d目录下创建一个新文件并写入一些信息

3、保存好之后我们就可以进行启动了,但是启动报错了。

[root@:vg_adn_tidbCkhsTest: /etc/logstash]#systemctl status logstash
● logstash.service - logstashLoaded: loaded (/etc/systemd/system/logstash.service; disabled; vendor preset: disabled)Active: failed (Result: start-limit) since Tue 2019-01-15 07:23:33 UTC; 2s agoProcess: 11144 ExecStart=/usr/share/logstash/bin/logstash --path.settings /etc/logstash (code=exited, status=1/FAILURE)Main PID: 11144 (code=exited, status=1/FAILURE)Jan 15 07:23:32 ip-172-31-22-29.ec2.internal systemd[1]: Unit logstash.service entered failed state.
Jan 15 07:23:32 ip-172-31-22-29.ec2.internal systemd[1]: logstash.service failed.
Jan 15 07:23:33 ip-172-31-22-29.ec2.internal systemd[1]: logstash.service holdoff time over, scheduling restart.
Jan 15 07:23:33 ip-172-31-22-29.ec2.internal systemd[1]: start request repeated too quickly for logstash.service
Jan 15 07:23:33 ip-172-31-22-29.ec2.internal systemd[1]: Failed to start logstash.
Jan 15 07:23:33 ip-172-31-22-29.ec2.internal systemd[1]: Unit logstash.service entered failed state.
Jan 15 07:23:33 ip-172-31-22-29.ec2.internal systemd[1]: logstash.service failed.

报错信息看不出来问题出在哪里。后来我按照下列步骤来进行检查。

我们定位到这一行信息

这可以看出来systemctl start logstash触发的是这一条命令进行启动程序的。因此我们以这样的方式进行启动程序

如果以这样的方式进行启动我们发现

[root@:vg_adn_tidbCkhsTest: /etc/logstash]#/usr/share/logstash/bin/logstash --path.settings /etc/logstash
Sending Logstash logs to /var/log/logstash which is now configured via log4j2.properties
[2019-01-15T07:22:16,497][FATAL][logstash.runner          ] Logstash could not be started because there is already another instance using the configured data directory.  If you wish to run multiple instances, you must change the "path.data" setting.
[2019-01-15T07:22:16,521][ERROR][org.logstash.Logstash    ] java.lang.IllegalStateException: Logstash stopped processing because of an error: (SystemExit) exit

这个报错意思是说我之前已经启动了一个logstash实例了,我又想起来使用的是nohup方式以后台启动的,虽然没有启动成功,但是却占用进程不放,因此我们找出来把他kill掉即可。

kill掉之后再次使用这个命令就可以启动成功了,这个命令的功能跟下面这个比较类似:

/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/l.conf

可以看出结果是指定了-f选项就要指定详细的配置文件,而指定--path.settings参数则是指定目录,因为它会从pipelines.yml这个文件中去找文件。

4、后来查出原因为什么systemctl命令不能启动logstash成功的原因是什么了,我们再使用systemctl命令启动程序时,最好查看一下/var/log/messages这个日志信息。今天就捕捉到原因了:

原理是因为JAVA环境变量引起的问题,好吧,logstash使用RPM包安装的,而JAVA使用的是tar包解压缩的,环境变量没有任何问题,可是这几个组件总是说找不到环境变量。所以我认为java这个环境变量以后使用yum一键安装最好了。如何还是想解压缩的话,那就创建个硬链接,把java的bin目录里面的各个二进制文件链接到/bin目录里面,我发现这几个组件总是到/usr/bin、/bin、/sbin、/usr/sbin这四个目录下寻找环境变量(这四个路径是Linux系统一开始安装好的最原始的PATH变量),后面你新加的环境变量都没有起作用。

既然明白了错误在哪里,就知道了如何去修改它,所以我就在java目录下创建一个硬链接,链接到/bin目录下好了。

其实像java的程序,我们使用yum一键安装最好了。

5、像redis这样的缓存,filebeat要使用,logstash也要使用,所以我们要看好这两个服务分别与redis之间的连接是正常响应的。

转载于:https://www.cnblogs.com/FengGeBlog/p/10273974.html

logstash启动失败的问题追查相关推荐

  1. Eclipse启动失败:No java virtual machine was found after searching the follwing locations

    Eclipse启动失败,错误信息如下如所示: 通过阅读错误信息,可以看到错误原因和 javaw.exe路径 有关: 打开eclipse.ini文件,也就是启动Eclipse的初始化文件: 在本地计算机 ...

  2. 硬盘满了 mysql启不来_MySQL数据库之磁盘已满造成的mysql启动失败问题分享

    本文主要向大家介绍了MySQL数据库之磁盘已满造成的mysql启动失败问题分享 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 突然发现mysql死活都启不起来了: 复制代码 代 ...

  3. ArcGis License 启动失败

    2019独角兽企业重金招聘Python工程师标准>>> 安装ArcGis10.2后,License启动失败,点击启动没有任何反应,ArcGis License Manager服务显示 ...

  4. 总结—elasticsearch启动失败的几种情况及解决

    1.使用root用户启动失败 在有一次搭建elasticsearch的时候,使用systemctl启动elasticsearch失败,然后在bin目录下面去使用启动脚本启动,发现报错不能用root用户 ...

  5. sqlnet.ora限制导致双机应用资源启动失败

    现场环境: suse9sp3系统下安装oracle9208,为VCS双机.双机配置完成,VCS可以正常启动,刚开始所有资源都可以正常online,但很快server应用资源就会变成offline,从而 ...

  6. centos 6.0 启动失败提示。

    init: prefdm main process -terminated with status 1 init: prefdm respawning too fast,stopped 1.进入单用户 ...

  7. Android启动失败

    今天突然发现ANDROID模拟器启动失败,log显示如下错误信息 ? ERROR: the user data image is used by another emulator. aborting) ...

  8. mysql启动失败的一个解决方法

    mysql启动失败的一个解决方法 参考文章: (1)mysql启动失败的一个解决方法 (2)https://www.cnblogs.com/notfresh/p/mysqlStartError.htm ...

  9. MariaDB 修改存储路径后启动失败问题解决

    MariaDB 修改存储路径后启动失败问题解决 参考文章: (1)MariaDB 修改存储路径后启动失败问题解决 (2)https://www.cnblogs.com/dizhiyaochang/p/ ...

最新文章

  1. 每日一皮:当写的程序出现bug时,就是这么奇妙...
  2. linux系统层次(转)
  3. drm linux 内核,Linux内核DRM实现分析——基于i915
  4. JavaBeans四个作用域 范围
  5. 学习笔记1(第五周)
  6. Akka并发编程——第七节:Actor模型(六)
  7. SM2 国密算法被 Linux 内核社区接受
  8. OSS.Common扩展.Net Standard支持实例分享
  9. 如何使用Docker轻松设置Ruby on Rails开发环境
  10. ctf 绕过php,Bugku-CTF之各种绕过
  11. Java中使用ProcessBuilder启动、管理应用程序
  12. 融云 SDK 如何实现群组操作
  13. Text Scanner for Mac(超快速ocr文字识别软件)
  14. java错误报告过滤_vue 过滤器filters的使用以及常见报错小坑(Failed to resolve filter)...
  15. mysql 联合主键 null_MySQL联合主键的索引使用
  16. WinEdit + CTex 打开论文模板出现乱码
  17. Android Studio 实现播放本地/网络视频
  18. 网上卖生鲜产品怎么做引流?生鲜电商的引流方法有哪些?特点是什么?
  19. tyvj 火焰巨魔的惆怅
  20. Python代码制作24点小游戏

热门文章

  1. 基于BP神经网络实现气凝胶加气混凝土抗压强度预测(附代码)
  2. python:爱因斯坦阶梯问题
  3. 仿小米和iphone日历效果,基于Android week view
  4. licode 学习总结
  5. 磁共振成像(MRI)连接组学的应用
  6. realsense系列相机ros内外参标定2022.11.20
  7. linux inittab 时间,Linux inittab配置
  8. 大规模视觉定位地图关键技术:综述
  9. 连续出错的概率_连续抛硬币问题+三个概率题
  10. 如何让 JS 写得更漂亮