无法使用 docker-compose 连接到 kibana/elasticsearch
Unable to connect to kibana/elasticsearch using docker-compose
我正在尝试通过虚拟机中的 docker-compose
容器化文件 (.yml
) 在 Elasticsearch
中 运行 Kibana
,但我无法连接到 Kibana
,我在尝试连接失败时收到的消息如下所示:
[34mspark-master |[0m 18/09/25 17:58:29 INFO master.Master: Registering worker 172.18.0.8:8881 with 2 cores, 1024.0 MB RAM
[36;1mspark-worker |[0m 18/09/25 17:58:29 INFO worker.Worker: Successfully registered with master spark://spark-master:7077
[35mkibana |[0m {"type":"log","@timestamp":"2018-09-25T17:58:31Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"Unable to revive connection: http://elasticsearch:9200/"}
[35mkibana |[0m {"type":"log","@timestamp":"2018-09-25T17:58:31Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"No living connections"}
[35mkibana |[0m {"type":"log","@timestamp":"2018-09-25T17:58:33Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"Unable to revive connection: http://elasticsearch:9200/"}
[35mkibana |[0m {"type":"log","@timestamp":"2018-09-25T17:58:33Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"No living connections"}
[35mkibana |[0m {"type":"log","@timestamp":"2018-09-25T17:58:36Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"Unable to revive connection: http://elasticsearch:9200/"}
[35mkibana |[0m {"type":"log","@timestamp":"2018-09-25T17:58:36Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"No living connections"}
[35mkibana |[0m {"type":"log","@timestamp":"2018-09-25T17:58:38Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"Unable to revive connection: http://elasticsearch:9200/"}
[35mkibana |[0m {"type":"log","@timestamp":"2018-09-25T17:58:38Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"No living connections"}
[35mkibana |[0m {"type":"log","@timestamp":"2018-09-25T17:58:41Z","tags":["status","plugin:elasticsearch@6.2.2","info"],"pid":1,"state":"green","message":"Status changed from red to green - Ready","prevState":"red","prevMsg":"Unable to connect to Elasticsearch at http://elasticsearch:9200."}
[33melasticsearch |[0m 2018-09-25 17:58:47,078 INFO exited: create-index (exit status 0; expected)
如果您注意到,docker 能够连接到 docker-compose 文件中提到的其他服务,其中之一是前两行显示的 spark-master
。 docker-compose文件中调用kibana的命令如下:
elasticsearch:
build: docker-elasticsearch/
container_name: elasticsearch
hostname: elasticsearch
environment:
- Des.network.host=0.0.0.0
- cluster.name = "elasticsearch"
expose:
- 9200
ports:
- "9200:9200"
kibana:
build: kibana/
container_name: kibana
hostname: kibana
environment:
- SERVER_NAME="kibana"
- SERVER_HOST="0"
- ELASTICSEARCH_URL=http://elasticsearch:9200
ports:
- "5601:5601"
links:
- elasticsearch
depends_on:
- elasticsearch
如果我这样做 docker-compose ps
,它会给我以下信息:
Name Command State Ports
--------------------------------------------------------------------------------
elasticsearch /usr/local/bin/docker-entr Up 0.0.0.0:9200->9200/tcp,
... 9300/tcp
kibana /bin/bash /usr/local/bin/k Up 0.0.0.0:5601->5601/tcp
在此处发布此问题之前,我在 google 上广泛搜索了此问题,并尝试了人们对此问题的各种建议,包括修改 elasticsearch_url
,例如更改 http
到 https
,将 localhost
更改为 elasticsearch
和这两个建议的 combination/permutation,但我无法使用任何建议连接到 Kibana
.有人还建议在某处检查为我的虚拟机分配的内存,对于我的虚拟机来说,它等于 suggested by Elasticsearch
.
的值
编辑-1
在使用@Ivthillo 给出的命令时,Kibana 似乎已连接,如终端上的以下消息所示:
kibana_1 | {"type":"log","@timestamp":"2018-09-26T13:43:05Z","tags":["info","monitoring-ui","kibana-monitoring"],"pid":1,"message":"Starting all Kibana monitoring collectors"}
kibana_1 | {"type":"log","@timestamp":"2018-09-26T13:43:06Z","tags":["license","info","xpack"],"pid":1,"message":"Imported license information from Elasticsearch for the [monitoring] cluster: mode: basic | status: active"}
kibana_1 | {"type":"log","@timestamp":"2018-09-26T13:43:12Z","tags":["listening","info"],"pid":1,"message":"Server running at http://0:5601"}
但是,当我尝试在新终端中通过 docker(例如 sudo docker exec -i
)运行 连接另一项服务时(因为上面的消息 Server is running at...
仍然卡住了不前进),我收到一条错误消息,指示容器不是 运行ning,如下所示:
Error response from daemon: Container 824846b64950d7e6f38792c5633f9eca3e84702cfe060de012c4fe39cf365ab9 is not running
我有一个类似的设置。我通过管理容器网络解决了这个问题。请尝试以下操作:
version: '3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:5.6.12
container_name: elasticsearch
environment:
- cluster.name=docker-cluster
ports:
- 9200:9200
kibana:
image: kibana:5.6.12
container_name: kibana
environment:
ELASTICSEARCH_URL: http://elasticsearch1:9200
ports:
- 5601:5601
depends_on:
- elasticsearch
如果有帮助请告诉我。
您可以从这个非常基本的 docker-compose 开始,因为您正在构建自己的图像,这使得调试变得困难。
在下面的示例中,我们在同一个 docker 网络中启动了一个 ES 和一个 Kibana,这意味着它们可以使用它们的名称相互访问。与使用已弃用的 --link
.
相比,网络是使容器进行通信的更好方法
version: '3.3'
services:
kibana:
image: docker.elastic.co/kibana/kibana:6.3.2
environment:
SERVER_NAME: kibana.example.org
ELASTICSEARCH_URL: http://elasticsearch:9200
ports:
- "5601:5601"
depends_on:
- elasticsearch
networks:
- my-network
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.3.2
container_name: elasticsearch
networks:
- my-network
networks:
my-network:
证明连接正常。我正在访问 kibana 容器并 ping 和 curl
到我的 elasticsearch 容器:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7e2632aff839 docker.elastic.co/kibana/kibana:6.3.2 "/usr/local/bin/kiba…" 2 minutes ago Up 2 minutes 0.0.0.0:5601->5601/tcp es_kibana_1
03f2d03a87b4 docker.elastic.co/elasticsearch/elasticsearch:6.3.2 "/usr/local/bin/dock…" 2 minutes ago Up 2 minutes 9200/tcp, 9300/tcp elasticsearch
lorenzvanthillo@MacBook-Pro ~/ES docker exec -it 7e2632aff839 bash
bash-4.2$ ping elasticsearch
PING elasticsearch (172.22.0.2) 56(84) bytes of data.
64 bytes from elasticsearch.es_my-network (172.22.0.2): icmp_seq=1 ttl=64 time=0.554 ms
64 bytes from elasticsearch.es_my-network (172.22.0.2): icmp_seq=2 ttl=64 time=0.075 ms
bash-4.2$ curl http://elasticsearch:9200
{
"name" : "f9AfdJp",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "YQkmS6gtTmqcCs0HgWX5bg",
"version" : {
"number" : "6.3.2",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "053779d",
"build_date" : "2018-07-20T05:20:23.451332Z",
"build_snapshot" : false,
"lucene_version" : "7.3.1",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
我正在尝试通过虚拟机中的 docker-compose
容器化文件 (.yml
) 在 Elasticsearch
中 运行 Kibana
,但我无法连接到 Kibana
,我在尝试连接失败时收到的消息如下所示:
[34mspark-master |[0m 18/09/25 17:58:29 INFO master.Master: Registering worker 172.18.0.8:8881 with 2 cores, 1024.0 MB RAM
[36;1mspark-worker |[0m 18/09/25 17:58:29 INFO worker.Worker: Successfully registered with master spark://spark-master:7077
[35mkibana |[0m {"type":"log","@timestamp":"2018-09-25T17:58:31Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"Unable to revive connection: http://elasticsearch:9200/"}
[35mkibana |[0m {"type":"log","@timestamp":"2018-09-25T17:58:31Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"No living connections"}
[35mkibana |[0m {"type":"log","@timestamp":"2018-09-25T17:58:33Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"Unable to revive connection: http://elasticsearch:9200/"}
[35mkibana |[0m {"type":"log","@timestamp":"2018-09-25T17:58:33Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"No living connections"}
[35mkibana |[0m {"type":"log","@timestamp":"2018-09-25T17:58:36Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"Unable to revive connection: http://elasticsearch:9200/"}
[35mkibana |[0m {"type":"log","@timestamp":"2018-09-25T17:58:36Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"No living connections"}
[35mkibana |[0m {"type":"log","@timestamp":"2018-09-25T17:58:38Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"Unable to revive connection: http://elasticsearch:9200/"}
[35mkibana |[0m {"type":"log","@timestamp":"2018-09-25T17:58:38Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"No living connections"}
[35mkibana |[0m {"type":"log","@timestamp":"2018-09-25T17:58:41Z","tags":["status","plugin:elasticsearch@6.2.2","info"],"pid":1,"state":"green","message":"Status changed from red to green - Ready","prevState":"red","prevMsg":"Unable to connect to Elasticsearch at http://elasticsearch:9200."}
[33melasticsearch |[0m 2018-09-25 17:58:47,078 INFO exited: create-index (exit status 0; expected)
如果您注意到,docker 能够连接到 docker-compose 文件中提到的其他服务,其中之一是前两行显示的 spark-master
。 docker-compose文件中调用kibana的命令如下:
elasticsearch:
build: docker-elasticsearch/
container_name: elasticsearch
hostname: elasticsearch
environment:
- Des.network.host=0.0.0.0
- cluster.name = "elasticsearch"
expose:
- 9200
ports:
- "9200:9200"
kibana:
build: kibana/
container_name: kibana
hostname: kibana
environment:
- SERVER_NAME="kibana"
- SERVER_HOST="0"
- ELASTICSEARCH_URL=http://elasticsearch:9200
ports:
- "5601:5601"
links:
- elasticsearch
depends_on:
- elasticsearch
如果我这样做 docker-compose ps
,它会给我以下信息:
Name Command State Ports
--------------------------------------------------------------------------------
elasticsearch /usr/local/bin/docker-entr Up 0.0.0.0:9200->9200/tcp,
... 9300/tcp
kibana /bin/bash /usr/local/bin/k Up 0.0.0.0:5601->5601/tcp
在此处发布此问题之前,我在 google 上广泛搜索了此问题,并尝试了人们对此问题的各种建议,包括修改 elasticsearch_url
,例如更改 http
到 https
,将 localhost
更改为 elasticsearch
和这两个建议的 combination/permutation,但我无法使用任何建议连接到 Kibana
.有人还建议在某处检查为我的虚拟机分配的内存,对于我的虚拟机来说,它等于 suggested by Elasticsearch
.
编辑-1
在使用@Ivthillo 给出的命令时,Kibana 似乎已连接,如终端上的以下消息所示:
kibana_1 | {"type":"log","@timestamp":"2018-09-26T13:43:05Z","tags":["info","monitoring-ui","kibana-monitoring"],"pid":1,"message":"Starting all Kibana monitoring collectors"}
kibana_1 | {"type":"log","@timestamp":"2018-09-26T13:43:06Z","tags":["license","info","xpack"],"pid":1,"message":"Imported license information from Elasticsearch for the [monitoring] cluster: mode: basic | status: active"}
kibana_1 | {"type":"log","@timestamp":"2018-09-26T13:43:12Z","tags":["listening","info"],"pid":1,"message":"Server running at http://0:5601"}
但是,当我尝试在新终端中通过 docker(例如 sudo docker exec -i
)运行 连接另一项服务时(因为上面的消息 Server is running at...
仍然卡住了不前进),我收到一条错误消息,指示容器不是 运行ning,如下所示:
Error response from daemon: Container 824846b64950d7e6f38792c5633f9eca3e84702cfe060de012c4fe39cf365ab9 is not running
我有一个类似的设置。我通过管理容器网络解决了这个问题。请尝试以下操作:
version: '3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:5.6.12
container_name: elasticsearch
environment:
- cluster.name=docker-cluster
ports:
- 9200:9200
kibana:
image: kibana:5.6.12
container_name: kibana
environment:
ELASTICSEARCH_URL: http://elasticsearch1:9200
ports:
- 5601:5601
depends_on:
- elasticsearch
如果有帮助请告诉我。
您可以从这个非常基本的 docker-compose 开始,因为您正在构建自己的图像,这使得调试变得困难。
在下面的示例中,我们在同一个 docker 网络中启动了一个 ES 和一个 Kibana,这意味着它们可以使用它们的名称相互访问。与使用已弃用的 --link
.
version: '3.3'
services:
kibana:
image: docker.elastic.co/kibana/kibana:6.3.2
environment:
SERVER_NAME: kibana.example.org
ELASTICSEARCH_URL: http://elasticsearch:9200
ports:
- "5601:5601"
depends_on:
- elasticsearch
networks:
- my-network
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.3.2
container_name: elasticsearch
networks:
- my-network
networks:
my-network:
证明连接正常。我正在访问 kibana 容器并 ping 和 curl
到我的 elasticsearch 容器:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7e2632aff839 docker.elastic.co/kibana/kibana:6.3.2 "/usr/local/bin/kiba…" 2 minutes ago Up 2 minutes 0.0.0.0:5601->5601/tcp es_kibana_1
03f2d03a87b4 docker.elastic.co/elasticsearch/elasticsearch:6.3.2 "/usr/local/bin/dock…" 2 minutes ago Up 2 minutes 9200/tcp, 9300/tcp elasticsearch
lorenzvanthillo@MacBook-Pro ~/ES docker exec -it 7e2632aff839 bash
bash-4.2$ ping elasticsearch
PING elasticsearch (172.22.0.2) 56(84) bytes of data.
64 bytes from elasticsearch.es_my-network (172.22.0.2): icmp_seq=1 ttl=64 time=0.554 ms
64 bytes from elasticsearch.es_my-network (172.22.0.2): icmp_seq=2 ttl=64 time=0.075 ms
bash-4.2$ curl http://elasticsearch:9200
{
"name" : "f9AfdJp",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "YQkmS6gtTmqcCs0HgWX5bg",
"version" : {
"number" : "6.3.2",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "053779d",
"build_date" : "2018-07-20T05:20:23.451332Z",
"build_snapshot" : false,
"lucene_version" : "7.3.1",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}