使用Docker Hub的 jaegertracing/all-in-one 公共镜像在Google Kubernetes上创建了一个部署
然后,公开服务类型为负载均衡器的部署。
现在,启动了JaggerUI,它正在工作,但它不显示除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();
为JaegerHost环境变量分配所创建的Jaeger服务的IP。
问题是如何以及在何处进行更改,以便我的应用程序服务在 Jaeger UI 中可用,以便我可以看到它的跟踪。
我被困在这里,任何人都可以帮忙如何继续前进吗?
积家代理服务应如下所示
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
不要使用 IP,请使用 FQDN。 首先,尝试对jaegerHost
值进行硬编码
string jaegerHost = "jaeger-agent.jaeger";
其中jaeger-agent
- 服务名称,jaeger
- 服务命名空间
此外,您应该创建jaeger-collector
服务