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