1. 程式人生 > >Kibana和Elasticsearch允許外網訪問

Kibana和Elasticsearch允許外網訪問

ElasticSearch(下文簡稱ES)是一個基於Lucene的搜尋伺服器,它提供了一個分散式多使用者能力的全文搜尋引擎。Kibana則是一款開源的分析與視覺化平臺,可以用來與ES進行互動,通過視覺化介面來檢視和操作ES中的資料。預設情況下這兩個軟體只允許通過本機localhost訪問。本文分享如何通過設定使得這兩者可以被同一網路中的其他機器訪問。

我們先看一下在使用預設設定時,當我們嘗試通過IP地址去訪問ES的服務(在9200埠)時,會得到如下結果

$ curl 10.0.0.141:9200
curl: (7) Failed to connect to 10.0.0.141 port 9200: Connection refused

從提示結果可以看到,ES服務拒絕了我們的訪問,這是因為ES服務預設監聽的主機是localhost,如果希望通過IP進行訪問,需要設定其監聽0.0.0.0。這個地址表示的是所有未知的主機和目的網路的集合。對於Kibana也是一樣的道理,因此以下只闡述ES的配置方法

具體來說,分為兩步走,首先要找到ES的配置檔案,在不同的系統中配置檔案存放的路徑也不同。對於Mac系統來說,如果是通過brew安裝的ES,那麼可以通過以下命令來檢視配置檔案的位置

$ brew info elasticsearch
elasticsearch: stable 6.2.3, HEAD
Distributed search & analytics engine
https://www.elastic.co/products/elasticsearch
/usr/local/Cellar/elasticsearch/5.6
.3 (217 files, 124MB) * Built from source on 2017-11-07 at 16:32:00 From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/elasticsearch.rb ==> Requirements Required: java = 1.8 ✔ ==> Options --HEAD Install HEAD version ==> Caveats Data: /usr/local/var/lib/elasticsearch/elasticsearch_gao-yimei/ Logs: /usr/local/var/log/elasticsearch/elasticsearch_gao-yimei.log Plugins: /usr/local/var/elasticsearch/plugins/ Config: /usr/local/etc/elasticsearch/ To have launchd start elasticsearch now and restart at login: brew services start elasticsearch Or, if
you don't want/need a background service you can just run: elasticsearch

結果中的Config標識了配置檔案所在的目錄。進入該目錄,可以看到一個名為elasticsearch.yml的配置檔案,通過less命令檢視並搜尋host可以找到一個network.host的配置引數,我們只需要將該引數前的#號去掉,並將該值設定為0.0.0.0並儲存即可。注意第一個0與引數名之間需要有一個空格,這是配置檔案的格式要求

修改完成後,還需要一步,那就是重新啟動ES伺服器,對於Mac使用者,可以通過以下命令重啟服務:

$ brew services restart elasticsearch  
Stopping `elasticsearch`... (might take a while)
==> Successfully stopped `elasticsearch` (label: homebrew.mxcl.elasticsearch)
==> Successfully started `elasticsearch` (label: homebrew.mxcl.elasticsearch)

等待兩三分鐘後,服務即可穩定,此時再通過IP訪問ES服務,就可以正常使用

值得注意的是,當我們這樣設定以後,同一網路中的所有裝置都能隨意地訪問到本機的ES服務,包括所有儲存在ES中的資料,這是一個比較危險的操作,因此請謹慎使用。另外,對於其他很多不同的軟體,也存在這種預設情況下不允許通過IP訪問的問題,設定的方式和ES大同小異,可以參考上述的操作流程。