【问题标题】:Cannot access Kibana remotely on EC2 instance无法在 EC2 实例上远程访问 Kibana
【发布时间】: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


【解决方案1】:

这不是一个很好的答案,因为我不确定究竟是什么解决了这个问题,但是对于遇到类似头痛的未来用户,我终止了我的实例并完全重新安装了 Java 8、Elastic Search 和 Kibana。我确保 ES 和 Kibana 版本号匹配。例如,我使用的是 5.6 Kibana,但最初使用的是 2.x Elastic Search。

然后,确保您的入站安全组设置允许 TCP 访问 ES 和 Kibana 的端口 9200 和 5601。

然后,如 cmets 中所述,将 Kibana 绑定到 0.0.0.0。这就是让我工作的原因。

我知道我没有给出错误的良好理论原因,但也许这将有助于为下一个用户检查列表中的一些内容。

【讨论】:

  • 这适用于我的 EC2 M5 Ubuntu 实例。您真的需要外部访问 Elasticsearch 吗?
  • @CraigJacobs 不,当我在一年前问这个问题时,我对网络还很陌生......我想如果我要再次实施该解决方案,我可能会在 VPC 后面构建这个设置今天,只需将 AWS 上的 VPN 安全组列入白名单。
【解决方案2】:

如果您将 Kibana 作为服务运行,请转到 /etc/kibana/kibana.yml 并制作

server.host: "0.0.0.0"

并取消注释

server.port
elasticsearch.url

【讨论】:

    【解决方案3】:

    摘自数字海洋博客Install Elastic Stack on centOs7 machine - “在我们可以使用 Kibana 网络界面之前,我们必须设置一个反向代理。让我们现在使用 Nginx 来完成。

    安装 Nginx 因为我们将 Kibana 配置为侦听 localhost,所以我们必须设置反向代理以允许外部访问它。为此,我们将使用 Nginx。

    注意:如果您已经有一个想要使用的 Nginx 实例,请随意使用它。只需确保配置 Kibana 以便您的 Nginx 服务器可以访问它(您可能希望将 /opt/kibana/config/kibana.yml 中的主机值更改为您的 Kibana 服务器的私有 IP 地址)。 "

    【讨论】:

      【解决方案4】:

      对我来说,通过在 Windows 防火墙 https://www.windowscentral.com/how-open-port-windows-firewall 中添加端口 5601(默认)的入站规则解决了这个问题

      【讨论】:

        猜你喜欢
        • 2022-06-10
        • 1970-01-01
        • 2021-02-20
        • 1970-01-01
        • 2017-11-07
        • 1970-01-01
        • 2020-07-19
        • 2017-05-03
        • 2023-04-06
        相关资源
        最近更新 更多