结论:
因为kibana是使用node.js写的,所以进程在node中。但是查找到的node进程不一定就是kibana的,所以还需要根据端口进一步确认,直接查看5601端口的占用情况,确定下进程ID,然后在查看下node进程的ID,如果一致,就可以确定该node进程就是kiban的进程了。
netstat -tunlp|grep 5601 查看端口占用情况
ps aux | grep node 查看node进程
我在虚拟机里跑了一个单机的ELK,第二天发现web界面不能打开,难道是因为昨天的晚上kibana进程直接被系统杀死了,算了直接重启kibana吧,结果遇到报错如下:
[root@node1 kibana-6.6.1-linux-x86_64]# bin/kibana
log [00:58:15.874] [fatal][root] Error: Port 5601 is already in use. Another instance of Kibana may be running!
at Root.shutdown (/opt/app/kibana-6.6.1-linux-x86_64/src/core/server/root/index.js:53:26)
at Root.start (/opt/app/kibana-6.6.1-linux-x86_64/src/core/server/root/index.js:45:24)
at process._tickCallback (internal/process/next_tick.js:68:7)
at Function.Module.runMain (internal/modules/cjs/loader.js:745:11)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)
FATAL Error: Port 5601 is already in use. Another instance of Kibana may be running!
端口被占用?可能是另外一个kibana在跑?昨天没有进程占用5601,今天有这个情况,重启虚拟机肯定可以解决的,但是如果这个是生产线呢,不能轻易重启Server的。去解决问题去。
那就看下进程,kinaba进程存在不?
[root@node1 kibana-6.6.1-linux-x86_64]# ps aux | grep kibana
root 8380 0.0 0.0 103320 888 pts/3 S+ 08:33 0:00 grep kibana
没有kibana进程,那就看看是不是其他的进程占用了5601 的端口(这个时候还没有意识到kibana进程的名字不叫kinaba)。虽然直觉告诉我不可能有其他应用程序占用这个端口,但是还是看看吧。于是乎,查看占用端口(这个信息是后面补的重启了,原运来查看的记录找不到了):
[root@node1 ~]# netstat -tlnp |grep 5601
tcp 0 0 192.168.56.10:5601 0.0.0.0:* LISTEN 1536/bin/../node/bi
打脸了,竟然有一个node(这个时候还没有想到进程名和应用名不一样,被自己蠢哭,zookeeper,zfkc,遇到那么多进程名字和应用不一样的,结果这个时候却想重启吧,简单粗暴直接,真香!!!)
重启之后,切换用户,启动es,退出,启动kibana,一气呵成。果然还是重启好啊。
去看看kibana进程:
ps aux | grep kibana
root 1567 0.0 0.0 103320 880 pts/0 S+ 09:33 0:00 grep kibana
竟然还没有kibana的进程,这个时候仿佛意识到了什么,然后查看端口:
[root@node1 ~]# netstat -tlnp |grep 5601
tcp 0 0 192.168.56.10:5601 0.0.0.0:* LISTEN 1536/bin/../node/bi
根据查到的Pid1536查找进程:
[root@node1 kibana-6.6.1-linux-x86_64]# ps aux | grep 1536
root 1536 1.3 10.9 1281636 211320 pts/0 Sl 09:10 1:46 bin/../node/bin/node --no-warnings --max-http-header-size=65536 bin/../src/cli
root 1655 0.0 0.0 103320 884 pts/0 S+ 11:23 0:00 grep 1536
果然一个node什么鬼的进程存在,换句话说也就是kinaba启动的进程叫node什么鬼咯。why?
打开谷歌,搜索,找到答案。
原来因为kibana是使用node.js写的,所以进程在node中。但是查找到的node进程不一定就是kibana的,所以还需要根据端口进一步确认,直接查看5601端口的占用情况,确定下进程ID,然后在查看下node进程的ID,如果一致,就可以确定该node进程就是kiban的进程了。
总结一下:
- 为什么web界面打不开,没有找到具体的原因(手动无奈)
- 自己太菜,太喜欢重启了(无奈)