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

Grafana Alloy集成Beyla无Trace数据至Tempo的排查求助

排查Grafana Beyla + Alloy 无追踪数据流入Tempo的问题

以下是针对你在EKS环境中遇到的Beyla无追踪数据、Tempo未写入S3的逐步排查建议:

一、先确认Beyla是否真的在生成追踪数据

  • 把Alloy的日志级别调到debug(配置里加log_level = "debug"),看日志里有没有Beyla检测目标服务、生成Span的相关条目。如果完全没看到这类日志,说明Beyla根本没识别到要追踪的应用:
    • 核对Beyla配置的targets字段,是否用对了命名空间、Pod标签选择器,或者指定的PID是否正确。
    • 确认目标应用属于Beyla支持的范围:比如是否是Go/Java/Python等语言,是否基于标准HTTP/gRPC框架开发。
    • 在Alloy Pod里执行bpftool prog list,检查是否有Beyla加载的eBPF程序,确认eBPF机制正常运行。

二、检查Alloy配置的链路完整性

  • 确认Beyla的output.traces是否正确指向了otelcol.processor.batch的输入端口,组件名称有没有拼写错误。
  • 检查otelcol.processor.batch的配置,有没有误加过滤规则把所有Span都拦截了,比如是否配置了filter处理器且规则过于严格。
  • 核对otelcol.exporter.otlp(发往Tempo的组件)的endpoint是否正确,集群内部署的话通常是http://tempo-distributor.<tempo-namespace>:4317,还要确认协议(gRPC/HTTP)和Tempo的监听配置匹配。
  • 检查所有相关组件是否都已启用,有没有不小心注释掉Beyla、batch或exporter的配置块。

三、验证Tempo接收端的状态

  • 查看Tempo Distributor的日志,看是否有接收Span的记录,或者是否有格式错误、权限拒绝等报错。
  • 检查Tempo Ingester的运行状态,比如用kubectl exec进入Ingester Pod,执行tempo-cli ingester list(如果有安装cli),查看是否有活跃的租户和数据分片。
  • 确认Tempo的S3存储配置:虽然生成了tempo_cluster_seed.json,但要检查Tempo的Service Account是否有S3的完整读写权限(IAM Role绑定是否正确),另外Tempo可能设置了块写入阈值,未达到的话不会立即写入S3,可以临时调低阈值测试。

四、EKS环境专属检查项

  • 完善Alloy Pod的securityContext:除了SYS_ADMIN和SYS_PTRACE,还需要添加CAP_BPF和CAP_PERFMON权限,配置示例:
    securityContext:
      capabilities:
        add: ["BPF", "PERFMON"]
      privileged: false # 不需要特权模式,加cap即可
      appArmorProfile:
        type: Unconfined
    
  • 检查EKS节点的内核版本:Beyla要求内核>=5.4,执行kubectl describe nodes | grep KernelVersion确认。
  • 查看节点的eBPF相关内核参数:执行kubectl exec -n <alloy-namespace> <alloy-pod> -- sysctl -a | grep bpf,确认kernel.unprivileged_bpf_disabled=0、net.core.bpf_jit_enable=1这两个参数是否开启。
  • 排查网络策略:确认是否有NetworkPolicy阻止了Alloy Pod访问Tempo的4317(gRPC)或4318(HTTP)端口。

五、手动验证数据链路

  • 在Alloy配置里临时加一个日志输出的exporter,把Beyla的追踪数据直接打日志,验证Beyla是否真的生成了数据:
    otelcol.exporter.logging "trace_debug" {
      verbosity = "detailed"
    }
    
    beyla "your_service" {
      output {
        metrics = []
        traces  = [otelcol.exporter.logging.trace_debug.input]
      }
      # 你的其他Beyla配置...
    }
    
    重新部署Alloy后看日志,如果能看到Span数据,说明问题出在batch到Tempo的环节;如果还是没有,那问题根源在Beyla本身。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 16:53:13