Elasticsearch和Logstash Java 版本问题3 min read

  • A+
所属分类:ELKstack

 

     线上环境的服务器是系统是 CentOS6 的,对外提供的服务所使用的JAVA版本是1.7版本的,而我们部署的ELK版本都是使用RPM安装的 6.2.4,而官网说需要的JAVA版本是1.8.0_131以上。由于涉及到线上对外提供的服务,JAVA版本不能随便改动和升级,以免出现不兼容的问题。如果要升级JAVA版本还需要对服务做兼容性测试,感觉很麻烦,还有一定的风险,所以该怎么办呢?

     我去看了 Elasticsearch 和 Logstash 的启动脚本,200行代码不到,在 Elasticsearch 启动脚本(/etc/init.d/elasticsearch)里面定义啦 JAVA_HOME 的路径,Logstash 命令(/usr/share/logstash/bin/logstash)里面没有定义 JAVA_HOME 路径,但是看到里面调用的是一个脚本 logstash.lib.sh ,在这个脚本中有使用 JAVA_HOME 变量。那它肯定使用的是系统里面配置的啊,我只需要在里面定义一下 JAVA_HOME 路径就可以啦。所以我在自己服务器上面装啦一套Java-1.8版本的,给ELK环境使用,只需要将他们启动和调用的脚本里面改一改 JAVA_HOME 的路径,那么他们就能正常使用,改过之后启动、使用都是没问题的。所以记录一下。 

   

1. Elasticsearch 启动脚本如下:

  1. // vim /etc/init.d/elasticsearch     
  2. ......    
  3.    ......    
  4. 57     
  5. 58 export ES_JAVA_OPTS    
  6. 59 export JAVA_HOME     // 在大概59行,有JAVA_HOME变量,在这里重新定义自己JAVA-1.8版本家目录路径即可。    
  7. 60 export ES_PATH_CONF    
  8. 61 export ES_STARTUP_SLEEP_TIME    
  9. 62     
  10. ......    
  11.    ...... 

      

2. Logstash 命令文件

  1. // vim /usr/share/logstash/bin/logstash  
  2.  ......  
  3.     ......  
  4.  20 if [ -L "$0" ]; then  
  5.  21   # Launched from a symlink  
  6.  22   # --Test for the readlink binary  
  7.  23   RL="$(which readlink)"  
  8.  24   if [ $? -eq 0 ]; then  
  9.  25     # readlink exists  
  10.  26     SOURCEPATH="({RL} $0)"  
  11.  27   else  
  12.  28     # readlink not found, attempt to parse the output of stat  
  13.  29     SOURCEPATH="(stat -c %N 0 | awk '{print $3}' | sed -e 's/\‘//' -e 's/\’//')"  
  14.  30     if [ $? -ne 0 ]; then  
  15.  31       # Failed to execute or parse stat  
  16.  32       echo "Failed to find source library at path (cd `dirname 0`/..; pwd)/bin/logstash.lib.sh"      // 调用此脚本,可一看看这个脚本  
  17.  33       echo "You may need to launch Logstash with a full path instead of a symlink."  
  18.  ......  
  19.     ......  

  

在该脚本的第二行,也就是 ‘unset CDPATH’ 配置下面定义 JAVA_HOME 即可

  1. // vim /usr/share/logstash/bin/logstash.lib.sh   
  2. unset CDPATH  
  3. export JAVA_HOME=/usr/local/java         // 在这里添加上JAVA-1.8版本的路径。  
  4. export PATH=JAVA_HOME/bin:JAVA_HOME/jre/bin:$PATH    
  5.  ......  
  6.     ......  

  

  

zhaoyulin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: