我在 Docker 中安装了 jaeger:
docker run --rm --name jaeger -p 5775:5775/udp -p 6831:6831/udp -p 6832:6832/udp -p 5778:5778 -p 16686:16686 -p 14267:14267 -p 14268:14268 -p 9411:9411 jaegertracing/all-in-one:1.7
下面是有关如何初始化跟踪器和跨度的示例代码。 我在控制台中获取了日志,但它没有反映在我的 Jaeger UI 中。
有人可以帮我吗?
logging = new LoggingReporter();
SamplerConfiguration sampler = new SamplerConfiguration();
sampler.withType("const");
sampler.withParam(1);
ReporterConfiguration reporter = new ReporterConfiguration();
reporter.withLogSpans(true);
reporter.withSender(sender);
tracer = Configuration.fromEnv("sample_jaeger").withSampler(sampler).withReporter(reporter).getTracer();
Scope scope = tracer.buildSpan("parent-span").startActive(true);
Tags.SAMPLING_PRIORITY.set(scope.span(), 1);
scope.span().setTag("this-is-test", "YUP");
logging.report((JaegerSpan) scope.span());
您是否关闭示踪器和示波器?如果您使用 0.32.0 之前的版本,您应该在进程终止之前手动调用
tracer.close()
,否则缓冲区中的跨度可能不会被调度。
至于范围,通常将其包装在 try-with-resources 语句中:
try (Scope scope = tracer.buildSpan("parent-span").startActive(true)) {
Tags.SAMPLING_PRIORITY.set(scope.span(), 1);
scope.span().setTag("this-is-test", "YUP");
logging.report((JaegerSpan) scope.span());
}
您可能还想查看 OpenTracing 教程:https://github.com/yurishkuro/opentracing-tutorial 或基于 Katacoda 的版本:https://www.katacoda.com/courses/opentracing
--编辑
并且部署在不同的主机名和端口上
那么您确实需要告诉跟踪器将跟踪发送到哪里。导出
JAEGER_ENDPOINT
环境变量,指向收集器端点,或者设置 JAEGER_AGENT_HOST
/JAEGER_AGENT_PORT
,以及代理的位置。您可以在以下 URL 上检查客户端的可用环境变量:https://www.jaegertracing.io/docs/1.7/client-features/
我已经在 Podman 上设置了 Apache Tomcat 并在其上部署了 Java Struts 应用程序。此外,我还在 Podman 上设置了 Jaeger all-in-one。现在,我正在寻找有关如何使用 Jaeger 观察部署在 Apache Tomcat 上的 Java Struts 应用程序痕迹的指南。你能指导我执行必要的命令吗?