Closed cxjava closed 5 months ago
Hi, I think this is probably better to ask to the opentelemetry team.
When I tried setting the exporter to logging
(i.e. -Dotel.traces.exporter=logging
) I found that actually armeria server isn't exporting any traces. (the netty extension seems to be exporting spans, and the armeria client seems to be exporting spans)
Checking the code at otel side for the java agent, I couldn't find any points which actually exports a span.
Do you mind opening a thread at the otel instrumentation side and mentioning me?
Do you mind opening a thread at the otel instrumentation side and mentioning me?
Sure, I will create it later
@jrhee17 Already created the issue in the otel instrumentation side, -> https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/9695 .
Thanks for the ping, left a comment
It seems still have issue when web client call Service A's GRPC method, and service A's GRPC method will call service B's GRPC method. Call chain is web client -> Service A's GRPC method -> Service B's GRPC method
, let me test it again.
seems the snapshot version also miss the client span if the call chain is web client -> Service A's GRPC method -> Service B's GRPC method
server a span -> client span(missed) -> server b span
I see, my guess is that grpc doesn't use WebClient
which our gRPC clients are using
My guess is that the following might be a better injection point, but I'll have to do some testing
I create other issue in OTEL side, just for tracking https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/9726
@jrhee17 Can you help to have a look in this issue? Any actions need to do in the Armeria side? Thank you!
Left a comment 😄
The related issue in opentelemetry-java-instrumentation https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/9726 has already been closed with this PR, so I think we can close this one too.
Now if we use the opentelemetry-javaagent-2.4.0-SNAPSHOT.jar, it can show the trace chain between Armeria services.
@jrhee17 Feel free to close this issue.
Thanks a lot for reporting, @cxjava! 😉
Hi Armeria team,
Recently I try to use the opentelemetry in our armeria service, but found can't find the trace chain in the jaeger.
for example: spring-boot-tomcat -> spring-boot-jetty -> demo, it will found the trace chain in the jaeger normally,
the result in our service is that: service A call service B , service A and service B is use the build in armeria server( not tomcat and jetty). Only found the service A in the Jaeger, don't found the Service B in the Jaeger.
versions
code
to make it sample, I try to reproduce it in the armeria example project.
call chain is : spring-boot-jetty -> spring-boot-tomcat -> spring-boot-minimal
spring-boot-minimal(no changes, port is 8080):
how to run spring-boot-minimal
spring-boot-tomcat(change port to 8180) :
how to run spring-boot-tomcat
spring-boot-jetty(change port to 8280):
how to run spring-boot-jetty
When I run
curl http://localhost:8280/hello
, the response isHello, from jetty & Hello, from tomcat & Hello, minimal! This message is from Armeria annotated service!
But the call chain is like below, trace id is end in the spring boot minimal.
don't find the spring-boot-minimal:
If I call the spring-boot-minimal
curl http://localhost:8080/hello/test
, it will work fine and can find the trace in the Jeager.end
Seems opentelemetry works fine with tomcat and jetty.
I am not sure about that is it the correct way armeria integrate with opentelemetry.
I also read some issue such as https://github.com/line/armeria/issues/4570 , don't find any solution. And I also don't know it is the issue of Armeria, or an issue of opentelemetry java agent.
Waiting for your response~