北京實習搭建 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
好難受,三四天的鼓搗的東西,不到半小時總結完了,可能有遺漏....發現了再更新,借用改編南大的一句話,你們快點看,我慢慢總結慢慢寫....