ELK实时日志管理-指定JDK

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/windcoder/apps/jdk1.8.0_144/ (此处配置的为刚下的1.8的配置目录)
export PATH=$JAVA_HOME/bin:$PATH
if [ -x "$JAVA_HOME/bin/java" ]; then
JAVA="/home/windcoder/apps/jdk1.8.0_144//bin/java"
else
JAVA=`which java`
fi

完整配置文件(部分)

#!/bin/bash
……
# 配置自己的jdk1.8
export JAVA_HOME=/home/windcoder/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/windcoder/apps/jdk1.8.0_144
export JAVA_HOME=/home/windcoder/apps/jdk1.8.0_144

7.3 JDK版本与软件版本

ESJDK
0.901.6
1.3-2.41.7
5.0+1.8

5.0级以上版本需要至少JDK1.8.

2.4的版本是可在1.7中的最高版本。

这是elasticsearch版本与JDK的对比,其余几个也是类似,5.x及以上的版本均需要至少为JDK1.8。

本文采用 CC BY-NC-SA 4.0 许可,转载请注明出处与作者。

支持一下

如果这篇文章对你有帮助,欢迎打赏或分享。

打赏支持

评论