【发布时间】:2018-04-22 20:53:55
【问题描述】:
我是 AWS 领域的新手,我设置了一个 EC2 实例并安装了 ElasticSearch,以尝试使用它的功能并了解更多信息。我有 ElasticSearch 工作:我可以远程向 ES 服务发送 curl 请求并返回结果。
但是,我无法远程访问 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,但它们都不允许我访问连接。 p>
然后我转到我的 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 地址。似乎某些东西已经绑定到端口 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 帖子 like this one,并尝试了他们的答案(在上面的工作流程中)。任何人有任何想法是什么导致了这个错误?
编辑:我已经能够在我的本地实例上启动 Kibana,并且能够连接到我的 ElasticSearch 服务。我刚刚将本地 kibana.yml 文件中的设置更改为指向我的 EC2 实例端口 9200。但我仍然很想知道为什么我无法访问我的 EC2 实例上的 Kibana!
【问题讨论】:
-
将 Kibana 绑定到
0.0.0.0 -
@DusanBajic 我做了-在我的笔记中我说我尝试了 0.0.0.0 以及 EC2 IP
-
你能显示绑定到0.0.0.0时的错误是什么(因为上面的状态
where the XX.XX... represent my EC2 instance IP address) -
@DusanBajic 所以我已经放弃了这个问题,只是在我的本地机器上设置了 Kibana。我在一个新的 EC2 实例上重新安装了 Kibana,这次确保 ES 和 Kibana 之间的版本匹配。现在它起作用了!谢谢!
标签: amazon-web-services elasticsearch amazon-ec2 kibana