我是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
,但都没有允许我的连接访问。
然后我转到我的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!
答案 0 :(得分:2)
这不是一个答案,因为我不确定究竟是什么解决了问题,但对于未来的用户经历了类似的头痛,我终止了我的实例并完全重新安装了Java 8,Elastic Search和Kibana。我确保ES和Kibana版本号匹配。例如,我最初使用的是5.6 Kibana,但是使用了2.x Elastic Search。
然后,确保您的入站安全组设置允许TCP访问端口9200和5601,ES和Kibana。
然后,如评论中所述,将Kibana绑定到0.0.0.0。这就是我的工作。
我知道我没有给出错误的理论上的理由,但这可能有助于检查下一个用户列表中的一些内容。
答案 1 :(得分:1)
如果您将Kibana作为服务运行,则转到/etc/kibana/kibana.yml并制作
server.host: "0.0.0.0"
取消注释
server.port
elasticsearch.url
答案 2 :(得分:0)
摘自数字海洋博客Install Elastic Stack on centOs7 machine - &#34;在我们使用Kibana Web界面之前,我们必须设置反向代理。我们现在就用Nginx来做。
安装Nginx 因为我们将Kibana配置为侦听localhost,所以我们必须设置反向代理以允许外部访问它。我们将使用Nginx来实现此目的。
注意:如果您已经有一个想要使用的Nginx实例,请随意使用它。只需确保配置Kibana,以便Nginx服务器可以访问它(您可能希望将主机值更改为/opt/kibana/config/kibana.yml到您的Kibana服务器的私有IP地址)。 &#34;
答案 3 :(得分:0)
对我来说,此问题已通过在Windows防火墙https://www.windowscentral.com/how-open-port-windows-firewall中为端口5601(默认)添加入站规则来解决。