目录
问题1:KB、ES版本不一致
问题2:kibana.yml中配置有问题
问题3:系统防火墙造成的问题
解决方法:把KB和ES版本调整为统一版本
实例1:docker 如下:
启动es
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e “discovery.type=single-node” elasticsearch:6.8.0
然后启动kibana
docker run -d -p 5601:5601 --name kibana --link elasticsearch:elasticsearch docker.io/kibana:6.8.0
实例2:docker-compose.yml 如下:
version: '3.7'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.6.0
container_name: elasticsearch
environment:
- discovery.type=single-node
kinaba:
image: docker.elastic.co/kibana/kibana:6.5.4
container_name: kibana
ports:
- "5601:5601"
depends_on:
- elasticsearch
通过查看日志,发现了Error: No Living connections的问题
解决方法:将配置文件kibana.yml中的elasticsearch.url改为正确的链接,默认为: http://elasticsearch:9200
具体步骤如下:
首先我们查看 ElasticSearch 的容器内部 ip:
docker inspect -f '{
{range .NetworkSettings.Networks}}{
{.IPAddress}}{
{end}}' container_name_or_id
然后进入 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
只需要将上面的 "http://elasticsearch:9200"
中的 elasticsearch
替换成上一步的es容器内部ip就可以了。
修改完成之后退出容器,重新启动即可 docker restart kibana容器id
docker logs kibana
打印日志,报错:
{"type":"log","@timestamp":"2020-06-04T08:25:57Z","tags":["warning","elasticsearch","admin"],"pid":6,"message":"Unable to revive connection: http://172.17.0.2:9200/"}
{"type":"log","@timestamp":"2020-06-04T08:25:57Z","tags":["warning","elasticsearch","admin"],"pid":6,"message":"No living connections"}
容器 ip
是没问题的,es 服务也确实起了,为什么呢??这个问题花了我大半天的时间,找遍了网上的教程都, 翻了官网上kibana手册,都没有相关的记录
只能自己摸索
进入kibana容器中
docker exec -it kibana /bin/bash
bash-4.2$ ping 172.17.0.2 #没有问题,能ping通
...
bash-4.2$ curl http://120.79.43.44:9200
curl: (7) Failed connect to 120.79.43.44:9200; No route to host
问题就出在这里!容器之间无法进行通信,猜测是防火墙的问题,再单独搜索这个问题,找到了解决的方案
依次执行以下命令
nmcli connection modify docker0 connection.zone trusted
systemctl stop NetworkManager.service
firewall-cmd --permanent --zone=trusted --change-interface=docker0
systemctl start NetworkManager.service
nmcli connection modify docker0 connection.zone trusted
systemctl restart docker.service
即把 docker0
加入防火墙白名单
重新启动容器,访问地址 http://localhost:5601 ,显示正在加载 kibana 图像,总算没有了 Kibana server is not ready yet
。