解决Docker搭建kibana访问出现[Kibana server is not ready yet]的问题
在采用单机版的docker搭建elk,照着网上的教程如下:
1、下载es7.3.0镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.3.0
2、创建一个网络,方便elk使用
docker network create esnet
3、启动es的docker镜像
docker run --name es -p 9200:9200 -p 9300:9300 --network esnet -e "discovery.type=single-node" bdaab402b220
4、下载docker安装es对应版本的kibana
docker run --name kibana --net esnet -e ELASTICSEARCH_URL=http://127.0.0.1:9200 -p 5601:5601 -d 8bcee4a4f79d
在这一步,满心欢喜想访问kibana后台。
http://localhost:5601
却发现提示
Kibana server is not ready yet
原因是因为 ELASTICSEARCH_URL
配置的应该是容器的 ip,而不是本地ip。
1、首先查看ElasticSearch的容器内部的ip
docker inspect es (es是 ElasticSearch 在容器内部的名称)
Docker容器中启动服务和直接在Linux环境下安装服务,会有ip上的区别,不在是服务器的物理ip, 而是容器对外暴露对的ip, 通过docker inspect elasticsearch查看ES容器暴露出来的ip

2、 然后进入 Kibana 容器内部,修改 kibana.yml 中的ip
$ docker exec -it kibana容器id /bin/bash
$ cd config
$ vi kibana.yml
#
# ** THIS IS AN AUTO-GENERATED FILE **
#
# Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
3需要将上面的 "http://elasticsearch:9200"
中的 elasticsearch
替换成上一步的es容器内部ip就可以了。
3、修改完成之后退出容器,重新启动即可
docker stop kibana
docker start kibana
重新访问http://localhost:5601,发现出来后台界面了。