从托管我自己的Elastiscsearch集群到Amazon's Elasticsearch Service后,
我的Kibana仪表板(版本4.0.2和4.1.2)无法加载,并且在kibana.log中收到以下错误:
{
"name": "Kibana",
"hostname": "logs.example.co",
"pid": 8037,
"level": 60,
"err": {
"message": "Not Found",
"name": "Error",
"stack": "Error: Not Found\n at respond (\/srv\/kibana\/kibana-4.1.2-linux-x64\/src\/node_modules\/elasticsearch\/src\/lib\/transport.js:235:15)\n at checkRespForFailure (\/srv\/kibana\/kibana-4.1.2-linux-x64\/src\/node_modules\/elasticsearch\/src\/lib\/transport.js:203:7)\n at HttpConnector.<anonymous> (\/srv\/kibana\/kibana-4.1.2-linux-x64\/src\/node_modules\/elasticsearch\/src\/lib\/connectors\/http.js:156:7)\n at IncomingMessage.bound (\/srv\/kibana\/kibana-4.1.2-linux-x64\/src\/node_modules\/elasticsearch\/node_modules\/lodash-node\/modern\/internals\/baseBind.js:56:17)\n at IncomingMessage.emit (events.js:117:20)\n at _stream_readable.js:944:16\n at process._tickCallback (node.js:442:13)"
},
"msg": "",
"time": "2015-10-14T20:48:40.169Z",
"v": 0
}
不幸的是,此错误不是很有帮助。我认为这是一个包装好的HTTP 404,但是为什么呢?
如何将Kibana安装连接到Amazon的Elasticsearch Service?
最佳答案
使用Amazon的Elasticsearch Service时,请记住以下几点:
修改访问策略需要花费不确定的时间。我发现最好在更改策略后等待状态不再“正在处理”至少15分钟。
它在端口80上侦听HTTP请求,而不在标准端口9200上侦听。请确保您的elasticsearch_url
配置指令反映了这一点,例如:
elasticsearch_url:“ http://es.example.co:80”
您的Kibana实例很可能没有必要的权限来创建它需要向您显示仪表板的索引-这是问题的根源。在Elasticsearch域上检查索引并查找与kibana_index
config指令匹配的行(例如,通过http://es.example.co/_cat/indices)。
例如,如果您的kibana_index
指令的值是.kibana-4
,则看不到以下内容:
green open .kibana-4 1 1 3 2 30.3kb 17.2kb
则您的Kibana索引无法创建所需的索引。如果您转到位于Amazon的Elasticsearch服务的仪表板,然后单击Kibana链接,则可能会为您创建一个
.kibana-4
索引。您可以在现有的Kibana的配置中指定此索引,然后应该看到下一点。
您现有的Kibana安装可能需要通过标头进行身份验证:
Kibana:授权标头需要“ Credential”参数。授权标头需要“签名”参数。授权标头需要“ SignedHeaders”参数。授权标头要求存在“ X-Amz-Date”或“ Date”标头。
您可以在Kibana中进行配置,并可以查看常规signing API request documentation以获得更多帮助。
值得注意的是,该错误消息在Kibana 4.2中据报道更好,但是由于该消息处于beta中,并且Amazon的Elasticsearch Service是最近发布的,因此上述内容对于调试很有帮助。