/zipkin-js-example

Example project that shows how to use zipkin with javascript

Primary LanguageJavaScriptApache License 2.0Apache-2.0

Basic example showing distributed tracing from a web browser across node.js apps

This is an example app where a web browser and two express (node.js) services collaborate on an http request. Notably, timing of these requests are recorded into Zipkin, a distributed tracing system. This allows you to see the how long the whole operation took, as well how much time was spent in each service.

Here's an example of what it looks like zipkin screen shot

This example was initially shown at DevOpsDays Singapore on Oct 8, 2016. It was ported from similar examples, such as Spring Boot.

Implementation Overview

Web requests are served by Express controllers, and tracing is automatically performed for you by zipkin-js. JavaScript used in the web browser is bundled with browserify.

Running the example

This example has two services: frontend and backend. They both report trace data to zipkin. To setup the demo, you need to start frontend.js, backend.js and Zipkin. You'll also need to bundle the JavaScript used by the web browser.

Once the services are started, and the JavaScript is bundled, open index.html

Next, you can view traces that went through the backend via http://localhost:9411/?serviceName=browser

  • This is a locally run zipkin service which keeps traces in memory

Setup

Before you start anything, you'll need to download the libraries used in this demo:

$ npm install

Once that's done, bundle the JavaScript used by the browser:

$ npm run browserify

Starting the Services

In a separate tab or window, run npm start, which will start both frontend.js and backend.js:

$ npm start

Next, run Zipkin, which stores and queries traces reported by the browser and above services.

$ wget -O zipkin.jar 'https://search.maven.org/remote_content?g=io.zipkin.java&a=zipkin-server&v=LATEST&c=exec'
$ java -jar zipkin.jar

Or, if you're using docker:

$ docker run -d -p 9411:9411 openzipkin/zipkin