无法从 EC2 上的公共 IP 地址访问 node_exporter

Posted

技术标签:

【中文标题】无法从 EC2 上的公共 IP 地址访问 node_exporter【英文标题】:Can't access node_exporter from public ip address on EC2 【发布时间】:2020-12-10 03:54:06 【问题描述】:

我正在 AWS EC2 上设置 prometheus/node_exporter。配置如下

[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target

我可以通过使用带有 localhost 的 curl 来访问指标。类似于以下内容

curl localhost:9100/metrics

我也可以通过私有 IP 地址访问指标。例如

curl private_ip_address:9100/metrics

但是,当我尝试通过公共 IP 地址访问它时。它不工作,卷曲超时。

curl public_ip_address:9100/metrics

我尝试从服务器本身和本地计算机从ipv4:9100 访问。两者都遇到了同样的问题。

如何启用以使其可从 ipv4 地址访问?

【问题讨论】:

如果它从内部被阻止,也许你有一些防火墙(例如ufw)阻止了实例上的端口? @Marcin 我已经将端口 9000 也添加到了防火墙中。 您可以暂时禁用 ufw 以仔细检查它的效果吗? @Marcin 已解决。我需要在我的 AWS 安全组中添加自定义 TCP 入站规则。 【参考方案1】:

默认情况下,EC2 实例不允许直接访问端口。

如果不存在,则需要在入站规则中为端口9100创建Custom TCP规则。

如果您还配置了防火墙,则还需要允许端口9100

您可以测试远程端口是否可达(参考:https://***.com/a/9463554/664229):

nc -zvw 5 <ip> <port>

【讨论】:

以上是关于无法从 EC2 上的公共 IP 地址访问 node_exporter的主要内容,如果未能解决你的问题,请参考以下文章

无法通过公共 ip 访问 EC2 实例上的站点

ec2 实例无法在没有弹性 IP 地址的情况下访问公共子网中的互联网?

无法通过PHP中的fsockopen访问ec2实例,指向我的ec2公共IP和指定端口

出现“无法访问此站点”错误的 EC2 实例

我为AWS EC2实例更改了区域。但我无法从新的IP地址和公共DNS看到一个网站

如何通过公共 IP 地址访问我的 node.js 服务器?