ELK無限踩坑之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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章