ども、 cloudpackかっぱ (@inokara) です。

はじめに

2015 年もやっぱ ElasticsearchKibana だよねって鼻歌交じりでセットアップしていたら以下のようなエラーが出てしまったので対処方法をメモしておきたいと思います。
Elasticsearch 1.4 で Kibana 3 が Connection Failed というエラーが出てしまった時の対処: エラー画面

参考

原因と対処

原因

原因という書き方をする「問題」という風に取られてしまいそうですが、上記の参考にもあるように Elasticsearch 1.4 以降はセキュリティ向上を目的として CORS がデフォルトで無効となったようです。(※ CORS とはクロスオリジンリソースシェアリングのことでブラウザがオリジン以外のサーバーからデータを取得する仕組みです。)

なるほど。

対処

対処としては、こちらを参考にして Elasticsearch の設定(elasticsearch.yml)に以下を追加して CORS を有効にしました。

http.cors.enabled: true
http.cors.allow-origin: http://xxx.xxx.xxx.xxx

http.cors.enabled: true で CORS を有効にします。さらに http.cors.allow-origin: http://xxx.xxx.xxx.xxx で CORS を許可するオリジン URL を正規表現で指定してあげています。

上記を指定した後で Elasticsearch を再起動します。

sudo service elastic search restart

再起動後に改めて Kibana にアクセスすると正常にデフォルトページが表示されるはずです。

今日の知見

以下のような知見を得ました。

  • Elasticsearch 1.4 以降は CORS はデフォルトで無効になっています(セキュリティ向上の為)
  • CORS を有効にするには Elasticsearch 側で http.cors.enabledtrue にします
  • また、オリジンを http.cors.allow-origin を使って制限すると更に良いでしょう

お疲れさまでした。

元記事はこちらです。
Elasticsearch 1.4 で Kibana 3 からアクセスした際に Connection Failed というエラーが出てしまった時の対処