-
Notifications
You must be signed in to change notification settings - Fork 12
Investigate vizceral output #1
Comments
From @mansu on November 22, 2016 6:28 @adriancole We used the open source spark job to get a dependency graph and visualized it with vizceral. It was a very good visualization. But the data quality can be improved. We will try to open source this also. |
From @devinsba on November 22, 2016 15:22 I'm very interested in this. I was hoping to be able to do some of this using SQS/SNS/Kinesis for reading the data in realtime instead of doing windows from the database |
From @tramchamploo on December 26, 2016 7:36 Working on integration between vizceral and zipkin. I've added a new api like /vizceral which simply query all traces in the last few seconds and use DependencyLinker to link them. Tried to set the
Anyone have any ideas? |
the code @tramchamploo mentions that limits the result count in elasticsearch to 1024 is here https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/elasticsearch/src/main/java/zipkin/storage/elasticsearch/ElasticsearchSpanStore.java#L140 |
From @hvandenb on February 6, 2017 15:39 Anyone work on this integration and made it available? There is an example project that shows how this was done with Hystrix. https://github.com/OskarKjellin/vizceral-hystrix |
@tramchamploo ps can you check with latest zipkin 1.20+ There's a query-limit relating change there? (Our tests now look for 1000 dependency links.. maybe I can change that to 1025 :) ) cc @lijunyong |
@hvandenb so far I've seen nothing open sourced on this topic, rather a few people experimenting on their own. @tramchamploo @naoman, @mansu do any of you have code to share around vizceral? I know that has been a hot topic and something clearly wanted (even if the impl is imperfect due to limited data in zipkin). By sharing with others, someone might be able to progress this as it has been stuck for over 3 months now. This could be as simple as a gist or code paste. |
From @naoman on February 7, 2017 5:20 Sorry for the delay guys. We were busy with open sourcing our (Pinterest) Spark collector for Zipkin and couldn't share much here. As part of a hackathon, we were able to modify this spark collector to build service dependency graph on the streaming data and push the graph to Vizceral, in real-time. I'll clean up the code and share it here, hopefully in next couple of weeks. |
@adriancole , was wondering if there are any updates on this. Seems pretty cool. |
This repo is unfortunately lacking engagement or progress. It might end up
in the attic if this continues. Probably a more specific project just for
vizceral may have more success. For example, you can emit to vizceral
directly and it could be more popular to do that.
|
Very interested in this topic. |
Since I posted it in gitter, I will post it here too: https://gist.github.com/devinsba/32bf8e1da56a5e368f1d697dfb3b6dd5 This is the prototype I built based on the kinesis collector. It outputs json on it's one endpoint in the shape the UI likes |
From @adriancole on November 22, 2016 5:43
Vizceral is a streaming aggregation tool similar to the service dependency graph we have now (but more pretty and powerful).
https://github.com/Netflix/vizceral
There've been a few look into this. I played around with it a bit, toying with a custom version of our dependency graph linker or using jq to translate stored traces. I also thought maybe this could be done online with a custom kafka or elasticsearch 5 pipeline. Or maybe something in-between, like a 1 minute interval hack of our spark job. There's also rumors of a spark alternative to normal zipkin collector (ahem @mansu ahem :) )
Here is a summary of notes last time this came up, when I chatted with @tramchamploo
so just to play with things you could use dependency linker like the zipkin-dependencies job does, except windowed into minute, not days. Use the zipkin api and
GET /api/v1/traces
with a timestamp and lookback of your choosing (ex 1 minute). With a custom linker, you can emit vizceral data directly or into a new index for the experiment, like zipkin-vizceral-yyyy-MM-dd-HHmm. In other words, it is like the existing spark job, but writing vizceral format and much more frequently.To dig deeper, you'd want to some "partition" vs a "grouping" command like a groupBy, in order to group the traces into minutes.. so like before this flatMap here: https://github.com/openzipkin/zipkin-dependencies/blob/master/elasticsearch/src/main/java/zipkin/dependencies/elasticsearch/ElasticsearchDependenciesJob.java#L116 This would be the thing that buckets traces into epoch minutes.
In order to get the service relationships, you need to walk the trace tree. To generate the tree you need to merge multiple documents (which consitute a trace), to tell which pieces are a client or server call. This is what the DependencyLinker does.
So basically, by bucketing offline data into 1 minute intervals (based on the root span's timestamp), you can get pretty good feedback. It will be mostly correct as traces are less duration than a minute. By using the api and a variation of our linker, you'd get a good head start which can of course be refactored later if/when a real-time ingestion pipeline exists.
Copied from original issue: openzipkin/zipkin#1416
The text was updated successfully, but these errors were encountered: