我使用Jaeger检测了一个简单的Spring-Boot应用程序,但是当我使用docker-compose在Docker容器中运行该应用程序时,我在Jaeger前端看不到任何痕迹。
我通过读取我在docker-compose文件中设置的环境变量的属性来创建跟踪程序配置。
下面是我创建跟踪程序的方法:
Configuration config = Configuration.fromEnv();
return config.getTracer();
这是我的docker-compose文件:
version: '2'
services:
demo:
build: opentracing_demo/.
ports:
- "8080:8080"
environment:
- JAEGER_SERVICE_NAME=hello_service
- JAEGER_AGENT_HOST=jaeger
- JAEGER_AGENT_PORT=6831
jaeger:
image: jaegertracing/all-in-one:latest
ports:
- "5775:5775/udp"
- "6831:6831/udp"
- "6832:6832/udp"
- "5778:5778"
- "16686:16686"
- "14268:14268"
- "9411:9411"
你也可以在上找到我的项目GitHub。
我做错了什么?
发布于 2018-05-08 09:19:18
我找到了我的问题的解决方案,以防有人遇到类似的问题。
我缺少环境变量JAEGER_采样器_经理_主机_端口,如果使用(默认)远程控制采样器进行跟踪,则必须使用该选项。
这是可用的docker-compose文件:
version: '2'
services:
demo:
build: opentracing_demo/.
ports:
- "8080:8080"
environment:
- JAEGER_SERVICE_NAME=hello_service
- JAEGER_AGENT_HOST=jaeger
- JAEGER_AGENT_PORT=6831
- JAEGER_SAMPLER_MANAGER_HOST_PORT=jaeger:5778
jaeger:
image: jaegertracing/all-in-one:latest
ports:
- "5775:5775/udp"
- "6831:6831/udp"
- "6832:6832/udp"
- "5778:5778"
- "16686:16686"
- "14268:14268"
- "9411:9411"
发布于 2021-02-22 14:41:31
对于任何发现自己在这个页面上看到一个类似的问题,机甲开放在.net核心下面是一个工作的docker组成的代码片段和Startup.cs的工作代码下面是自己的发现自己在这个页面上寻找类似的问题,机甲开放的核心是一个工作的docker组成的代码片段和工作代码。我遗漏的部分是让jaeger从docker-compose读取环境变量,因为默认情况下,它试图通过localhost上的udp发送跟踪。
version: '3.4'
services:
jaeger-agent:
container_name: 'tracing.jaeger.agent'
image: jaegertracing/all-in-one:latest
networks:
- jaeger-demo
ports:
- "5775:5775/udp"
- "6831:6831/udp"
- "6832:6832/udp"
- "5778:5778/tcp"
- "16686:16686"
- "14268:14268"
- "9411:9411"
environment:
- LOG_LEVEL=debug
labels:
NAME: "jaeger-agent"
orderService:
container_name: 'tracing.orders.api'
image: ${DOCKER_REGISTRY-}orderservice.api
build:
context: .
dockerfile: OrdersApi/Dockerfile
networks:
- jaeger-demo
ports:
- "16252:80"
environment:
- ASPNETCORE_ENVIRONMENT=Development
- JAEGER_SERVICE_NAME=OrdersApi
- JAEGER_AGENT_HOST=jaeger-agent
- JAEGER_AGENT_PORT=6831
- JAEGER_SAMPLER_TYPE=const
- JAEGER_SAMPLER_PARAM=1
depends_on:
- jaeger-agent
customerService:
container_name: 'tracing.customers.api'
image: ${DOCKER_REGISTRY-}customerservice.api
build:
context: .
dockerfile: CustomerApi/Dockerfile
networks:
- jaeger-demo
ports:
- "17000:80"
environment:
- ASPNETCORE_ENVIRONMENT=Development
- JAEGER_SERVICE_NAME=CustomersApi
- JAEGER_AGENT_HOST=jaeger-agent
- JAEGER_AGENT_PORT=6831
- JAEGER_SAMPLER_TYPE=const
- JAEGER_SAMPLER_PARAM=1
depends_on:
- jaeger-agent
networks:
jaeger-demo:
将以下nuget包添加到您的api中。
然后在你的Startup.cs配置方法中,你需要配置jaeger和opentracing,如下所示。
services.AddSingleton(serviceProvider =>
{
ILoggerFactory loggerFactory = serviceProvider.GetRequiredService();
Jaeger.Configuration.SenderConfiguration.DefaultSenderResolver = new SenderResolver(loggerFactory).RegisterSenderFactory();
var config = Jaeger.Configuration.FromEnv(loggerFactory);
ITracer tracer = config.GetTracer();
GlobalTracer.Register(tracer);
return tracer;
});
services.AddOpenTracing();
https://stackoverflow.com/questions/50173643
复制相似问题