Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 13:31
    svenhaag commented #386
  • 13:30
    smksnutmeg commented #493
  • 13:20
    smksnutmeg opened #493
  • 13:05
    basvanbeek labeled #3056
  • 13:05
    basvanbeek labeled #3056
  • 13:05
    basvanbeek labeled #3056
  • 13:04
    basvanbeek labeled #3056
  • 13:04
    basvanbeek opened #3056
  • 09:26
    ferblaca commented #170
  • 09:24
    ferblaca synchronize #170
  • 08:49
    svenhaag commented #386
  • 08:05
    ferblaca synchronize #170
  • 07:39
    anuraaga closed #2125
  • 07:39
    anuraaga commented #2125
  • 07:36

    adriancole on nibble-me-this

    (compare)

  • 07:36

    adriancole on master

    Adds example of custom trace ID… (compare)

  • 07:36
    adriancole closed #1144
  • 07:31
    hanahmily synchronize #3050
Adrian Cole
@adriancole
but depending on how written, or limits of the framework, you can end up in this situation. in the UI and also the dep linker, we consider the localEndpoint to differentiate when the span IDs are the same
shengjiz
@shengjiz
I read the source code and found that microseconds are calculated by the local relative time(A trace on each node has a relative time), but the relative time of nodes is different, so whether the microseconds calculated at different nodes are comparable.
Adrian Cole
@adriancole
@shengjiz no they aren't strictly comparable. hierarchy can help determine which happened before the other in absolute time. in any case, keeping server times close is helpful
DDd
@webmutation
Hi, is there any up to date Zipkin Helm chart? I could only find the one from Financial Times, but that one seems outdated
I saw Jaeger helm in incubator and was surprised to not see one for zipkin
Adrian Cole
@adriancole
@webmutation dare you to make a pull request to the incubator with a zipkin one :D
DDd
@webmutation
if there is not one more up to date than the financial times one, I will look at their and see if there are many changes needed or not.
Javi
@Javigomez_gitlab

@adriancole

if a span was unfinished, there would be no duration for it

[
    [
        {
            "traceId": "0823811ca25bdad3",
            "parentId": "0823811ca25bdad3",
            "id": "6439eb5a54939542",
            "kind": "CLIENT",
            "name": "get",
            "timestamp": 1579883159955171,
            "duration": 809817,
            "localEndpoint": {
                "serviceName": "myservice"
            },
            "tags": {
                "http.path": "/user",
                "http.status_code": "200"
            }
        },
        {
            "traceId": "0823811ca25bdad3",
            "parentId": "0823811ca25bdad3",
            "id": "653ef3386c7c8139",
            "kind": "CLIENT",
            "name": "get",
            "timestamp": 1579883159955740,
            "duration": 817655,
            "localEndpoint": {
                "serviceName": "myservice"
            },
            "tags": {
                "http.path": "/u/settings",
                "http.status_code": "200"
            }
        },
        {
            "traceId": "0823811ca25bdad3",
            "parentId": "0823811ca25bdad3",
            "id": "58cdf6b54f3e50ae",
            "kind": "CLIENT",
            "name": "get",
            "timestamp": 1579883159965163,
            "duration": 819692,
            "localEndpoint": {
                "serviceName": "myservice"
            },
            "tags": {
                "http.path": "/u/accounts",
                "http.status_code": "200"
            }
        },
        {
            "traceId": "0823811ca25bdad3",
            "parentId": "0823811ca25bdad3",
            "id": "427b48ddce3ccacd",
            "kind": "CLIENT",
            "name": "get",
            "timestamp": 1579883159960778,
            "duration": 900222,
            "localEndpoint": {
                "serviceName": "myservice"
            },
            "tags": {
                "http.path": "/u/feature-flags",
                "http.status_code": "200"
            }
        },
        {
            "traceId": "0823811ca25bdad3",
            "parentId": "0823811ca25bdad3",
            "id": "147230185f20c741",
            "kind": "CLIENT",
            "name": "get",
            "timestamp": 1579883159953872,
            "duration": 1239779,
            "localEndpoint": {
                "serviceName": "myservice"
            },
            "tags": {
                "http.path": "/workers/mine",
                "http.status_code": "200"
            }
        },
        {
            "traceId": "0823811ca25bdad3",
            "parentId": "0823811ca25bdad3",
            "id": "07d4dbd088e6633c",
            "kind": "CLIENT",
            "name": "get",
            "timestamp": 1579883160880901,
            "duration": 552661,
            "localEndpoint": {
                "serviceName": "myservice"
            },
            "tags": {
                "http.path": "/workers/01D/feature",
                "http.status_code": "200"
            }
        },
        {
            "traceId": "0823811ca25bdad3",
            "parentId": "0823811ca25bdad3",
            "id": "b148e6b471cd2dfa",
            "kind": "CLIENT",
            "name": "get",
            "timestamp": 1579883160880282,
            "duration": 560505,
            "localEndpoint": {
                "serviceName": "myservice"
            },
            "tags": {
                "http.path": "/current-features",
                "http.status_code": "200"
            }
        },
        {
            "traceId": "0823811ca25bdad3",
            "parentId": "0823811ca25bdad3",
            "id": "bfc4a0a54601da77",
            "kind": "CLIENT",
            "name": "get",
            "timestamp": 1579883160886515,
            "duration": 562673,
            "localEndpoint": {
                "serviceName": "myservice"
            },
            "tags": {
                "http.path": "/workers/01D/feature",
                "http.status_code": "200"
            }
        },
        {
            "traceId": "0823811ca25bdad3",
            "
we can confirm that no spans are missing duration
Javi
@Javigomez_gitlab
How could we validate and prove that the problem is not in unfinished spans but that somehow we have "leaked context" problem?
Adrian Cole
@adriancole
@Javigomez_gitlab you can hack the recorder so that it not only reports spans but also logs them. in this case you could see if something seems fishy for example things ignoring their actual parent etc https://github.com/openzipkin/zipkin-js-example/blob/master/web/recorder.js#L24
Javi
@Javigomez_gitlab
thanks
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)