You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过YAML与Docker Compose部署Pyroscope对接Grafana云端失败求助

Pyroscope + Grafana 云端部署故障排查(400状态码)

核心排查方向

1. 配置文件云端适配问题

  • 检查grafana-datasource.yaml中的Pyroscope地址:本地可用容器名/localhost,云端必须用可访问的内网IP/公网IP/域名,不能直接用容器内部hostname(除非云端容器网络是同一overlay且配置生效)

    错误示例:url: http://pyroscope:4040
    正确示例(内网):url: http://10.0.0.5:4040 或(带负载均衡):url: http://pyroscope-lb:4040

  • 验证pyroscope-local-config.yaml的server.http.listen-port是否和容器暴露端口、云端安全组/防火墙规则一致,确保默认4040端口允许双向访问
  • 检查docker-compose.yaml网络配置:确认所有容器加入同一自定义网络,端口映射规则无冲突、未遗漏

2. 云端网络与权限校验

  • 即使开放全部TCP流量,仍需确认:
    • Grafana到Pyroscope的端口可达性:在Grafana容器内执行curl -v http://[pyroscope-addr]:4040/health,查看返回细节(400通常是请求格式/地址问题)
    • 云端负载均衡/反向代理配置:如果使用LB,检查是否修改了请求路径、添加了非标准请求头,导致Pyroscope无法识别健康检查请求
  • 检查Grafana数据源认证配置:如果Pyroscope云端开启了认证(本地未启用),需在grafana-datasource.yaml中补充basicAuth或apiKey配置,否则会返回400/401

3. 健康检查请求格式问题

400状态码大概率是请求不符合Pyroscope API规范:

  • 在Grafana容器内抓包查看健康检查实际请求:tcpdump -i any host [pyroscope-addr] and port 4040
  • 对比本地与云端的请求头:云端代理可能添加了Host头或其他非标准字段,可在Pyroscope配置中添加server.http.allowed-hosts,允许对应域名/IP

4. 容器启动顺序与依赖

云端容器启动速度慢于本地,需在docker-compose.yaml中添加健康检查依赖,确保Pyroscope完全启动后Grafana才初始化数据源:

services:
  pyroscope:
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:4040/health"]
      interval: 5s
      timeout: 5s
      retries: 5
  grafana:
    depends_on:
      pyroscope:
        condition: service_healthy

快速验证步骤

  1. 在Pyroscope所在主机执行curl http://localhost:4040/health,确认返回200
  2. 在Grafana所在主机(或同一VPC测试机)执行curl http://[pyroscope-addr]:4040/health,确认返回200
  3. 若步骤2返回400,检查请求头是否含特殊字段,或Pyroscope是否开启严格Host校验
  4. 临时将Grafana数据源配置为Pyroscope公网地址(若允许),测试连接以排除内网网络问题

内容的提问来源于stack exchange,提问作者Ian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 11:52:19