我是 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
) 我得到一个 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 地址。好像有些东西已经绑定(bind)到 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 已正确绑定(bind)到此端口。所以在这一点上,我的想法很新鲜。我浏览了 SO 帖子 like this one关于同样的问题,并尝试了他们的答案(在上面的工作流程中)。任何人有任何想法是什么导致了这个错误?
编辑:我已经能够在我的本地实例上启动 Kibana,并且能够连接到我的 ElasticSearch 服务。我刚刚更改了本地
kibana.yml
中的设置文件指向我的 EC2 实例端口 9200。但我仍然很想知道为什么我无法在我的 EC2 实例上访问 Kibana!
最佳答案
这不是一个很好的答案,因为我不确定究竟是什么解决了这个问题,但是对于遇到类似头痛的 future 用户,我终止了我的实例并完全重新安装了 Java 8、Elastic Search 和 Kibana。我 确保 ES 和 Kibana 版本号匹配 .例如,我使用的是 5.6 Kibana,但最初使用的是 2.x Elastic Search。
然后,确保您的入站安全组设置允许 TCP 访问 ES 和 Kibana 的端口 9200 和 5601。
然后,如评论中所述,将 Kibana 绑定(bind)到 0.0.0.0。这就是让我工作的原因。
我知道我没有给出一个很好的理论错误原因,但也许这将有助于为下一个用户检查列表中的一些内容。
关于amazon-web-services - 无法在 EC2 实例上远程访问 Kibana,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47209025/