ELK无限踩坑之Logstash

北京实习搭建 Logstash

” 一句话 ”:Java 8 is required for Logstash 6.x and 5.x.(重点,要考的)

下载链接:https://artifacts.elastic.co/downloads/logstash/logstash-6.1.1.rpm

这里推荐 RPM 安装,因为很方便。

首先开始安装:

 

rpm -ivh logstash-6.1.1.rpm

问题1:这里已经安装成功,但是最后进行 logstash startup.options系统服务创建的时候报错了----------------------” 一句话 ”解决问题  (系统设置JAVA版本为8的不会看到这个报错)

warning: logstash-6.1.1.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
Preparing...                ########################################### [100%]
   1:logstash               ########################################### [100%]
Using provided startup.options file: /etc/logstash/startup.options
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/jruby/Main : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.findBootstrapClass(Native Method)
    at java.lang.ClassLoader.findBootstrapClass0(ClassLoader.java:900)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:316)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:314)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: org.jruby.Main. Program will exit.
warning: %post(logstash-1:6.1.1-1.noarch) scriptlet failed, exit status 1

解决方案:

#查找配置文件
whereis
logstash

#更改 startup.option 配置文件并保存 ------- 将 JAVACMD 路径换成 JAVA8 的路径
vi /etc/logstash/startup.option

#重新生成 logstash 系统服务
#Ubuntu 16.04 and newer------------systemd
#Ubuntu 12.04 through 15.10--------upstart
#Debian 8 "jessie" and newer-------systemd
#Debian 7 "wheezy" and older-------sysv
#CentOS (and RHEL) 7 and newer-----systemd
#CentOS (and RHEL) 6---------------upstart(推荐使用sysv)

/usr/share/logstash/bin/system-install /etc/logstash/startup.options sys

PS:如果你的是系统JAVA版本不是8 那么请添加 export JAVA_HOME=/path(你的JAVA8路径) /usr/share/logstash/bin/ 路径下的 logstash  logstash.lib.sh

进行安装测试:

/usr/share/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} }'

#num.conf 自己根据自己需求编写测试
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/num.conf

作为系统服务启动测试:默认加载的配置文件为 /etc/logstash/logstash.yml 中的 path.config 配置路径 /etc/logstash/conf.d/*.conf

service logstash status
service logstash start

问题2:logstash 作为系统服务启动时,所加载配置文件没有生效

解决方案:

#更改系统服务启动脚本  将 user 和 group 从 logstash 更改为 root
vi /etc/init.d/logstash

#重新运行 logstash 系统服务
service logstash status
service logstash stop
service logstash start

问题3:An unexpected error occurred! {:error=>#<NameError: undefined local variable or method `dotfile' for #<AwesomePrint::Inspector:0x29af78e0>
Did you mean?  @@dotfile>, :

解决方案:这个报错原因是因为我的配置文件中 stdout { codec => rubydebug } 引起的,引起原因是因为作为系统服务启动的 logstash 无法识别 HOME 环境变量,所以导致 Ruby 程序运行报错

#添加 export HOME=/root
vi /etc/init.d/logstash

#重新启动测试,发现日志打印出来了,证明配置运行了
tail -f /var/log/logstash-stdout.log

 

 好难受,三四天的鼓捣的东西,不到半小时总结完了,可能有遗漏....发现了再更新,借用改编南大的一句话,你们快点看,我慢慢总结慢慢写....

 

posted @ 2018-03-14 16:26  观青山  阅读(6170)  评论(2编辑  收藏  举报