Elasticsearchを1.4以降からセキュリティの関係でクロスドメイン通信が無効にされています。
この関係で、Elasticsearch1.3系から1.5系に上げたらkibana3がElasticsearchに接続できなくなったので、対処をメモ。
というか、エラーメッセージに書いてある通りのことすればいいんですけどね。
Connection Failed
Possibility #1: Your elasticsearch server is down or unreachable
This can be caused by a network outage, or a failure of the Elasticsearch process. If you have recently run a query that required a terms facet to be executed it is possible the process has run out of memory and stopped. Be sure to check your Elasticsearch logs for any sign of memory pressure.
Possibility #2: You are running Elasticsearch 1.4 or higher
Elasticsearch 1.4 ships with a security setting that prevents Kibana from connecting. You will need to set the following in your elasticsearch.yml:
- http.cors.enabled: true
- http.cors.allow-origin to the correct protocol, hostname, and port (if not 80) that your access Kibana from. Note that if you are running Kibana in a sub-url, you should exclude the sub-url path and only include the protocol, hostname and port. For example, http://mycompany.com:8080, not http://mycompany.com:8080/kibana.
Click back, or the home button, when you have resolved the connection issue
前提
- Elasticsearch 1.5.2
- Kibana 3.1.2
- Elasticsearchとkibanaはそれぞれ別のhostで動いている
- elasticsearch.masasuzu.local
- kibana3.masasuzu.local
対処
elasticsearch.ymlに下記の設定を追記ししてElasticsearchを再起動します。
http.cors.enabled: true http.cors.allow-origin: http://kibana3.masasuzu.local
http.cors.allow-originはデフォルトだと*になっていて良くないので、変えておきます。この設定は構成によって変わりうります。