从托管我自己的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是最近发布的,因此上述内容对于调试很有帮助。

07-24 09:38
查看更多