7.附錄1-指定JDK
服務器上默認爲非1.8的JDK時,使用5.x的ELK需要指定單獨的1.8的JDK纔可。後期若能寫成腳本,能在腳本中指定的話就不必現在這樣麻煩地做入侵式修改了。
7.1 Elasticsearch
需要修改elasticsearch啓動腳本。 打開 elasticsearchHOME/bin/elasticsearch 編輯:
[root]# vim bin/elasticsearch export JAVA_HOME=/home/parim/spark/apps/jdk1.8.0_144/ (此處配置的爲剛下的1.8的配置目錄) export PATH=$JAVA_HOME/bin:$PATH if [ -x "$JAVA_HOME/bin/java" ]; then JAVA="/home/parim/spark/apps/jdk1.8.0_144//bin/java" else JAVA=`which java` fi
完整配置文件(部分)
#!/bin/bash …… # 配置自己的jdk1.8 export JAVA_HOME=/home/parim/spark/apps/jdk1.8.0_144/ export PATH=$JAVA_HOME/bin:$PATH source "`dirname "$0"`"/elasticsearch-env ES_JVM_OPTIONS="$ES_PATH_CONF"/jvm.options JVM_OPTIONS=`"$JAVA" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.JvmOptionsParser "$ES_JVM_OPTIONS"` ES_JAVA_OPTS="${JVM_OPTIONS//\$\{ES_TMPDIR\}/$ES_TMPDIR} $ES_JAVA_OPTS" # 自己添加的jdk判斷 if [ -x "$JAVA_HOME/bin/java" ]; then JAVA="/home/parim/spark/apps/jdk1.8.0_144//bin/java" else JAVA=`which java` fi cd "$ES_HOME" # manual parsing to find out, if process should be detached if ! echo $* | grep -E '(^-d |-d$| -d |--daemonize$|--daemonize )' > /dev/null; then exec \ "$JAVA" \ $ES_JAVA_OPTS \ -Des.path.home="$ES_HOME" \ -Des.path.conf="$ES_PATH_CONF" \ -Des.distribution.flavor="$ES_DISTRIBUTION_FLAVOR" \ -Des.distribution.type="$ES_DISTRIBUTION_TYPE" \ -cp "$ES_CLASSPATH" \ org.elasticsearch.bootstrap.Elasticsearch \ "$@" else ……
7.2 Logstash
查看logstash啓動腳本,沒有關於java_home之類的相關配置,但logstash啓動過程會引入lib文件bin/logstash.lib.sh ,經查看logstash.lib.sh中定義了一個setup_java的函數,setup_java被setup函數調用,最終被bin/logstash啓動腳本調用。
因此,我們只需要在logstash或logstash.lib.sh的行首位置添加兩個環境變量即可:
export JAVA_CMD=/home/parim/spark/apps/jdk1.8.0_144 export JAVA_HOME=/home/parim/spark/apps/jdk1.8.0_144
7.3 JDK版本與軟件版本
ES | JDK |
---|---|
0.90 | 1.6 |
1.3-2.4 | 1.7 |
5.0+ | 1.8 |
5.0級以上版本需要至少JDK1.8.
2.4的版本是可在1.7中的最高版本。
這是elasticsearch版本與JDK的對比,其餘幾個也是類似,5.x及以上的版本均需要至少爲JDK1.8。