Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 00:18
    adriancole commented #1130
  • Apr 01 23:44
    bvillanueva-mdsol commented #236
  • Apr 01 17:03
    jorgheymans commented #3050
  • Apr 01 13:52
    adriancole commented #1130
  • Apr 01 13:51
    adriancole synchronize #1130
  • Apr 01 13:51

    adriancole on extra-polish

    100% coverage on BaggageField (compare)

  • Apr 01 13:29
  • Apr 01 13:15
    adriancole commented #1130
  • Apr 01 13:15
    adriancole edited #1130
  • Apr 01 13:13
    adriancole edited #1130
  • Apr 01 13:13
    adriancole synchronize #1130
  • Apr 01 13:13

    adriancole on extra-polish

    Collapsed to BaggageField (compare)

  • Apr 01 13:11
  • Apr 01 13:04
    jorgheymans assigned #3050
  • Apr 01 12:41
    hanahmily review_requested #3050
  • Apr 01 12:40
    hanahmily synchronize #3050
  • Apr 01 11:04
    Travis openzipkin/brave@d9a6a69 (hesAliveee) passed (4275)
  • Apr 01 10:55
    Travis openzipkin/brave (hesAliveee) failed (4279)
  • Apr 01 10:48
    Travis openzipkin/brave (hesAliveee) errored (4277)
  • Apr 01 10:48
    adriancole synchronize #1135
Anders Clausen
@AndersClausen

@AndersClausen definitely sounds like a job for a proxy

Thanks @adriancole , I'll tell our platform team that :-D

javabotnetflix
@javabotnetflix
@AndersClausen which version of springboot you are using for your custom zipkin server? is that working for you?
Anders Clausen
@AndersClausen

@AndersClausen which version of springboot you are using for your custom zipkin server? is that working for you?

No it wasn't working for us, so we went ahead and used the 'ready-made' Zipkin server, which we are about to test very soon. Just setting up the CI/CD pipeline for it, so we can manage our Cassandra/Elasticsearch settings with it

Adrian Cole
@adriancole
@javabotnetflix are you a bot?
also do you accept movie requests?
I appreciate we have all the lethal weapon movies now, but...
José Carlos Chávez
@jcchavezs
@javabotnetflix could you please enable Latinamerican spanish in Europe (not only European Spanish)? There are los of latinoamerican in Europe.
adriancole @adriancole chuckles
Josh Young
@mandragorn

I have a question around getting a zipkin docker container to register with eureka.
I've been trying to adapt https://github.com/openzipkin/zipkin/issues/1870#issuecomment-470068636 to a mvn bulid and Dockerfile that extends openzipkin/zipkin.
I have the mvn build working from that comment, but getting the zipkin inside the docker container to register with eureka isn't working, it isn't even trying.
This is my dockerfile:

FROM openzipkin/zipkin

ENV VERSION 0.0.1-SNAPSHOT
ENV ZIPKIN_SERVICE_NAME=zipkin

ENV EUREKA_CLIENT_JAR "eureka-zipkin-client-${VERSION}-module.jar"
ENV EUREKA_CLIENT_JAR_CONTAINER_PATH "${EUREKA_CLIENT_JAR}"
ENV EUREKA_CLIENT_PROPERTIES_FILE "eureka-client.properties"
ENV EUREKA_CLIENT_PROPERTIES_CONTAINER_PATH "${EUREKA_CLIENT_PROPERTIES_FILE}"

ENV MODULE_OPTS="-Dloader.path=${EUREKA_CLIENT_JAR_CONTAINER_PATH},${EUREKA_CLIENT_JAR_CONTAINER_PATH}!/lib -Dspring.application.name=${ZIPKIN_SERVICE_NAME}"

COPY "target/${EUREKA_CLIENT_JAR}" "${EUREKA_CLIENT_JAR_CONTAINER_PATH}"
COPY "${EUREKA_CLIENT_PROPERTIES_FILE}" "${EUREKA_CLIENT_PROPERTIES_CONTAINER_PATH}"

I added the repackaged client jar to the root of the docker container and I can confirm that it is there along with the eureka-client.properties file.
The zipkin server starts up fine, but I see no logs indicating it is trying to register with eureka.

Adrian Cole
@adriancole
@mandragorn hmm what you are doing is similar to how stackdriver is integrated.. maybe try to copy that approach instead? this might get you there quicker (in docker I mean)
Adrian Cole
@adriancole
Yehuda Makarov
@yehudamakarov

Hey all, just REALLY looking so hard for info on this:

I have ingress-nginx ingress on GKE. I configured the ingress with a Zipkin tracer that sends to Stackdriver. with enable-open-tracing. Then i also installed the google stackdriver tracing library in my c# api to send spans to stackdriver. But it looks like in the api it is very difficult to figure out how to CONTINUE the span FROM the trace started in the Ingress. So in Stackdriver I always start a new trace when the controller in my api is hit. as opposed to continuing from the ingress.

i want it to be ONE trace, with a span for the ingress, and a span for the api
Adrian Cole
@adriancole
I've no idea the relationship here. what has the "enable-open-tracing" option? I don't think any of our libraries do
Yehuda Makarov
@yehudamakarov
i'll upload more precise snippets. unless you're ok with a diagram
Adrian Cole
@adriancole
I think it is best to validate that this is a relevant support channel for you
I've so far not seen anything related to the code we maintain in your description, except for the word zipkin
this channel is volunteer run, so it is best to get you where you need to go. understand troubleshooting things can be frustrating, but not sure how much we can help on something we have no responsbility over either
so first what is "Zipkin tracer that sends to Stackdriver" this will start the triage
many things call themselves zipkin, and when you said that option seems like it isn't likely something we wrote
Yehuda Makarov
@yehudamakarov
that's what i'm trying to do.
https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/#enable-opentracing
That shows how ingress-nginx can send to a zipkin host.
I have a docker.io/openzipkin/zipkin-gcp container in my cluster.
From this, being that it is sending the logs to stackdriver, I can see a trace from ingress-nginx. that request went to my c# api.
you've helped me with this container in the past... either way, for now, I'm just trying to understand if usually people connect all the spans under one trace, or not necessarily
because any tracing library i try to use in code, doesn't pick up the trace that already started in the ingress and simply add to it with spans. It starts a new trace
Adrian Cole
@adriancole
in general it sounds like you have a propagation problem
so either the ingress-nginx isn't sending b3 headers, or whatever your c# api is isn't reading them
based on your description of the problem anyway (start a new trace problem)
so it is important to know what c# thing you are using, which headers nginx are sending and if that thing supports reading those or not
ex there are two forms of B3 headers (multi and single header) https://github.com/openzipkin/b3-propagation
to triage you can start with this.. if the zipkin-gcp thing is receiving spans, that's good. it cannot affect propagation though
that will be the seam between your apps in this case nginx and the next thing
@nicmunroe has a nice piece on the general art of troubleshooting which applies regardless of library type https://medium.com/nikeengineering/hit-the-ground-running-with-distributed-tracing-core-concepts-ff5ad47c7058
and to answer directly, yes it is the intent to connect all spans in one http request together with the same trace ID
this is universally the case with http microservices
Adrian Cole
@adriancole
for our projects we usually use known working examples.. library choice matters a lot, and without knowing the library we don't know if it works.
adriancole @adriancole has to go for a bit
Yehuda Makarov
@yehudamakarov
thank you for all the info. I have the answers i need. the request after it goes through the nginx ingress has b-3 headers. Maybe i will trouble shoot more within the zipkin library in c#. (which is https://github.com/openzipkin/zipkin4net)
Adrian Cole
@adriancole
yeah that would be odd indeed if the latter didn't work with b3 propagation. you can have a look at the examples directory there.. the project is lightly maintained, but it is used (notably by MdSol)
Adrian Cole
@adriancole
@yehudamakarov unsolicited 2p is to run the examples behind your nginx then compare (assuming they continue the trace)
Yehuda Makarov
@yehudamakarov
@adriancole i will let you know how this goes. thanks for all the advice
Adrian Cole
@adriancole
:thumbsup:
Josh Young
@mandragorn

continuing the docker/zipkin/eureka saga I switched to the other Dockerfile strategy:

# We copy files from the context into a scratch container first to avoid a problem where docker and
# docker-compose don't share layer hashes https://github.com/docker/compose/issues/883 normally.
# COPY --from= works around the issue.
FROM scratch as scratch

COPY . /code/

FROM openzipkin/zipkin-builder as built

COPY --from=scratch /code /code

WORKDIR /code

RUN mvn -B --no-transfer-progress package -DskipTests=true

WORKDIR /zipkin-eureka

RUN cp /code/target/eureka-zipkin-client-*-module.jar eureka-zipkin-client-module.jar && \
  (mkdir eureka-zipkin-client-module && cd eureka-zipkin-client-module && jar -xf ../eureka-zipkin-client-module.jar) && \
  rm eureka-zipkin-client-module.jar

RUN cp /code/eureka-client.properties eureka-client.properties

FROM openzipkin/zipkin:master
MAINTAINER Zipkin "https://zipkin.io/"

COPY --from=built /zipkin-eureka/ /zipkin/

ENV MODULE_OPTS="-Dloader.path=eureka-zipkin-client-module -Dlogging.level.*=DEBUG -Dlogging.level.org=DEBUG -Dlogging.level.com=DEBUG -Dlogging.level.io=DEBUG -Dspring.application.name=zipkin"

As was suggested by @adriancole further up in the channel (Thank you!) and with that I upped the logger to DEBUG. That gave this helpful info on what spring was loading:

============================
CONDITIONS EVALUATION REPORT
============================
Positive matches:
-----------------
....
Negative matches:
-----------------
 ...
   EurekaDiscoveryClientConfigServiceBootstrapConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.cloud.config.client.ConfigServicePropertySourceLocator' (OnClassCondition)
...

I tried also adding spring-cloud-starter-config-client, but that gave issues with missing dependencies. Unfortunately I'm new to spring boot (just started playing with all this yesterday) so I'm not sure where to go from here.

Currently I have eureka setup for service discover in spring boot mostly because that was the first tutorial I was looking at... would Consul be easier to setup with the zipkin docker image? Up until this Eureka has been easy to setup for the other services I was working with, but I haven't tried consul.

Adrian Cole
@adriancole
something that doesn't rely on java types to perform service registration and lookup is easier indeed
what you probably have not tuned right is the jar added to the loader path. it likely is missing an inner thing including the cloud-config library
the "module" jar should have packed that up in other words
that all said, yeah anything that doesn't require modifications to binaries is easier
Thierry Peng
@thpeng
Hi. Is there a way to secure the collector endpoint out-of-the-box in zipkin (e.g. basic auth, oauth ..)?
Adrian Cole
@adriancole
@thpeng if you are using kafka, sure it has some natively supported stuff, as does rabbitmq I think. http we didn't choose to bake in something as there are major issues with basic auth, credential rotation etc we didn't want to step into. Instead just use a proxy that has the features you need
you can call it mesh :)
Thierry Peng
@thpeng
@adriancole thanks. We're stuck with the rest endpoint because of private PaaS setup reasons. I thought about moving zipkin behind the spring-cloud-gateway, securing all non-GET endpoints (allowing the usage of the ui freely). As far as I have seen, the zipkin ui does not use other methods (upload excluded). But then we have also to modify the span reporter in sleuth (using a customized rest template).