注意ELK三个组件的版本需保持一致:
1 ES安装
1.1 下载ES镜像
docker pull elasticsearch:7.4.2
1.2 路径配置
- 在宿主机创建ES配置文件夹
1. 作用:用于同ES容器中的配置路径进行映射,后续在宿主机中进行配置文件操作,可同步到ES中;
2. 操作命令:mkdir -p /mydata/elasticsearch/config
- 在宿主机创建ES数据文件夹
1. 作用:用于同ES容器中的数据路径进行映射,存放数据;
2. 操作命令:mkdir -p /mydata/elasticsearch/data
1.3 配置
- 配置ES访问IP,执行命令: echo "http.host:0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
1.4 执行命令安装ES
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
执行完成后,可访问http://169.254.92.120:9200/ 查看是否启动成功,如果启动失败,请参考1.5节内容进行问题排查,如果1.5节解决不了,请从互联网寻求解药吧
1.5 问题补充
1.5.1 ES启动不起来
通过1.4步骤启动可能启动不起来ES,无法访问访问http://169.254.92.120:9200/。原因是ES没有权限读写/mydata/elasticsearch文件夹,可通过如下步骤解决:
- 1.更改/mydata/elasticsearch整个文件夹的读写权限,执行如下命令:
chmod -R 777 /mydata/elasticsearch
-
- 重启ElasticSearch
docker restart elasticsearch
1.5.3 ES启动后,通过docker ps查看发现ES一致处于Restarting状态,而不是UP状态
-
1.查看日志 docker logs elasticsearch
-
2.寻找报错原因
Exception in thread "main" SettingsException[Failed to load settings from [elasticsearch.yml]]; nested: ParsingException[Failed to parse object: expecting token of type [START_OBJECT] but found [VALUE_STRING]];
at org.elasticsearch.common.settings.Settings$Builder.loadFromStream(Settings.java:1097)
at org.elasticsearch.common.settings.Settings$Builder.loadFromPath(Settings.java:1070)
at org.elasticsearch.node.InternalSettingsPreparer.prepareEnvironment(InternalSettingsPreparer.java:83)
at org.elasticsearch.cli.EnvironmentAwareCommand.createEnv(EnvironmentAwareCommand.java:95)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:125)
at org.elasticsearch.cli.Command.main(Command.java:90)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)
Caused by: ParsingException[Failed to parse object: expecting token of type [START_OBJECT] but found [VALUE_STRING]]
at org.elasticsearch.common.xcontent.XContentParserUtils.ensureExpectedToken(XContentParserUtils.java:78)
at org.elasticsearch.common.settings.Settings.fromXContent(Settings.java:617)
at org.elasticsearch.common.settings.Settings.access$400(Settings.java:82)
at org.elasticsearch.common.settings.Settings$Builder.loadFromStream(Settings.java:1093)
找到报错原因:“http.host: 0.0.0.0”这行配置中,“:”后需要加一个空格。
- 修改配置文件 vi /mydata/elasticsearch/config/elasticsearch.yml
http.host: 0.0.0.0
- 3.重启ElasticSearch
docker restart elasticsearch
- 4.效果查看
再访问http://169.254.92.120:9200/就可以访问了。
1.6 设置开机启动
docker update elasticsearch --restart=always
- 关闭开机启动mysql
docker update elasticsearch --restart=no
1.6 安装ES插件
1.6.1 安装head插件
1.6.2
2 Kibana安装
2.1下载Kibana镜像
docker pull elasticsearch:7.4.2
2.2 运行kibana
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://169.254.92.120:9200 -p 5601:5601 \
-d kibana:7.4.2