Skip to content

ExpediaDotCom/haystack-client-java

Repository files navigation

Build Status codecov License

Haystack Client Java

Haystack client java is an OpenTracing compatible library which is used to capture information about distributed operations and report them to haystack

Opentracing API usage has been documented at https://github.com/opentracing/opentracing-java.

OpenTracing version compatibility

The current OpenTracing version 0.33 has introduced backwards incompatible changes with all previous versions. Please make sure that your dependencies on OpenTracing align to the 0.33 version to avoid runtime issues.

Examples

You can look at our sample projects for how to trace a simple web application

Contributing and Developing

Please see CONTRIBUTING.md

Core Modules

haystack-client-core - library provides an implementation of io.opentracing.Tracer that sends spans to Haystack server.

Addon Modules

haystack-client-metrics-micrometer: metrics provider backed by micrometer, to report internal Haystack Client metrics to third-party backends, such as Prometheus

haystack-client-metrics-dropwizard: metrics provider backed by dropwizard-metrics, to report internal Haystack Client metrics to third-party backends, such as Graphite

haystack-client-metrics-api: metrics api consumed by haystack-client-core to report internal Haystack Client metrics. By default its bundled with a NoOp metrics dispatcher, add any of the obove dependencies to push the client metrics.

Importing Dependencies

All artifacts are published to Maven Central. Snapshot artifacts are also published to [Sonatype][sonatype]. Follow these [instructions][sonatype-snapshot-instructions] to add the snapshot repository to your build system.

Please use the latest version: [![Released Version][maven-img]][maven]

In the usual case, you just need to include the following dependency to your project:

<dependency>
  <groupId>com.expedia.www</groupId>
  <artifactId>haystack-client-java-core</artifactId>
  <version>$latestClientVersion</version>
  <type>pom</type>
</dependency>

Integrations

In case your apps are already wired in with some kind of instrumentation library other than OpenTracing you could refer to the below links based on your usecase

License

This project is licensed under the Apache License v2.0 - see the LICENSE.txt file for details.

Benchmarks

We have published our benchmarks here