繁体   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