gpt4 book ai didi

instrumentation - 看不到zipkin中的trace数据

转载 作者:行者123 更新时间:2023-12-02 03:05:28 33 4
gpt4 key购买 nike

我是 zipkin 和 brave api 的新手,用于分发跟踪。我在本地主机上设置了一个 zipkin 服务器,监听端口 9411。我执行了下面的函数,但在我的 zipkin 服务器中没有显示任何跟踪数据。有人可以指出我所缺少的吗?

public static void main(String[] args) {
Sender sender = OkHttpSender.create("http://localhost:9411/api/v1/spans");
Reporter reporter = AsyncReporter.builder(sender).build();

// Now, create a tracer with the service name you want to see in Zipkin.
Tracer tracer = Tracer.newBuilder()
.localServiceName("my-service")
.reporter(reporter)
.build();
Span twoPhase = tracer.newTrace().name("twoPhase").start();
try {
Span prepare = tracer.newChild(twoPhase.context()).name("prepare").start();
try {
System.out.print("prepare");
} finally {
prepare.finish();
}
Span commit = tracer.newChild(twoPhase.context()).name("commit").start();
try {
System.out.print("commit");
} finally {
commit.finish();
}
} finally {
twoPhase.finish();
}
}

最佳答案

看来是时间问题。

如果我们添加一些延迟,例如,在子跨度执行之间添加一些延迟,例如

Thread.sleep(1);

介于两者之间

Span prepare = tracer.newChild(twoPhase.context()).name("prepare").start();
try {
System.out.print("prepare");
} finally {
prepare.finish();
}
Thread.sleep(1); // <<<
Span commit = tracer.newChild(twoPhase.context()).name("commit").start();
try {
System.out.print("commit");
} finally {
commit.finish();
}

然后我们可以看到跨度:

spans

我之前遇到过类似的事情,当时 Zipkin 删除了我(错误地)分配了错误时间戳的跨度。

为了便于引用和复制:我设置了一个 project用于重现此问题/“修复”。

关于instrumentation - 看不到zipkin中的trace数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43025795/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com