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

目录

问题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 如下:

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

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

通过查看日志,发现了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

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

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


 

你可能感兴趣的:(kibana 报错 server is not ready yet 可能的原因)