ES可以从curl到达,但不能从Marvel / Sense到达

时间:2015-02-05 21:36:44

标签: elasticsearch elasticsearch-marvel

我在弹性搜索沉浸的2小时内。我使用Marvel成功安装了ES(在{/ 1}}中配置了config / elasticsearch.yml)并且能够从Sense成功发出请求。我重新启动了我的开发机器,现在当我在Sense上发出以下请求时,它会响应:

marvel.agent.enabled: false

请求(source):

Request failed to get to the server (status code: 0):

Elasticsearch may not be reachable or you may need to check your CORS settings.If CORS is enabled, try turning off Sense's Basic Authentication support under Setting (cog icon).This will result in a less strict CORS enforcement by the browser.
Please check the marvel documentation for more information.

按照指示,我通过在curl上发出类似的请求来检查ES是否可以访问:

请求:

PUT /megacorp/employee/1
{
"first_name" : "John",
"last_name" :  "Smith",
"age" :        25,
"about" :      "I love to go rock climbing",
"interests": [ "sports", "music" ]
}

响应:

curl -XPUT http://localhost:9200/megacorp/employee/100 -d '{ "first_name" : "test" }'

这让我觉得ES可用。

继续进行下一次检查"您可能需要检查您的CORS设置。"。我基于this recommendation

将以下配置添加到elasticsearch.yml(并重新启动ES)
{"_index":"megacorp","_type":"employee","_id":"100","_version":1,"created":true}

但行为没有变化。

切换"支持基本身份验证"在漫威/智能设置中也没有任何影响。

欢迎任何可能出现问题的指示。

7 个答案:

答案 0 :(得分:7)

尝试在其他浏览器上运行marvel / sense html页面,或者以私密/隐身模式运行。我有同样的问题,这样做解决了它。我认为这是由于存储在cookie上的设置或者不确定的东西。

答案 1 :(得分:5)

我也有同样的问题,根据Elasticsearch的文档:http://www.elastic.co/guide/en/marvel/current/configuration.html#cors,你必须启用CORS。

总结一下,打开config /文件夹中的elasticsearch.yml文件并将其放入

http.cors.enabled: true
http.cors.allow-origin: /.*/  
http.cors.allow-credentials: true 

在那里的某个地方,可能是"网络和HTTP"部分。

然后,在我重新启动elasticsearch之后,它在Marvel Sense中对我来说很好。

答案 2 :(得分:1)

因此,在尝试运行命令时,请尝试使用托管服务器的计算机的IP地址,而不是使用http://localhost:9200/_plugin/marvel/sense/index.html。 这对我有用。

答案 3 :(得分:1)

在ES群集日志中(在一个节点中)找到一行类似

的行
[INFO ][http ] [c7_64] bound_address {inet[/0:0:0:0:0:0:0:0:9201]}, publish_address {inet[/192.168.88.128:9201]}

您对publish_address之后的内容感兴趣。访问Sense时,请使用IP:PORT。在我的示例中,Sense URL看起来像这样:

http://192.168.88.128:9201/_plugin/marvel/sense/index.html

CORS部分主要适用于Marvel安装在单独群集中的情况,并且当Marvel安装在与受监控节点相同的群集中时,不应该使用它。当Shield安装在集群中时,它也是needed

答案 4 :(得分:0)

我也有同样的问题。 确保服务器字段不为空。 用本地

填写字段后,我的问题得到了解决

答案 5 :(得分:0)

我遇到了与Chrome相同的问题。清除浏览器数据可以解决我的问题。它在历史之下 - >清除浏览器数据 - >检查cookie和其他网站和插件数据,缓存的图像和文件,自动填充表单数据,托管应用程序数据。

不知道哪个人做了这个伎俩,但那是我的表现和工作方式。希望这会有所帮助。

答案 6 :(得分:0)

与Marvel没有严格关联,但是当我从"外部"连接到弹性搜索时遇到问题。我需要的服务器。

更改主持人正在收听的elasticsearch.yml配置 - listen to all network interfaces

network.host: 0.0.0.0

之后,根据您的服务器,您应该打开防火墙上的tcp端口(如果您使用elasticsearch的默认端口:9200)。例如,在Centos(或RHEL)上,您应该运行:

sudo firewall-cmd --zone=public --add-port=9200/tcp --permanent
sudo firewall-cmd --reload