在浏览器输入http://192.168.101.65:5601/ 访问kibana报错
Kibana server is not ready yet
首先查看kibana的日志
docker logs kibana
看到报错如下:
{"type":"log","@timestamp":"2023-10-07T07:03:20+00:00","tags":["warning","elasticsearch"],"pid":6,"message":"No living connections"}
{"type":"log","@timestamp":"2023-10-07T07:03:20+00:00","tags":["warning","plugins","licensing"],"pid":6,"message":"License information could not be obtained from Elasticsearch due to Error: No Living connections error"}
{"type":"log","@timestamp":"2023-10-07T07:03:49+00:00","tags":["warning","elasticsearch"],"pid":6,"message":"Unable to revive connection: http://es:9200/"}
那就大概明白是和elasticsearch的连接有问题
可能出现问题的地方有:
1. Elasticsearch没有启动。
2.Elasticsearch和Kibana版本不一致。
2. Kibana未能连接到Elasticsearch。默认情况下,Elasticsearch使用端口9200和9300。
4. Elasticsearch的索引不可用。请尝试通过访问`http://localhost:9200/.kibana`来访问看看能否有信息。
5. Kibana的配置文件存在问题。请检查Kibana配置文件中是否有任何错误或不正确的设置。您可以在Kibana日志文件中查找更多信息,该文件通常位于Kibana安装目录下的logs文件夹中。
docker images
检查镜像,可以看到版本是一致的,因此不是这个问题
- # 临时启动
- docker run --name kibana -d -p 5601:5601 kibana:8.0.1
-
- # 宿主机 创建一个 用于存储kibana config文件夹
- mkdir -p kibana
-
- # docker cp 拷贝 kibana/config 到 宿主机对于的配置文件夹
- docker cp kibana:/usr/share/kibana/config /data/soft/kibana
先输入192.168.101.65:9200看看elasticsearch是否正常启动,一般不出现error就是连接上了
在输入192.168.101.65:9200/.kibana查看elasticsearch是否连接上了kibana,出现以下数据基本就没有问题了
然后输入192.168.101.65:5601看是否成功显示
首先你得知道自己的kibana的yaml配置在哪,先运行kibana起来,然后执行以下命令
- # 临时启动
- docker run --name kibana -d -p 5601:5601 kibana:7.12.1
-
- # 在宿主机的任意一个位置创建用于存储kibana config文件夹
- mkdir -p kibana
-
- #拷贝kibana/config 到 宿主机的/data/soft/kibana下
- docker cp kibana:/usr/share/kibana/config /data/soft/kibana
然后进入到该目录下,出现以下文件即可
进入到该文件进行编辑
vim kibana.yml
- server.name: kibana
- server.host: "0"
- elasticsearch.hosts: ["http://容器内部ip:9200"]
- xpack.monitoring.ui.container.elasticsearch.enabled: true
注意!!!这里的容器内部ip是docker赋予改容器的ip而不是虚拟机或者本机的ip,当然如果你不是docker部署的就是本机ip。
如果是docker配置的,可以输入以下命令查看elasticsearch的容器内部ip
- docker ps #查看容器内的各个软件的容器id和端口等信息
-
-
- docker inspect 容器id #查看该软件的相关信息
-
记住这个信息,然后去到kibana.yml 中配置
然后重启kibana
docker restart kibana
在重复方案二的步骤查看是否连接成功
停止kibana,再从docker中删除kibana容器
- docker stop kibana
-
- docker rm -f <kibana容器id>
-
再重新拉回kibana然后配置kibana(记得修改里面的ELASTICSEARCH_HOSTS和版本号)
- #拉取kibana
- docker pull kibana:7.12.1
-
-
- #配置kibana
- docker run -d --name kibana -e ELASTICSEARCH_HOSTS=http://172.18.0.2:9200 -p 5601:5601 kibana:7.12.1
首先分别停止elasticsearch和kibana,再从docker中删除elasticsearch和kibana容器(不是删除镜像)
- docker stop kibana
- docker stop elasticsearch
-
- docker rm -f <elasticsearch容器id>
- docker rm -f <kibana容器id>
-
先创建一个网络,方便es和kibana容器互联
docker network create es-net
配置elasticsearch
- #拉取
- docker pull elasticsearch:7.12.1
- #配置es
- docker run -d \
- --name es \
- -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
- -e "discovery.type=single-node" \
- -v es-data:/usr/share/elasticsearch/data \
- -v es-plugins:/usr/share/elasticsearch/plugins \
- --privileged \
- --network es-net \
- -p 9200:9200 \
- elasticsearch:7.12.1
命令解释:
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"
:配置JVM的堆内存大小,默认是1G,但是最好不要低于512M-e "discovery.type=single-node"
:单点部署-v es-data:/usr/share/elasticsearch/data
:数据卷挂载,绑定es的数据目录-v es-plugins:/usr/share/elasticsearch/plugins
:数据卷挂载,绑定es的插件目录-privileged
:授予逻辑卷访问权--network es-net
:让ES加入到这个网络当中-p 9200
:暴露的HTTP协议端口,供我们用户访问的输入以下命令启动elasticsearch
docker start es
然后访问192.168.101.65:9200看看elasticsearch看到以下情况即正常启动
再配置kibana
- #拉取
- docker pull kibana:7.12.1
- #配置
- docker run -d \
- --name kibana \
- -e ELASTICSEARCH_HOSTS=http://es:9200 \
- --network=es-net \
- -p 5601:5601 \
- kibana:7.12.1
命令解释:
--network=es-net
:让kibana加入es-net
这个网络,与ES在同一个网络中-e ELASTICSEARCH_HOSTS=http://es:9200
:设置ES的地址,因为kibana和ES在同一个网络,因此可以直接用容器名访问ES-p 5601:5601
:端口映射配置输入以下信息启动kibana
docker start kibana
然后输入192.168.101.65:5601看是否成功显示页面