Reporters and collectors for use in Google Cloud Platform
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Moves build to JDK 11 (#99) Oct 18, 2018
.mvn/wrapper Updates versions in preparation of a release (#110) Dec 5, 2018
autoconfigure [maven-release-plugin] prepare for next development iteration Dec 5, 2018
benchmarks [maven-release-plugin] prepare for next development iteration Dec 5, 2018
build-support Adds zipkin-sender-stackdriver (#62) Mar 22, 2018
propagation-stackdriver [maven-release-plugin] prepare for next development iteration Dec 5, 2018
sender-stackdriver [maven-release-plugin] prepare for next development iteration Dec 5, 2018
src/etc Reorganizes project for zipkin-server integration as io.zipkin.gcp (#48) Feb 24, 2018
storage-stackdriver [maven-release-plugin] prepare for next development iteration Dec 5, 2018
translation-stackdriver [maven-release-plugin] prepare for next development iteration Dec 5, 2018
.gitignore Updates to latest zipkin Apr 9, 2018
.settings.xml Fixes build Feb 24, 2018
.travis.yml Moves build to JDK 11 (#99) Oct 18, 2018
CONTRIBUTING.md Reorganizes project for zipkin-server integration as io.zipkin.gcp (#48) Feb 24, 2018
LICENSE Initial commit Nov 4, 2016
README.md Logs translation when SpanTranslator is at FINE/DEBUG level (#73) Apr 10, 2018
RELEASE.md Reorganizes project for zipkin-server integration as io.zipkin.gcp (#48) Feb 24, 2018
mvnw Bumps versions of things Aug 1, 2018
mvnw.cmd Bumps versions of things Aug 1, 2018
pom.xml [maven-release-plugin] prepare for next development iteration Dec 5, 2018

README.md

Gitter chat Build Status Download

zipkin-gcp

Shared libraries that provide Zipkin integration with the Google Cloud Platform. Requires JRE 6 or later.

Usage

These components integrate traced applications and servers through Google Cloud services via interfaces defined in Zipkin and zipkin-reporter-java.

Senders

The component in an traced application that sends timing data (spans) out of process is called a Sender. Senders are called on interval by an async reporter.

NOTE: Applications can be written in any language, while we currently only have senders in Java, senders in other languages are welcome.

Sender Description
Stackdriver Trace Free cloud service provider

Collectors

The component in a zipkin server that receives trace data is called a collector. This decodes spans reported by applications and persists them to a configured storage component.

Collector Description

Storage

The component in a zipkin server that persists and queries collected data is called StorageComponent. This primarily supports the Zipkin Api and all collector components.

Storage Description
Stackdriver Trace Free cloud service provider

Server integration

In order to integrate with zipkin-server, you need to use properties launcher to load your collector (or sender) alongside the zipkin-server process.

To integrate a module with a Zipkin server, you need to:

  • add a module jar to the loader.path
  • enable the profile associated with that module
  • launch Zipkin with PropertiesLauncher

Each module will also have different minimum variables that need to be set.

Ex.

$ curl -sSL https://zipkin.io/quickstart.sh | bash -s
$ curl -sSL https://zipkin.io/quickstart.sh | bash -s io.zipkin.java:zipkin-autoconfigure-storage-stackdriver:LATEST:module stackdriver.jar
$ STORAGE_TYPE=stackdriver STACKDRIVER_PROJECT_ID=zipkin-demo \
    java \
    -Dloader.path='stackdriver.jar,stackdriver.jar!/lib' \
    -Dspring.profiles.active=stackdriver \
    -cp zipkin.jar \
    org.springframework.boot.loader.PropertiesLauncher

Example integrating Stackdriver Storage

If you cannot use our Docker image, you can still integrate yourself by downloading a couple jars.

Here's an example of integrating Stackdriver storage.

Troubleshooting translation issues

When using a component that sends data to Stackdriver, if you see nothing in the console, try enabling DEBUG logging on the translation component. If using Spring Boot (ex normal app or zipkin server integration), add the following system property:

-Dlogging.level.zipkin2.translation.stackdriver=DEBUG

Note: If using our docker image or anything that uses JAVA_OPTS, you can add this there.

With this in place, you'll see the input and output of translation like below. Keep a copy of this when contacting us on gitter for support.

2018-04-09 13:58:44.112 DEBUG [/] 11325 --- [   XNIO-2 I/O-3] z.t.stackdriver.SpanTranslator           : >> translating zipkin span: {"traceId":"d42316227862f939","parentId":"d42316227862f939","id":"dfbb21f9cf4c52b3","kind":"CLIENT","name":"get","timestamp":1523253523054380,"duration":4536,"localEndpoint":{"serviceName":"frontend","ipv4":"192.168.1.113"},"tags":{"http.method":"GET","http.path":"/api"}}
2018-04-09 13:58:44.113 DEBUG [/] 11325 --- [   XNIO-2 I/O-3] z.t.stackdriver.SpanTranslator           : << translated to stackdriver span: span_id: 16199746076534411288
kind: RPC_CLIENT
name: "get"
start_time {
  seconds: 1523253523
  nanos: 54380000
}
end_time {
  seconds: 1523253523
  nanos: 58916000
}
parent_span_id: 15286085897530046777
labels {
  key: "/http/method"
  value: "GET"
}
labels {
  key: "zipkin.io/http.path"
  value: "/api"
}
labels {
  key: "/component"
  value: "frontend"
}