处理docker中安装的ElasticSearch和Kibana
在同一台电脑的docker中同时安装了ElasticSearch和Kibana,进行关联时出现异常
访问kibana时页面192.168.1.150:5601时显示内容为
Kibana server is not ready yet
这个过程中我查了不少的帖子,说的基本都是以下几个
第一点:KB、ES版本不一致(网上大部分都是这么说的)
解决方法:把KB和ES版本调整为统一版本
第二点:kibana.yml中配置有问题(通过查看日志,发现了Error: No Living connections的问题)
解决方法:将配置文件kibana.yml中的elasticsearch.url改为正确的链接,默认为: http://elasticsearch:9200
改为http://自己的IP地址:9200
第三点:浏览器没有缓过来
解决方法:刷新几次浏览器。
可能有人解决成功吧..反正我弄了没成
我确认了我的ElasticSearch是正常启动的
访问我的安装ElasticSearch地址http://192.168.1.150:9200/是有信息反馈的
我安装的版本号kibana和ElasticSearch也是没问题的.
后来我换了台机器分别安装kibana和ElasticSearch,这个时候就发现这个问题没有了..
然后考虑预估是安装到同一台机器上相互访问可能有问题.
注意:
这里同一台机器安装kibana和ElasticSearch其实有另一个处理方案就是做容器连接.
我没用连接的方式进行操作,而是用了另一条路子,在服务器中使用容器自己的ip进行关联实现的连接具体过程如下
查看Kibana日志
日志内显示
{"type":"log","@timestamp":"2020-06-23T05:15:08Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"No living connections"}
{"type":"log","@timestamp":"2020-06-23T05:15:12Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"Unable to revive connection: http://192.168.1.150:9200/"}
具体原因是在docker中我没有做直接连接两个容器,使得进行访问时无法进行交互
处理方法是,在docker中查找到两个容器的对应ip地址,将ElasticSearch的ip地址维护到kibana的配置文件内.
docker获取容器和对应ip的方法
docker inspect --format='{{.Name}} - {{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
修改kibana的配置文件kibana.yml
kibana.yml配置文件的位置
/usr/share/kibana/config/
修改方式最好是在本地修改然后覆盖到容器中,比较容易操作
命令
docker cp kibana.yml kibana:/usr/share/kibana/config/kibana.yml
将其中的ElasticSearch地址进行修改
server.name: kibana
server.host: "0.0.0.0"
#elasticsearch.hosts: [ "http://192.168.1.150:9200"]
elasticsearch.hosts: [ "http://172.17.0.4:9200"]
logging.dest : /usr/share/kibana/log/kibana.log
修改后重启kibana,就恢复正常可以访问kibana了
image.png