Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
Yael Namen
@recfab
Which I assume is why the traces aren't nested properly.
tomicarsk6
@tomicarsk6
Hi guys, can someone write down which options in java-spring-web or java-spring-cloud could be changed during the runtime without restarting the application?
pnilesh1
@pnilesh1
is there any way i can print the trace id and span id in the application log. my traces and span i could see them in the jaeger UI. i am using javaagent. -javaagent:opentracing-specialagent-1.5.6.jar -Dsa.tracer=jaeger. Is there nay provision through which trace id and span Id is set in MDC so that would come up in the application log.?
pnilesh1
@pnilesh1
Thanks for the response @yurishkuro . But then i have to modify my code in all the n microservices. I dont have permission to modify the code in all the services.
I was trying to find is there any configuration way through which all the trace and span gets logged . for e.g. slueth provides such functionality.
Yuri Shkuro
@yurishkuro
it should be possible for the specialagent to provide this functionality, but I am not familiar with that project
Nathan
@phxnsharp
I've seen references that state that "there is currently no off-the-shelf solution for tracing complex operations where the work ends up queued in various databases and potentially lasts for more than 5 minutes":
https://github.com/kubernetes/kubernetes/issues/26507#issuecomment-354901627
Has anything about that statement changed in the year since it was written? Is there documentation on the reasons and/or alternatives?
Yuri Shkuro
@yurishkuro
You may want to look at Uber/cadence, a workflow engine. Its workflows can run for months (eg driver onboarding use case at Uber, where drivers must provide various documents). I believe cadence is integrated with OpenTracing.
Nathan
@phxnsharp
@yurishkuro Looks very interesting. Seems like I have some evening reading to do.
Yuri Shkuro
@yurishkuro
@phxnsharp If you find it interesting, a fun fact for you: poeple who created Cadence left Uber recently and started a company.
Ahmed Waleed Malik
@ahmedwaleedmalik

Hi, i am new to opentracing and i would like to use it along with spring cloud gateway. I am running a k8s cluster and have istio(jaeger) setup in there. Is there any concrete guideline/sample application through which i can make it work at my end. Currently, i have tried this and failed, and opened an issue accordingly:

opentracing-contrib/java-spring-cloud#272

P.s. This is a high priority thing for me so any help would be great. Since, distributed tracing won't work in our architecture if gateway is unable to propagate them to corresponding micro-services.

Ahmed Waleed Malik
@ahmedwaleedmalik
Also, would this be of any help in my case ? If i completely switch to this ? I have java based applications that are running on vert.x, spring boot, spring cloud gateway, wildfly swarm etc.
https://github.com/opentracing-contrib/java-specialagent
jbaddam17
@jbaddam17
New to openTracing, i have following questions. it would be great if someone can answer them
Thanks in advance
  1. does openTracing supports storage components either mysql or postgres?
  2. is it possible to build as custom server(jar). configure storage components?
  3. is it compatible with Spring Cloud Sleuth?
Nathan
@phxnsharp
@jbaddam17 OpenTracing is back-end agnostic. It declares the APIs that you might use to instrument your code. To ask about storage components, you need to be on a list for a particular implementation, such as Jaeger. See the supported Tracers list: https://opentracing.io/docs/supported-tracers/
Mithundas
@Mithundas
Am very new to openTracing. Is it possible to trace an already existing java web application without altering the code ?
Matt Ingenthron
@ingenthr
@Mithundas do a search for “secret agent tracer” and you’ll find some material from @tedsuo I believe
Matthew Wear
@mwear
@Mithundas I think this is what you’re looking for: https://github.com/opentracing-contrib/java-specialagent
Mithundas
@Mithundas
@ingenthr @mwear Thanks a lot. Will check these options..
Nicholas Volker Moorcroft
@nvolker
Good day everyone, I've recently been getting OpenTracing with Jaeger setup on a couple example Sinatra Ruby, Node and Ruby on Rails apps. I noticed that the docs https://opentracing.io/guides/ruby/spans/ have many place-holders ( Ruby code snippet here ) and was wondering if anybody currently has a production-level implementation of distributed tracing via Node (not a requirement) and Ruby on Rails? Have a few questions around appropriately beefing up my Tags and Logs :slight_smile:
Yuri Shkuro
@yurishkuro
@nvolker at Uber we use Jaeger clients in a large number of Node.js services. But not Ruby.
Matthew Wear
@mwear
From what I know this is a fairly well used Ruby client for Jaeger: https://github.com/salemove/jaeger-client-ruby. @indrekj might be able to give you some more information about the scale it’s being used at.
@nvolker :point_up:
Nicholas Volker Moorcroft
@nvolker

Thanks @yurishkuro, realising that was the case, I came here to find those who may have given it a go :sweat_smile:

Thanks @mwear, I've started playing around with that already. Still becoming familiar with the use of extractors and injectors when building the client. At the moment I'm curious to see what approaches people have taken with regards to wrapping up their controllers, i.e. span creation and finishing.

Faraday is suggested in https://github.com/opentracing/opentracing-ruby and I'm successfully able to extra headers from my NGINX requests and start my spans in rails. Now I'm just trying to figure out the best way to ensure span.finish is executed and my spans have relevant logs attached to them - possible attaching the same output of the rails logger to the active_span before finishing it.

Rutger Lubbers
@RutgerLubbers
Hi, can I ask a question here regarding opentracing-contrib/java-spring-cloud and opentracing-spring-cloud-jdbc-starter? (As in, is this the correct place for that?)
Rutger Lubbers
@RutgerLubbers
Ok I’ll ask anyway. The spring cloud jdbc starter creates an aspect JdbcAspect. This aspect wraps connections with a TracingConnection. So spans are created for database queries. So far so good. For Oracle databases this does not work. The connection throws an exception. How to handle this? I can fork and create a PR for a fix, however the ultimate fix should be with the oracle driver.
Michael03
@Michael03
This message was deleted
Anthony Vinay Kumar S
@anthonyvk

Hi Team,
New to Opentracing.
We are using Jaeger client for tracing. We are using RabbitMQ messaging between two microservices.
Use-case : I want to propagate the span context to the other microservice via RabbitMQ.

I have used this dependency : opentracing-spring-rabbitmq-starter.
It works, but I do not have any control over the spans.

Is there a way to propagate the span context using inject and extract (without using the above mentioned dependency), similar to mentioned in the doc : https://opentracing.io/docs/overview/inject-extract/

Thanks.

Bryan Boreham
@bboreham
Question about gRPC libraries: it appears that the Go part of https://github.com/grpc-ecosystem/grpc-opentracing moved to https://github.com/opentracing-contrib/go-grpc, but the latter does not have a licence in the repo.
There is an issue open for nearly a year asking to address this: opentracing-contrib/go-grpc#3
Bryan Boreham
@bboreham
Is there anyone here who has permissions to re-add the licence it had before the move? That would be the simplest resolution from my point of view.
Yuri Shkuro
@yurishkuro
I pinged the original authors on the ticket. Adding a license file is not a problem, but we can't legally do that without author's agreement, since the original license was different.
Bryan Boreham
@bboreham
Thanks!
Alessandro Vermeulen
@spockz
Is https://github.com/opentracing-contrib/java-specialagent the currently preferred way of automatically instrumenting java code?
akhil6095
@akhil6095

I'm trying to add tracing to elasticsearch using
https://github.com/opentracing-contrib/java-elasticsearch-client/tree/master/opentracing-elasticsearch6-client
Seems like the request interceptor is passing the span using HttpContext and when it's being received by response interceptor then the span information is getting lost

I've created TracingHttpClientConfigCallback object like
TracingHttpClientConfigCallback callback = new TracingHttpClientConfigCallback(BraveTracer.create(tracing))
where I'm using brave-opentracing bridge to convert Sleuth Tracing to Opentracing object, which works fine, somehow the response interceptor is getting NoopSpan object with entirely new trace and span id

Mohit Chawla
@mohit-chawla
@mohit-chawla
hi all, is there a suggested way to inject and extract span for thrift in python? I cant seem to find a neat way to add span info to thrift over TCP.
It seems you cannot add custom headers to a thrift req over TCP: https://stackoverflow.com/questions/45323188/can-apache-thrift-library-modify-the-headers-in-a-tcp-or-udp-packet
akhil6095
@akhil6095

I've some flink jobs which uses kafka as source and sink and I want to add tracing to it, so that any message consumed/produced from/to Kafka is well traced, for that I'm using kafka interceptors to intercepts messages and log trace, span and parent traceId, for that I'm using
opentracing-kafka-client(v0.1.11) in conjunction with brave-opentracing(v0.35.1), the reason why I'm using custom interceptors because I need to log messages in a specified format.

After configuring interceptors they are getting invoked and it uses tracing information (from headers) coming from upstream system and logs it but when it comes to producing message again to kafka then tracing context is lost for instance consider below scenario

1) Message put on Kafka by some rest service
2) Message consumed by flink job and interceptors kicks in and uses tracing information from header and logs it
3) After processing message is produced by flink job to Kafka

It works well until step #2 but when it comes to producing message then tracing information from previous step is not used because it does not have any headers information and hence it produces entirely new trace.

Nathan
@phxnsharp
Are there any standards, formal or not, about naming tracers, span operations, and tag names? Obviously there is https://github.com/opentracing/specification/blob/master/semantic_conventions.md, but that does not cover when we want to name our own items.
Chandra Mohan
@bschandramohan
How do I integrate opentracing for ElasticSearch hosted on AWS ? I see links in AWS SDK for Dynamodb and others, OR for Elastic but not elasticsearch on AWS
Anthony Voutas
@voutasaurus
Hey Nathan, have a look around for the autoinstrumentation tooling for Java. It automatically names a bunch of stuff so that's as close to a standard as there probably is
libnoon
@libnoon
Hi! I'm packaging python-opentracing on Debian. FYI the package has been sponsored and is now in the NEW queue of Debian ftp-master, which means it is in good condition to reach Debian Unstable soon: https://ftp-master.debian.org/new/python-opentracing_2.2.0-1.html
Nathan
@phxnsharp
Thanks @voutasaurus
Simon Leigh
@sleighzy
Hi. It’s been discussed a few times over the years for providing the ability to override/set the service name on spans, and not be restricted to what was set when the tracer was created. See the OpenTracing proposal on adding this to the scope. opentracing/specification#131. Is this something that people are still looking for, and will be progressed, or is there another way to achieve this now?
Our company has numerous services/apps, but they are deployed into a single platform (OSGi) so runs in a single JVM. When the tracer is initialized it is created with the service name of the first component that hits it, and the tracer will use that service name for all spans, regardless of which service is actually making the call. Whilst there are calls between services they are all in the same thread, and the service name can’t be changed to reflect this. I’d tried some options, such as maintaining different instances of tracers per service, but this really doesn’t work with scope/scopemanager/using GlobalTracer. Another option was the entire platform being the service, and baking the service name as a prefix for each operation name, but this is a bit ugly and restricts you from using certain functionality in tools such as Jaeger.
Any advice, workarounds, possible roadmap for this…or I’m stuck until the day my company gets around to turning everything into microservices and running a separate JVM per app/service (not likely)?
Yuri Shkuro
@yurishkuro
@sleighzy a "service" is typically defined as a separate process. You're saying "services running on the same thread", I think you're using a different notion of "services".
On the other hand, having a single JVM does not preclude you from having multiple tracers, because different applications usually run in different classloaders.
Having said that, to answer your exact question - no, there has been no progress of changing service name from span to span. Nor is it being supported in OpenTelemetry afaik.
Simon Leigh
@sleighzy
Thanks for the quick response @yurishkuro . My reference to “services” for example would be an Identity service to retrieve info about the current user, and a Privacy service to evaluate what this user is able to see about some piece of data. Both “services” are deployed as separate app/bundles within the platform. The request that goes through them is in the same jvm and thread, so the calls between them are essentially inprocess, v.s. setting baggage and propogating context across remote calls. I can’t use the GlobalTracer as this will have been initialized with the Privacy service, so am looking to either change the service name within the scope for whichever service has an active span, or some means of “inprocess” context propagation to replicate the behaviour of remote calls. Sounds like I may be stuck with a single tracer for the platform, or maintaining a thread local so I can track which tracer is in use and switch them out when the call goes between services. Essentially just looking for a means to join the trace between services, my PoC with map of tracers keyed by service names “works”, but of course each only tracks its part of the effort so you don’t get a complete trace obviously.
Daniel Holbach
@dholbach
hiya... can somebody please take a look at opentracing-contrib/go-grpc#3 According to opentracing-contrib/go-grpc#11 we'd need @kcamenzind @bhs @hzariv still to add the required license file. Does anyone know how to contact these folks? :pray:
Pavel Patrin
@pavelpatrin
Guys, hello. I'm investigating OT usage variants in my project. I don't understand why all golang tracers has no ability to trace database queries? Is this functionality omitted because nobody needs it? Need I to store database queries as separate spans, or maybe log it, or just dont worry about it, in general?
Austin Parker
@austinlparker
I would recommend making DB queries a new span on your trace and adding the query itself as a log to that span, then have tags for interesting metadata (like the DB server)
if you search 'Golang sql opentracing' you should see a few different packages/discussion threads on how other people are adding instrumentation for db queries