Jaeger 服务:如何在 Google Kubernetes 上进行配置?

Cod*_*ila 5 c# google-kubernetes-engine asp.net-core opentracing jaeger

使用来自Docker Hub 的jaegertracing/all-in-one公共映像在Google Kubernetes上创建部署

然后,将 Service 类型的部署公开为LoadBalancer

现在,启动了 Jagger UI 并且它正在工作,但它不显示除 jagger-query 之外的任何服务。

我已经部署了我的 .net web api 应用程序以在 kubernetes 上进行测试。

我的应用程序只有一个 Web API,它在 Google Kubernetes 引擎上成功运行并通过负载均衡器服务类型公开。API 对所有数据进行了硬编码,不会调用任何其他服务或数据库。

在项目中使用了以下nuget包:

Jaeger -Version 0.2.2
OpenTracing.Contrib.NetCore -Version 0.5.0

我在API 的Startup.cs文件中添加了以下代码:

    services.AddSingleton<ITracer>(serviceProvider =>
    {
        //string serviceName = Assembly.GetEntryAssembly().GetName().Name;
        string serviceName = serviceProvider.GetRequiredService<IHostingEnvironment>().ApplicationName;

        ILoggerFactory loggerFactory = serviceProvider.GetRequiredService<ILoggerFactory>();

        ISampler sampler = new ConstSampler(sample: true);

        string jaegerHost = Environment.GetEnvironmentVariable("jaeger_host");

        var reporter = new RemoteReporter.Builder()
            .WithLoggerFactory(loggerFactory)
            .WithSender(new UdpSender(jaegerHost, 6831, 0)) // todo: 
            .Build();

        ITracer tracer = new Tracer.Builder(serviceName)
            .WithLoggerFactory(loggerFactory)
            .WithSampler(sampler)
            .WithReporter(reporter)
            .Build();

        GlobalTracer.Register(tracer);

        return tracer;
    });

    services.AddOpenTracing();
Run Code Online (Sandbox Code Playgroud)

jaegerHost环境变量被分配了创建的 jaeger 服务的IP

问题是如何以及在何处进行更改,以便我的应用程序服务在 Jaeger UI 中可用,以便我可以看到它的踪迹。

我被困在这里,有人可以帮助如何继续前进吗?

Rom*_*syk 2

jaeger-agent 服务应该看起来像

apiVersion: v1
kind: Service
metadata:
  name: jaeger-agent
  namespace: jaeger
  labels:
    app: jaeger
    app.kubernetes.io/name: jaeger
    app.kubernetes.io/component: agent
spec:
  type: LoadBalancer
  ports:
  - name: agent-compact
    port: 6831
    protocol: UDP
    targetPort: 6831
  - name: agent-binary
    port: 6832
    protocol: UDP
    targetPort: 6832
  - name: agent-configs
    port: 5778
    protocol: TCP
    targetPort: 5778
  selector:
    app.kubernetes.io/name: jaeger
    app.kubernetes.io/component: all-in-one
Run Code Online (Sandbox Code Playgroud)

不要使用 IP,使用 FQDN。首先,尝试对值进行硬编码jaegerHost

string jaegerHost = "jaeger-agent.jaeger";
Run Code Online (Sandbox Code Playgroud)

其中jaeger-agent- 服务名称,jaeger- 服务的命名空间

另外,您应该创建jaeger-collector服务