像往常一样开机,敲入命令运行kibana,但突然报系统配置性,无法启动,如下:
# 以调试模式启动kibana
# ./kibana.bat --dev --no-base-path
Kibana did not load properly. Check the server output for more information.
以为是自己失手改动了关键配置,但以普通方式启动,一切又表现正常。
# 以普通方式启动
./kibana.bat -q
打开日志系统进行调试,却发现是权限错误:
# 打开服务器调试日志
./kibana.bat --dev --no-base-path -l e:\kibana.log
错误信息如下:
"statusCode":403,"req":{"url":"/bundles/commons.style.css?v=8467","method":"get"
"statusCode":403,"req":{"url":"/bundles/kibana.style.css?v=8467","method":"get"
"statusCode":403,"req":{"url":"/bundles/commons.bundle.js?v=8467","method":"get"
翻阅源码,找到src\optimize\index.js文件,提供服务的代码如下:
const bundles = kbnServer.bundles;
server.exposeStaticDir('/bundles/{path*}', bundles.env.workingDir);
await bundles.writeEntryFiles();
继续查看exposeStaticDir方法,发现问题依旧不在这里。
server.decorate('server', 'exposeStaticDir', function (routePath, dirPath) {
this.route({
path: routePath,
method: 'GET',
handler: {
directory: {
path: dirPath,
listing: false,
lookupCompressed: true
}
},
// 并没有打开权限管理
config: { auth: false }
});
});
看来看去,唯一的问题只可能是文件系统的问题了,试着以管理员身份运行powershell,再次敲入命令“./kibana.bat –dev –no-base-path -q”,这次kibana终于正常工作了。
事后,还发现另外一种解决办法,以MINGW64运行Kibana命令,也可以正常工作,如下:
# 请勿加上.bat后缀名
bin/kibana --dev --no-base-path
结论
由于文件系统的权限问题,导致kibana的调试模式无法正常工作,解决办法共有两种,分别为增加管理员权限与linux终端模拟。