EC2上Prometheus服务运行正常但浏览器无法访问求助
已在AWS EC2实例上完成Prometheus安装配置,通过SSH确认服务状态正常,但外部浏览器无法访问。已开放安全组的9090、9100、9093端口,以下是systemctl status prometheus的输出(日志内容被截断):
Nov 22 16:20:03 ip-172-31-22-19 prometheus[462]: level=info ts=2022-11-22T16:20>
Nov 22 16:20:03 ip-172-31-22-19 prometheus[462]: level=info ts=2022-11-22T16:20>
Nov 22 16:20:03 ip-172-31-22-19 prometheus[462]: level=info ts=2022-11-22T16:20>
Nov 22 16:20:03 ip-172-31-22-19 prometheus[462]: level=info ts=2022-11-22T16:20>
Nov 22 16:20:03 ip-172-31-22-19 prometheus[462]: level=info ts=2022-11-22T16:20>
Nov 22 16:20:03 ip-172-31-22-19 prometheus[462]: level=info ts=2022-11-22T16:20>
Nov 22 16:20:03 ip-172-31-22-19 prometheus[462]: level=info ts=2022-11-22T16:20>
Nov 22 16:20:08 ip-172-31-22-19 prometheus[462]: level=info ts=2022-11-22T16:20>
Nov 22 16:20:08 ip-172-31-22-19 prometheus[462]: level=info ts=2022-11-22T16:20>
Nov 22 16:20:08 ip-172-31-22-19 prometheus[462]: level=info ts=2022-11-22T16:20>
排查步骤
检查Prometheus监听地址
Prometheus默认可能仅监听127.0.0.1,导致外部无法访问。编辑Prometheus配置文件(通常路径为/etc/prometheus/prometheus.yml),找到web.listen-address配置项,修改为0.0.0.0:9090以允许所有IP访问。修改后重启服务:sudo systemctl restart prometheus执行以下命令确认监听状态,输出需包含
0.0.0.0:9090或:::9090:ss -tulpn | grep prometheus验证VPC网络ACL设置
除安全组外,VPC的网络ACL也可能拦截流量。检查实例所在子网的网络ACL,确保入站规则允许9090、9100、9093端口的TCP流量(源地址设为0.0.0.0/0或你的IP范围),出站规则允许响应流量返回。检查实例本地防火墙
EC2实例自带的防火墙(iptables/ufw)可能阻止外部访问。查看iptables规则:sudo iptables -L -n若使用ufw,查看状态:
sudo ufw status若未允许目标端口,执行以下命令添加规则:
sudo ufw allow 9090/tcp sudo ufw allow 9100/tcp sudo ufw allow 9093/tcp确认访问地址正确性
浏览器必须使用EC2实例的公网IP或弹性IP访问,格式为http://<公网IP>:9090,内网IP仅在VPC内部可访问。查看完整Prometheus日志
截断日志无法提供完整信息,执行以下命令获取实时日志,排查绑定失败或启动异常:sudo journalctl -u prometheus -f重点关注包含
listen或address的日志行,确认服务是否成功绑定到目标端口。
内容的提问来源于stack exchange,提问作者Amira Elsayed Ismail

