ELK實時日誌管理-指定JDK

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。

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