介绍
Kibana是一个单页Web应用
首先,Kibana是一个单页的web应用。何为单页web应用?即所有的页面的读取都是在浏览器上完成,而与后台服务器无关。与后台服务器的通信只关乎数据,而非页面。所以,应用上所有的UI都被打包在一起,一次性的发送到了浏览器端,而不是通过URL到后台进行获取。所以,我们看到kibana的首页是下面这样的:
http://localhost:5601/app/kibana#/
注意这里的#后,代表#后面的内容会被浏览器提取,不往服务器端进行url的情况,而是在浏览器上进行内部重新渲染。因为所有的页面都是存储在浏览器的,所有在初次访问的时候,会加载大量的代码到浏览器端,这些代码都是被压缩过的bundle文件
Kibana可视化管理页面详细使用说明
Discover:日志管理视图 主要进行搜索和查询
Visualize:统计视图 构建可视化的图表
Dashboard:仪表视图 将构建的图表组合形成图表盘
Timelion:时间轴视图 随着时间流逝的数据
APM:性能管理视图 应用程序的性能管理系统
Canvas:大屏展示图
Dev Tools: 开发者命令视图 开发工具
Monitoring:健康视图 请求访问性能预警
Management:管理视图 管理工具
其中最主要也是最常用到的是前三个以及最后一个管理角色和用户包括创建索引,
Kibana优化过程(Optimize)过长或无法结束的解决方案
注意 : 需要在kibana下安装x-pack,生成optimize。
Nodejs内存机制对Kibana优化的影响
因为Kibana的代码体量越来越大,将所有的代码加载到内存之后,再解析语法树,进行bundle的转换所耗费的内存已经接近1.4G的限制了,当你安装更多插件,比如sentinl的时候,系统往往已经无法为继,导致Kibana无法启动
解决方案
这种情况下,我们需要在Kibana启动的时候,指定NodeJs使用更多的内存。这个可以通过设置Node的环境变量办到。
NODE_OPTIONS="--max-old-space-size=4096"
当然,我的建议是直接指定在kibana的启动脚本当中,修改/usr/share/kibana/bin/kibana文件为:
#!/bin/sh
SCRIPT=$0
# SCRIPT may be an arbitrarily deep series of symlinks. Loop until we have the concrete path.
while [ -h "$SCRIPT" ] ; do
ls=$(ls -ld "$SCRIPT")
# Drop everything prior to ->
link=$(expr "$ls" : '.*-> \(.*\)$')
if expr "$link" : '/.*' > /dev/null; then
SCRIPT="$link"
else
SCRIPT=$(dirname "$SCRIPT")/"$link"
fi
done
DIR="$(dirname "${SCRIPT}")/.."
NODE="${DIR}/node/bin/node"
test -x "$NODE" || NODE=$(which node)
if [ ! -x "$NODE" ]; then
echo "unable to find usable node.js executable."
exit 1
fi
NODE_ENV=production exec "${NODE}" $NODE_OPTIONS --max_old_space_size=3072 --no-warnings "${DIR}/src/cli" ${@}
改动在最后一句:NODE_ENV=production exec “${NODE}” {DIR}/src/cli" ${@}
这样,我们可以保证Kibana能顺利的完成optimize的过程。
kibana内存设置
在kibana的bin目录下的脚本kibana或kibana.bat中添加如下配置。
NODE_OPTIONS="$NODE_OPTIONS --max-old-space-size=200"
修改后重新启动kibana即可生效。
参考链接 :
kibana内存设置 : https://blog.csdn.net/asty9000/article/details/97668067
Kibana优化过程(Optimize)过长或无法结束的解决方案 : https://blog.csdn.net/u013613428/article/details/84966701