系统环境:Centos 7

安装ELASTICSEARCH

按照官方文档(https://opendistro.github.io/for-elasticsearch-docs/)的说明,首先需要安装JDK(使用官方源地址)

cd /etc/yum.repos.d/  
curl https://d3g5vo6xdbdb9a.cloudfront.net/yum/opendistroforelasticsearch-artifacts.repo -o opendistroforelasticsearch-artifacts.repo  
yum install java-11-openjdk-devel    #如果需要在本机上安装logstash,则建议安装yum install java-1.8.0-openjdk-devel

因为新版的logstash-6.3.2不支持最新版的jdk-10.0.2,需要降为上一个稳定版jdk-8u181。否则会报错Unrecognized VM option ‘UseParNewGC’参考链接https://github.com/elastic/logstash/issues/9345

  • 如果安装java-1.8.0-openjdk-devel,则需要在安装之后做如下操作,否则后面会起不来elasticsearch
ln -s /usr/lib/jvm/java-1.8.0/lib/tools.jar /usr/share/elasticsearch/lib/

我们目前的方案是logstash在另外一台机器上,所以可以不考虑JDK的问题。

下面开始安装:

yum install opendistroforelasticsearch
systemctl start elasticsearch.service

opendistro for elasticsearch实际上是将searchguard的功能与elasticsearch做了集成,相当于省去了安装searchguard插件的过程,这样能节省不少时间,且能让你少踩很多坑,配置searchguard有很多坑的。

所以安装好之后,可以直接启动了,已经默认配置好了。启动好之后,可以用以下命令测试一下

curl -XGET https://localhost:9200 -u admin:admin --insecure
curl -XGET https://localhost:9200/_cat/nodes?v -u admin:admin --insecure
curl -XGET https://localhost:9200/_cat/plugins?v -u admin:admin --insecure

默认用户名密码是admin ,如果想要修改admin的密码,修改方法与searchguard的方法是一样的

用/usr/share/elasticsearch/plugins/opendistro_security/tools/目录下的hash.sh脚本生成你想要修改的密码:

cd /usr/share/elasticsearch/plugins/opendistro_security/tools/
sh hash.sh -p yourpassword

复制得到的字符串,然后编辑/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml,然后修改对应账号的hash字段即可。

修改完成,保存退出之后,需要重载一下,使我们的修改生效,重载命令如下:

cd /usr/share/elasticsearch/plugins/opendistro_security/tools/
sh securityadmin.sh -cd ../securityconfig/ -icl -nhnv -cacert /etc/elasticsearch/root-ca.pem -cert /etc/elasticsearch/kirk.pem -key /etc/elasticsearch/kirk-key.pem

安装KIBANA

安装好elasticsearch之后,下面就可以安装kibana了,同样kibana需要与elasticsearch配合,所以也需要安装opendistro的版本,依然是使用opendistro的源来进行安装

yum install opendistroforelasticsearch-kibana
systemctl start kibana.service

由于默认的kibana配置是监听的localhost,所以需要修改一下配置,修改server.host为0.0.0.0或者你想监听的IP地址

由于opendistro实际也是基于searchguard做的集成,所以KIBANA的前端同样需要一个代理服务器来传递账号信息,nginx的代理配置如下:

location / {
    auth_basic "web log elk sandbox2";
    auth_basic_user_file auth_passwd/kibana_auth; 
    proxy_set_header X-PROXY-USER $remote_user;
    proxy_pass http://10.2.xx.xx:5601/;             #这里的地址应为KIBANA的IP地址    
}

补充

如果遇到如下报错:

elasticsearch[3969]: java.security.policy: error adding Entry:
elasticsearch[3969]: java.net.MalformedURLException: unknown protocol: jrt
elasticsearch[3969]: java.security.policy: error adding Entry:
elasticsearch[3969]: java.net.MalformedURLException: unknown protocol: jrt

可按照下列处理方法:

1.首先找到tools.jar这个文件所在路径,一般是在jdk的lib目录里面

2.然后查看/usr/share/elasticsearch/lib/tools.jar这个路径是否存在,若不存在,则将第1步的文件链接过来,若存在,则删除之后,再将第1步的文件链接过来

#比如我的路径是在
/usr/java/jdk1.8.0_181-amd64/lib/tools.jar
 
#而/usr/share/elasticsearch/lib/tools.jar这个文件是不存在的,所以我直接做了链接
ln -s /usr/java/jdk1.8.0_181-amd64/lib/tools.jar /usr/share/elasticsearch/lib/
 
#如果存在/usr/share/elasticsearch/lib/tools.jar这个文件,则先删除,再做链接
rm -f /usr/share/elasticsearch/lib/tools.jar
ln -s /usr/java/jdk1.8.0_181-amd64/lib/tools.jar /usr/share/elasticsearch/lib/