一、文章解决的问题

  1. 本文解决的是由于服务器内存过小导致kibana启动不成功的问题。此外,如果你想要在内存不够大的服务器体验一下elasticsearch和kibana的使用,相信本文也能够给予你一定的帮助

二、过程中遇到的问题

  1. 作者使用的是docker安装的方式,并且elasticsearch和kibana的版本都是7.4.2,elasticsearch成功启动,但是kibana死活启动不起来,启动后服务器内存飙升卡死,访问5601端口后kibana直接stop。
  1. 这里请确保kibana和elasticsearch的版本一致,避免一些不必要的问题

三、解决问题的过程

  1. 如果你也出现了服务器卡死,之后kibana自动关闭的情况,那么很可能是因为kibana占用内存过高导致,因此我们通过以下操作来修改node.js 最大占用内存大小,由于我们一启动直接卡死,因此我通过将容器内文件拷贝出来修改再覆盖回去的方式。
1、docker cp kibana容器id:/usr/share/kibana/bin/kibana /mydata/kibana  //将kibana的运行文件拷贝出来
2、vim kibana
3、在最后一行之前加上
NODE_OPTIONS="${NODE_OPTIONS:=--max-old-space-size=256}"
结果如下图所示

Kibana连接已有ES kibana连接es超时_elasticsearch

4、docker cp /mydata/kibana kibana容器id:/usr/share/kibana/bin/kibana //将kibana的运行文件覆盖回去
5、docker restart kibana容器id  //重启kibana
  1. 之后发现kibana启动不起来,于是使用以下命令来查看kibana日志信息
1、docker logs kibana容器id
//可以看到以下错误信息

Kibana连接已有ES kibana连接es超时_服务器_02

//意思是elasticsearch中存在.kibana_task_manager_1这个重复索引,这是由于之前kibana启动失败的过程中创建的节点没有删除导致这次节点创建失败导致的启动失败
//ps:此处可能除了 .kibana_task_1这个重复索引,这是由于之前之外还有.kibana_1,于是在命令行输入以下命令来删除
2、curl -XDELETE http://elasticsarch所在ip:9200/.kibana_1
3、curl -XDELETE http://elasticsarch所在ip:9200/.kibana_task_1
之后重启kibana
4、docker restart kibana容器id,可以正常访问5601,成功界面如下

Kibana连接已有ES kibana连接es超时_服务器_03

四、启发

  1. 在遇到问题的时候在网上查阅解决方案的同时,也要学会查看日志,才可以对症下药快速解决问题

五、参考

elasticsearch官网解决这个问题的交流