Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
Jorg Heymans
@jorgheymans
@aerfus no problem
kristen
@kristen42170622_twitter
@adriancole i'm using brave 5.6.4
Adrian Cole
@adriancole
I can't troubleshoot today, sorry
that's also an old version of brave
Ucky.Kit
@uckyk
There was a misunderstanding about zipkin before, but now my understanding of zipkin. It is a platform for collecting trace(opentrcing standard) information and storing and displaying data.
The zipkin community only provides brave with tools to collect trace.
We can also rely on spring cloud sleuth and others. Because the data they collected are all opentracing standards.
I understand that, right? Thanks~
José Carlos Chávez
@jcchavezs
Zipkin has no connection to opentracing more than a bridge that makes zipkin compatible with OT.
When you talk about collect data in opentracing standard, opentracing does not define any data at all. OpenTracing is a set of interfaces.
So zipkin existed before opentracing and will exists after opentracing. We provide brave and other tools for different languages that can work with/without opentracing.
Jorg Heymans
@jorgheymans
(also opentracing is deprecated)
Ucky.Kit
@uckyk
I understand .
that this is why "spring-cloud-sleuth-zipkin" must be used when "spring-cloud-starter-sleuth" is used.
Adrian Cole
@adriancole
@tacigar you set the standard for others to compare to :) https://twitter.com/jbogard/status/1245453163106316291
@uckyk zipkin most fundamentally is the group that takes care of the most widely used formats in tracing: B3 and our data format.. our json format is supported by many vendors and clones and probably these two formats are responsible for any stability that exists in the ecosystem :)
we also provide server with UI etc which of course accepts these formats. and tracers and instrumentation that produce them. the project brave can also produce other formats, and our reporter can too. The first vendor to use our tools to send to their service was google, but now many do also
for example, in sleuth there's a spring-cloud-gcp thing that layers on to configure stackdriver from google including their header formats
hope this helps make understandable
Adrian Cole
@adriancole
@ClaraR22 specifically, our kafka listener looks for our standard input message, which is a list of spans (can be json or protobuf) https://github.com/openzipkin/zipkin/tree/master/zipkin-collector/kafka#encoding-spans-into-kafka-messages
@kristen42170622_twitter sorry I can pay attention a bit more now. brave 5.11 is just released, but even your version can customize data and do anything. if you can upgrade, please do as the syntax is cleaner to add tags.
ex
httpTracing = httpTracing.toBuilder()
    .clientRequestParser((req, context, span) -> {
      HttpClientRequestParser.DEFAULT.parse(req, context, span);
      HttpTags.STATUS_CODE.tag(req, context, span); // add unconditionally
    })
    .build();
zdw941008
@zdw941008
can zipkin-server output logfie? Where is the file path?
Adrian Cole
@adriancole
@zdw941008 zipkin uses log4j 2 under the scenes by default (unless you are using slim build)
default logs to console but you can change the log4j 2 configuration
athu pillai
@attyrats_gitlab
@fedj We are using zipkin4net.dll library in net core project to send traces. Internally tracemanager is used to start and stop tracing. When we use zipkin the memory goes high and net core application deployed as docker container is stopped giving Out of memory issue. We commented the code used for sending traces and application is working fast without giving Out of Memory error. Please help us to trace the net core(3.1) application using zipkin.
dforce
@df0rce_twitter

Hi, I'm on JAVA EE + CDI.

1) How is the suggested way of providing brave.Tracing to a client? In Spring or the webmvc example I see the usage of singletons, which would be the equivalent of a STATIC field in an ApplicationScopes class I guess?! As clients I have apache cxf, http client and microprofile rest via RestEasy.

2) How do I create a new Span (in web page bean) which should serve as parent span for subsequent client calls. e.g. void doAction(){ createParentSpan(); client.request1(); client.request2(); }?

Thanks for you help.

Adrian Cole
@adriancole
@df0rce_twitter things like spring are preferred (actually the entry types are HttpTracing and Tracing.. sleuth does this automatically, I don't know any microprofile project at the moment that configures brave). static access is a last resort. use the servlet filter for your incoming calls and instrument your outgoing stuff with existing hooks. For example, cxf httpclient and resteasy are all supported (cxf builds in brave support),the other two are in brave. this should help https://github.com/openzipkin/brave-webmvc-example
Aldo Sinanaj
@aldex32
Hi all,
do you guys know if it is possible to wrap ScheduledThreadPoolExecutor by using CurrentTraceContext#executorService(). I cannot cast CurrentTraceContext$1CurrentTraceContextExecutorService to ScheduledThreadPoolExecutor
not possible to cast makes sense, but I am wondering how can I wrap ScheduledThreadPoolExecutor
Amir Soleimani
@amirsoleimanii
Hello
is that any liveness path to use in Kubernetes livenses prob?
*liveness
Adrian Cole
@adriancole
@aldex32 for now, if you can configure the thread factory, you can use wrap on that
@dio do you know about liveness probe?
guessing something that hits /health endpoint?
Amir Soleimani
@amirsoleimanii
@adriancole I have a problem, the endpoint is accessible for me via pod IP but I can't access to deployment with the service. This is my deployment file, can you help me?
https://github.com/amirsoleimanii/zipkin/blob/master/Kubernetes%20Deployment/Zipkin%20Deployment.yaml
Adrian Cole
@adriancole
personally I can't I'm knackered
Amir Soleimani
@amirsoleimanii
@adriancole Thank you, I think it is better to ask my question in stackoverflow
Aldo Sinanaj
@aldex32

if you can configure the thread factory, you can use wrap on that

@adriancole thanks for replying. Do you mean I need to wrap the Runnable?

Jorg Heymans
@jorgheymans
Aldo Sinanaj
@aldex32
Thanks, but I can’t use it with ScheduledThreadPoolExecutor as far as I understood
Jorg Heymans
@jorgheymans

@aldex32

        CurrentTraceContext currentTraceContext = ThreadLocalCurrentTraceContext.create();
        final ExecutorService wrappedExecutorService = currentTraceContext.executorService(new ScheduledThreadPoolExecutor(10));
        // use wrappedExecutorService in your code
        // ...

this is not what you are trying to do then ?

Aldo Sinanaj
@aldex32

yes I am trying to do:

currentTraceContext.executorService(new ScheduledThreadPoolExecutor(10));

but then I cannot cast it in ScheduledThreadPoolExecutor

Jorg Heymans
@jorgheymans
hmmm
something like this then
        CurrentTraceContext currentTraceContext = ThreadLocalCurrentTraceContext.create();
        final ScheduledThreadPoolExecutor scheduledThreadPoolExecutor = new ScheduledThreadPoolExecutor(10);
        final ThreadPoolTaskExecutor threadFactory = new ThreadPoolTaskExecutor();
        scheduledThreadPoolExecutor.setThreadFactory(threadFactory);
        final Executor executor = currentTraceContext.executor(threadFactory);
Adrian Cole
@adriancole
close..
sorry I meant
ThreadFactory threadFactory = r -> new Thread(currentTraceContext.wrap(r));
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1, threadFactory);
ScheduledThreadPoolExecutor is a beast to instrument manually so better to control the thread factory if you can
@amirsoleimanii good luck
Aldo Sinanaj
@aldex32
Thanks @adriancole and @jorgheymans
Jorg Heymans
@jorgheymans
no worries