kibana 报错 server is not ready yet 可能的原因

本是古典 何须时尚 2021-09-01 06:14 482阅读 0赞

目录

问题1:KB、ES版本不一致

问题2:kibana.yml中配置有问题

问题3:系统防火墙造成的问题


问题1:KB、ES版本不一致

解决方法:把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 如下:

  1. version: '3.7'
  2. services:
  3. elasticsearch:
  4. image: docker.elastic.co/elasticsearch/elasticsearch:6.6.0
  5. container_name: elasticsearch
  6. environment:
  7. - discovery.type=single-node
  8. kinaba:
  9. image: docker.elastic.co/kibana/kibana:6.5.4
  10. container_name: kibana
  11. ports:
  12. - "5601:5601"
  13. depends_on:
  14. - elasticsearch

问题2:kibana.yml中配置有问题

通过查看日志,发现了Error: No Living connections的问题

解决方法:将配置文件kibana.yml中的elasticsearch.url改为正确的链接,默认为: http://elasticsearch:9200

具体步骤如下:

首先我们查看 ElasticSearch 的容器内部 ip:

  1. docker inspect -f '{
  2. {range .NetworkSettings.Networks}}{
  3. {.IPAddress}}{
  4. {end}}' container_name_or_id

然后进入 Kibana 容器内部,修改 kibana.yml 中的ip

  1. $ docker exec -it kibana容器id /bin/bash
  2. $ cd config
  3. $ vi kibana.yml
  4. #
  5. # ** THIS IS AN AUTO-GENERATED FILE **
  6. #
  7. # Default Kibana configuration for docker target
  8. server.name: kibana
  9. server.host: "0"
  10. elasticsearch.hosts: [ "http://elasticsearch:9200" ]
  11. xpack.monitoring.ui.container.elasticsearch.enabled: true

只需要将上面的 "http://elasticsearch:9200" 中的 elasticsearch 替换成上一步的es容器内部ip就可以了。

修改完成之后退出容器,重新启动即可 docker restart kibana容器id

问题3:系统防火墙造成的问题

docker logs kibana打印日志,报错:

  1. {"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/"}
  2. {"type":"log","@timestamp":"2020-06-04T08:25:57Z","tags":["warning","elasticsearch","admin"],"pid":6,"message":"No living connections"}

容器 ip 是没问题的,es 服务也确实起了,为什么呢??这个问题花了我大半天的时间,找遍了网上的教程都, 翻了官网上kibana手册,都没有相关的记录

只能自己摸索

进入kibana容器中

  1. docker exec -it kibana /bin/bash
  2. bash-4.2$ ping 172.17.0.2 #没有问题,能ping通
  3. ...
  4. bash-4.2$ curl http://120.79.43.44:9200
  5. curl: (7) Failed connect to 120.79.43.44:9200; No route to host

问题就出在这里!容器之间无法进行通信,猜测是防火墙的问题,再单独搜索这个问题,找到了解决的方案

依次执行以下命令

  1. nmcli connection modify docker0 connection.zone trusted
  2. systemctl stop NetworkManager.service
  3. firewall-cmd --permanent --zone=trusted --change-interface=docker0
  4. systemctl start NetworkManager.service
  5. nmcli connection modify docker0 connection.zone trusted
  6. systemctl restart docker.service

即把 docker0 加入防火墙白名单

重新启动容器,访问地址 http://localhost:5601 ,显示正在加载 kibana 图像,总算没有了 Kibana server is not ready yet

发表评论

表情:
评论列表 (有 0 条评论,482人围观)

还没有评论,来说两句吧...

相关阅读