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

配置Jaeger Agent Sidecar后Nginx服务未在Jaeger-Query UI显示求助

解决Jaeger-Query未显示注入Agent Sidecar的Nginx服务问题

核心问题说明

Jaeger-Query只会显示产生了追踪数据的服务,仅仅注入Agent Sidecar不足以让服务显示——你还需要为Nginx配置追踪逻辑,让它生成并上报追踪数据到Sidecar。以下是分步排查和解决方法:


1. 先确认Agent Sidecar已成功注入

首先验证Sidecar是否真的跑起来了:

  • 查看Pod列表,确认目标Pod包含两个容器:
    kubectl get pods -n observability
    
    正常情况下,jaeger-nginx-test-deployment对应的Pod应该有jaeger-nginx-test-deployment(Nginx)和jaeger-agent两个容器。
  • 查看Pod详情,确认Sidecar容器状态正常:
    kubectl describe pod <你的Pod名称> -n observability
    
    检查jaeger-agent容器的State是否为Running,没有启动错误。

2. 为Nginx配置追踪功能

默认官方Nginx镜像不包含追踪模块,需要使用带OpenTelemetry模块的镜像,并配置追踪规则:

步骤2.1:创建带追踪配置的ConfigMap

新建nginx-tracing.conf文件,内容如下:

load_module modules/ngx_http_opentelemetry_module.so;

events {}

http {
    # 启用OpenTelemetry追踪
    opentelemetry on;
    # 设置追踪的操作名称为请求方法+路径
    opentelemetry_operation_name "$request_method $uri";
    # 从请求头中读取Traceparent(支持上游服务传递追踪上下文)
    opentelemetry_traceparent_from_request;
    # 将追踪数据上报到本地的Jaeger Agent(Sidecar监听14268端口)
    opentelemetry_exporter jaeger http://localhost:14268/api/traces;

    server {
        listen 80;
        location / {
            root /usr/share/nginx/html;
            index index.html index.htm;
        }
    }
}

然后创建ConfigMap:

kubectl create configmap nginx-tracing-config -n observability --from-file=nginx.conf=nginx-tracing.conf

步骤2.2:修改Nginx Deployment

更新你的Deployment配置,使用带OpenTelemetry模块的Nginx镜像,并挂载上述ConfigMap:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: jaeger-nginx-test-deployment
  namespace: observability
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
      annotations:
        sidecar.jaegertracing.io/inject: "true"  # 建议把注解移到Pod模板层,确保注入逻辑生效
    spec:
      volumes:
        - name: nginx-config
          configMap:
            name: nginx-tracing-config
      containers:
      - image: nginx:1.25.3-opentelemetry  # 带OpenTelemetry模块的官方镜像
        name: jaeger-nginx-test-deployment
        ports:
          - containerPort: 80
        volumeMounts:
          - name: nginx-config
            mountPath: /etc/nginx/nginx.conf
            subPath: nginx.conf

应用更新:

kubectl apply -f <你的Deployment文件路径> -n observability

3. 触发流量并验证追踪数据

  • 访问Nginx服务(通过Ingress或者ClusterIP),产生实际的请求流量:
    curl <你的Ingress域名或ClusterIP>
    
  • 查看Jaeger Agent的日志,确认它接收到了追踪数据:
    kubectl logs <你的Pod名称> -c jaeger-agent -n observability
    
    日志中如果出现类似Span received的内容,说明数据已正常上报。

4. 检查Jaeger后端状态

  • 确认Jaeger Collector和Query组件运行正常:
    kubectl get pods -n observability | grep jaeger
    
  • 查看Collector日志,确认没有数据接收错误:
    kubectl logs <jaeger-collector-xxx> -n observability
    

完成以上步骤后,刷新Jaeger-Query UI,就能看到Nginx服务的追踪数据了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:00:16