ES版本选择:

docker 安装elk 指定es密码 docker安装elasticsearch和kibana_大数据

 先检查自己SpringBoot版本,SpringBoot版本是用得是2.3.12.RELEASE,所以ES安装版本可以用7.12.0或elasticsearch-7.6.2/kibana-7.6.2-windows-x86_64(ES和kibana版本必须一致)

 ES对JDK的支持可参考:支持矩阵 | Elastic


一、安装elasticsearch

拉取镜像
docker pull elasticsearch:7.12.0

创建挂载目录
mkdir -p /home/docker/elasticsearch/config
mkdir -p /home/docker/elasticsearch/data
mkdir -p /home/docker/elasticsearch/plugins

# 下文命令意思:在config文件夹下创建 elasticsearch.yml文件 内容:http.host: 0.0.0.0注意此处冒号有空格(7.4.2版本不需要执行下面这句)
echo "http.host: 0.0.0.0" >> /home/docker/elasticsearch/config/elasticsearch.yml

授权
chmod -R 777 /home/docker/elasticsearch

创建容器:
docker run --name elasticsearch --restart=always -p 9200:9200  -p 9300:9300 \
 -e "discovery.type=single-node" \
 -e ES_JAVA_OPTS="-Xms84m -Xmx512m" \
 -v /home/docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
 -v /home/docker/elasticsearch/data:/usr/share/elasticsearch/data \
 -v /home/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
 -d elasticsearch:7.12.0

查看启动日志:
docker logs elasticsearch

上面这些命令只使用于7.12版本,另外版本不一样,可能装不成功;执行:

curl http://localhost:9200

或直接在浏览器端访问ip:9200,看到这个表示安装成功了:

docker 安装elk 指定es密码 docker安装elasticsearch和kibana_docker_02

# 开机启动
docker update elasticsearch --restart=always

二、安装ElasticSearch-Head

docker pull mobz/elasticsearch-head:5

创建容器 :

docker create --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5

这是状态试试Create 还没有运行,启动:

docker start 容器id

直接使用域名加端口9100访问,左上角的连接输入框输入ES服务器与端口号 再点击‘连接’按钮:

docker 安装elk 指定es密码 docker安装elasticsearch和kibana_大数据_03

处理跨域

在连接ElasticSearch会发现无法连接,由于时前后端分离开发,所以会存在跨域问题,需要在服务端做跨域处理。

# 执行命令
docker exec -it elasticsearch /bin/bash 
# 进入到第一步创建的ElasticSearch容器中,修改配置文件
vi config/elasticsearch.yml
# 添加下面两行:
http.cors.enabled: true 
http.cors.allow-origin: "*"

将上边俩行写进配置文件中,注意这里是用yml的配置文件,简单普及一下此类配置文件的几点语法。

冒号后边必须有一个空格
使用空格的缩进标识层级关系,空格数据不重要,只要是左边对其的一列键即可。
对大小写十分敏感
缩进时不允许使用tab,只允许使用空格。
配置修改完后需执行命令exit退出容器,接着执行docker restart 容器ID重启容器。

处理报406错误

此时通过ElasticSearch-Head可以成功连接ElasticSearch了,但进行数据操作时会报406错误。

只需要修改ElasticSearch-Head容器中的配置即可,将配置文件复制到宿主机进行修改。

# 若es目录下没有head文件夹则先在es目录下创建
mkdir /home/docker/elasticsearch/head
# docker容器中的文件复制到你的宿主机目录
docker cp es-head容器ID:/usr/src/app/_site/vendor.js /home/docker/elasticsearch/head/

进入到/home/elasticsearch/head/可看到从容器中复制出来的文件vendor.js。

vim /home/docker/elasticsearch/head/vendor.js
# 修改文件第6886、7574行 用命令":set nu"显示行号,6886G 到6886行
将"application/x-www-from-urlencodes"修改为"application/json;charset=UTF-8"  【也可使用Mobaxterm的sftp功能直接打开服务器文件找到行位置直接修改保存】

修改文件第6886、7574行,将"application/x-www-from-urlencodes"修改为"application/json;charset=UTF-8"  【可使用Mobaxterm的sftp功能直接打开服务器文件找到行位置直接修改保存】

修改后再将文件复制到容器中,从容器复制文件到宿主机命令已经使用过了,那么现在只不过是把俩个目录反过来即可执行

docker cp /home/docker/elasticsearch/head/vendor.js es-head容器id:/usr/src/app/_site

最后一步重启ElasticSearch-Head容器就结束了。

docker restart elasticsearch-head

es安装参考

参考二文章(安装ik分词器这玩意装与不装都挺好,不装查到的东西也很精确够使,装上会查出一些没有用的!)


三、安装Kibana

1.拉取Kibana

例如:首先需要把Kibana从DockerHub上拉取下来:统一版本7.6.2【也可以直接第2步】

#拉去Kibana
docker pull kibana:7.6.2

2.启动kibana容器:

查看docker内部ip

ip add

docker 安装elk 指定es密码 docker安装elasticsearch和kibana_docker_04

-e ELASTICSEARCH_HOSTS 设置elasticsearch地址【设置成↑上面的ip地址】

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://IP地址:9200 -p 5601:5601 -d kibana:7.6.2

之前设置成服务器的地址一直报连接es超时问题(这种不设置应该也能安装成功) 

License information could not be obtained from Elasticsearch due to Error: Request Timeout after 300

也可以先pull,如果没有先pull,上面语句会直接下载并安装

# 进入到容器
docker exec -it kibana /bin/bash

# 修改文件内容(连接es与汉化)
vi /usr/share/kibana/config/kibana.yml
server.name: kibana
server.host: "0.0.0.0"
#elasticsearch.hosts: [ "http://elasticsearch:9200" ]
elasticsearch.hosts: [ "http://与上面一样的dockerIP:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
#设置kibana中文显示
i18n.locale: zh-CN

加不加双引号好像都可以:

#kibana汉化
i18n.locale: "zh-CN"

重启即可使用

docker restart kibana

服务器ip:5601即可访问 

docker 安装elk 指定es密码 docker安装elasticsearch和kibana_docker_05


 

kibana安装参考文章

kibana语法

ElasticSearch在springboot中使用