Kibana坚持加载屏幕[UPDATE - Nginx仅提供部分JS文件]

时间:2017-03-02 21:26:28

标签: javascript elasticsearch nginx browser kibana

Kibana没有正常启动。当我打开控制台时,它似乎是一个javascript资源问题。当我直接打开js文件(点击它们在控制台中的链接)时,它们看起来是不完整的,并且突然被切断了。不确定这是否是浏览器文件限制或某种方式我的文件已被切断?请看下面的图片,向您展示我所看到的。

Kibana stuck on loading screen

在chrome中看到的文件。根据chrome的加载方式,这是文件的最底部。

commons.bundle.js

我已经重新启动了kibana,看看是否可以解决它,没有运气。

我认为浏览器在js文件中有最大行限制。我不确定为什么kibana没有缩小js文件?它是以某种开发模式启动的吗?

问题摘要

我想我已经发现kibana没有加载的原因是因为js没有完全加载,这会改变我的问题,我怎样才能加载我的所有javascript?

更新

我已将JS文件放在kibana bundles文件夹中,发现该文件完好无损。它确实是一个加载完整文件问题的浏览器。我很困惑为什么突然间这些文件太长而无法被浏览器加载?两周前工作正常。仍然试图找出如何让Chrome加载文件。

正如@asettouf所建议的那样,我删除了bundles目录中的/opt/kibana/optimize文件夹并重新启动了kibana。这确实重新生成了bundles文件夹,但文件是相同的,这意味着我仍然有同样的问题。为什么Kibana在捆绑文件进行缓存时不会缩小js?

我的 kibana.yml 。我认为粘贴链接更简洁:

  

http://www.heypasteit.com/clip/O8HUN

返回打开详细日志记录,这是我删除优化文件夹并重新启动的输出。没有什么是对我的错误信息。

/var/log/kibana/kibana.log

出于隐私和安全原因,将localname替换为localhost

  

http://www.heypasteit.com/clip/OA4OR

我认为这是一个错误,webpack模块没有正确编译JS。但是我不太了解模块来调试它。

优化文件夹中的相关文件是:

commons.bundle.js 65723行

108950行

kibana.bundle.js

这些远未优化,文件内的内容也没有缩小。

curl -v localhost:5601

的结果
  

http://www.heypasteit.com/clip/OEKEX

直接向KIBANA JS资源请求

我可以确认curl -ukibanaadmin -v http://localhost/bundles/commons.bundle.js返回完整的108950内存JS文件,curl -ukibanaadmin -v http://actual_kibana_hostname/bundles/commons.bundle.js返回与浏览器相同的内容(行数)。

根据这些信息,我可以假设这根本不是Kibana问题。正如@val所提到的,它可能是nginx中的一个设置,它阻止整个文件被提供,除非被localhost访问。

我想我可以排除Cloudflare,因为当我直接从浏览器点击我的服务器时,我仍然会遇到问题。

到目前为止,

感谢给大家的建议和帮助。越来越接近解决我的问题。我将对Nginx及其设置进行更多研究。

NGINX更新

Nginx似乎只加载我的havascript文件的前72kbs。我在我的nginx配置文件周围搜索,无法在任何地方看到此设置。我添加了像

这样的东西
location / {
    ...
    proxy_max_temp_file_size 1m;
    ...
}

location / {
    ...
    sendfile on;
    sendfile_max_chunk 1m;

    ...
}

但我仍然无法覆盖这个只允许加载文件第一部分的奇怪设置。

该连接使用nginx proxy_pass将端口80发送到kibanas端口' 5601'。我觉得可能有一个限制文件传输超过代理的设置?只是不确定在哪里找到它。

proxypass连接如下所示:

server {
    listen 80;

    server_name logs.mydomain.com;

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/htpasswd.users;

    location / {
        proxy_pass http://localhost:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

我的默认nginx设置已在此处发布。

/etc/nginx/nginx.conf

  

http://www.heypasteit.com/clip/OEKIR

我尝试添加sendfile_max_chunk 512k并将worker_processes从4更改为2.任何其他配置内容已经存在。我不是那个最初建立ELK堆栈的人。

在提到的更改后,它看起来像这样:

/etc/nginx/nginx.conf

  

http://www.heypasteit.com/clip/OEKF0

错误返回 - 磁盘空间更新

这个问题又回来了。当我检查VMs运行状况时,我注意到磁盘驱动器已满。 Elasticsearch每天都会将少量GBs个文本记录到错误日志中。我仍然没有完全确定为什么弹性搜索充斥着错误日志。

但我认为过多的磁盘空间使用导致了这个错误。 Nginx可以检测到这一点并切换到最小安全配置,这样只允许每个文件提供72kbs的数据。

当我清除过多的日志时,我不再需要重新启动nginxkibana而停止获取不完整的js错误。

1 个答案:

答案 0 :(得分:2)

由于您在代理后面访问Kibana,您需要绕过代理并查看问题是否仍然存在,即比较

的加载时间
// through proxy
curl -v kibana_host/bundles/commons.bundle.js
curl -v kibana_host/bundles/kibana.bundle.js

// bypass proxy
curl -v localhost:5601/bundles/commons.bundle.js
curl -v localhost:5601/bundles/kibana.bundle.js

如果绕过代理时加载时间较短,那么您知道这不是Kibana问题,而是配置代理的方式更多。

<强>更新

由于我们已将此范围缩小到代理问题,请尝试使用此更新您的nginx配置

sendfile_max_chunk 512k
worker_processes 2

更新2

尝试对nginx配置进行另一次修改:

proxy_buffering: off;