簡體   English   中英

無法在EC2實例上遠程訪問Kibana

[英]Cannot access Kibana remotely on EC2 instance

我是AWS領域的新手,並設置了EC2實例並安裝了ElasticSearch,以嘗試其功​​能並了解更多信息。 我正在使用ElasticSearch:我可以將curl請求遠程發送到ES服務並獲取結果。

但是,我無法遠程訪問Kibana。 我首先進入我的kibana.yml文件並啟用以下設置:

# Kibana is served by a back end server. This setting specifies the port to use.
server.port: 5601

# Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values.
# The default is 'localhost', which usually means remote machines will not be able to connect.
# To allow connections from remote users, set this parameter to a non-loopback address.
server.host: "127.0.0.1"

注意:對於server.host ,我嘗試使用0.0.0.0 ,我的EC2實例的實際IP地址和127.0.0.1 ,但它們都不允許我的連接訪問。

然后,我進入我的AWS控制台並檢查以確保我的安全組具有正確的權限: 在此處輸入圖片說明

然后,我開始了我的Kibana服務:

service kibana start

在我的SSH終端中,我能夠執行curl localhost:5601並收到有效的響應:

<script>var hashRoute = '/app/kibana';
var defaultRoute = '/app/kibana';

var hash = window.location.hash;
if (hash.length) {
  window.location = hashRoute + hash;
} else {
  window.location = defaultRoute;
} 

但是,如果我使用Postman,瀏覽器或從本地計算機curl到遠程訪問Kibana( curl XXX.XX.XX.XXX:5601 XXX.XX.XX.XXX:5601),則會收到“ Connection refused錯誤。

接下來,我嘗試使用vi /var/log/kibana/kibana.stderr檢查我的Kibana日志,發現一條有趣的錯誤消息:

    at net.js:1408:9
    at _combinedTickCallback (internal/process/next_tick.js:83:11)
    at process._tickCallback (internal/process/next_tick.js:104:9)
  cause:
   { Error: listen EADDRNOTAVAIL XX.XXX.XX.XX:5601
       at Object.exports._errnoException (util.js:1020:11)
       at exports._exceptionWithHostPort (util.js:1043:20)
       at Server._listen2 (net.js:1249:19)
       at listen (net.js:1298:10)
       at net.js:1408:9
       at _combinedTickCallback (internal/process/next_tick.js:83:11)
       at process._tickCallback (internal/process/next_tick.js:104:9)
     code: 'EADDRNOTAVAIL',
     errno: 'EADDRNOTAVAIL',
     syscall: 'listen',
     address: 'XX.XX.XX.XX',
     port: 5601 },
  isOperational: true,
  code: 'EADDRNOTAVAIL',
  errno: 'EADDRNOTAVAIL',
  syscall: 'listen',
  address: 'XX.XXX.XX.XXX',
  port: 5601 }

其中XX.XX...代表我的EC2實例IP地址。 似乎端口5601已經綁定了某些內容。因此,我接下來發出sudo lsof -i:5601並看到以下輸出:

> COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME node    3676
> kibana   11u  IPv4  14951      0t0  TCP localhost:esmagent (LISTEN)

我對Linux沒有任何經驗,但這似乎表明kibana已正確綁定到此端口。 因此,在這一點上,我沒有什么新主意。 我已經瀏覽過關於同一問題的此類 SO帖子,並嘗試了答案(在上述工作流程中)。 任何人都知道導致此錯誤的原因是什么?

編輯:我已經能夠在我的本地實例上啟動Kibana,並且能夠連接到我的ElasticSearch服務。 我只是將本地kibana.yml文件中的設置更改為指向EC2實例端口9200。但是我仍然很想知道為什么我無法在我的EC2實例上訪問Kibana!

由於我不確定究竟是什么解決了這個問題,所以答案不多,但是對於將來遇到類似麻煩的用戶,我終止了實例並完全重新安裝了Java 8,Elastic Search和Kibana。 確保ES和Kibana版本號匹配 例如,我使用的是5.6 Kibana,但最初使用的是2.x Elastic Search。

然后,確保入站安全組設置允許ES和Kibana通過TCP訪問端口9200和5601。

然后,如注釋中所述,將Kibana綁定到0.0.0.0。 這就是我的工作。

我知道我沒有給出錯誤的合理理論原因,但是也許這將有助於檢查下一個用戶的清單。

如果您將Kibana作為服務運行,請轉至/etc/kibana/kibana.yml,

server.host: "0.0.0.0"

和不加評論

server.port
elasticsearch.url

Digital Ocean Blog的摘錄在centOs7機器上安裝Elastic Stack- “在使用Kibana Web界面之前,我們必須設置一個反向代理。現在讓我們使用Nginx進行。

安裝Nginx因為我們將Kibana配置為偵聽localhost,所以我們必須設置一個反向代理以允許對其進行外部訪問。 我們將為此使用Nginx。

注意:如果您已經擁有要使用的Nginx實例,請隨意使用它。 只需確保配置Kibana,以便Nginx服務器可以訪問它(您可能希望將/opt/kibana/config/kibana.yml中的主機值更改為Kibana服務器的私有IP地址)。

對我來說,此問題已通過在Windows防火牆https://www.windowscentral.com/how-open-port-windows-firewall中為端口5601(默認)添加入站規則來解決

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM