ども、 cloudpack の かっぱ (@inokara) です。
はじめに
2015 年もやっぱ Elasticsearch と Kibana だよねって鼻歌交じりでセットアップしていたら以下のようなエラーが出てしまったので対処方法をメモしておきたいと思います。
参考
- reference [1.4] » modules » http
- Elasticsearch 1.4.0.Beta1のリリース
- Kibana returns "Connection Failed"
- Kibana 3 and Elasticsearch 1.4 – CORS problem
原因と対処
原因
原因という書き方をする「問題」という風に取られてしまいそうですが、上記の参考にもあるように 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.enabled
をtrue
にします - また、オリジンを
http.cors.allow-origin
を使って制限すると更に良いでしょう
お疲れさまでした。
元記事はこちらです。
「Elasticsearch 1.4 で Kibana 3 からアクセスした際に Connection Failed というエラーが出てしまった時の対処」