All Projects → openzipkin → Brave

openzipkin / Brave

Licence: apache-2.0
Java distributed tracing implementation compatible with Zipkin backend services.

Programming Languages

java
68154 projects - #9 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to Brave

dropwizard-zipkin
Dropwizard Zipkin Bundle
Stars: ✭ 48 (-97.73%)
Mutual labels:  instrumentation, tracing, zipkin, distributed-tracing, zipkin-brave
Spring Cloud Sleuth
Distributed tracing for spring cloud
Stars: ✭ 1,531 (-27.68%)
Mutual labels:  tracing, instrumentation, distributed-tracing, zipkin, zipkin-brave
Zipkin Go Opentracing
OpenTracing Bridge for Zipkin Go
Stars: ✭ 472 (-77.7%)
Mutual labels:  tracing, instrumentation, distributed-tracing, zipkin
Brave Opentracing
Bridge between OpenTracing and Brave
Stars: ✭ 64 (-96.98%)
Mutual labels:  tracing, instrumentation, distributed-tracing, zipkin
easeagent
An agent component for the Java system
Stars: ✭ 437 (-79.36%)
Mutual labels:  tracing, zipkin, distributed-tracing, zipkin-brave
Zipkin Go
Zipkin tracer library for go
Stars: ✭ 435 (-79.45%)
Mutual labels:  tracing, instrumentation, distributed-tracing, zipkin
Zipkin
Zipkin is a distributed tracing system
Stars: ✭ 14,969 (+607.09%)
Mutual labels:  tracing, distributed-tracing, zipkin, openzipkin
Opencensus Node
A stats collection and distributed tracing framework
Stars: ✭ 249 (-88.24%)
Mutual labels:  tracing, instrumentation, distributed-tracing, zipkin
nginx-opentracing
Instrument nginx for OpenTracing.
Stars: ✭ 21 (-99.01%)
Mutual labels:  instrumentation, tracing, zipkin
zipkin-ruby-opentracing
OpenTracing Tracer implementation for Zipkin in Ruby
Stars: ✭ 15 (-99.29%)
Mutual labels:  instrumentation, tracing, zipkin
go-sensor
🚀 Go Distributed Tracing & Metrics Sensor for Instana
Stars: ✭ 90 (-95.75%)
Mutual labels:  instrumentation, tracing, distributed-tracing
gateway
A proxy to buffer and forward metrics, events, and traces.
Stars: ✭ 94 (-95.56%)
Mutual labels:  tracing, zipkin, distributed-tracing
kong-plugin-zipkin
A Kong plugin for propogating zipkin spans and reporting spans to a zipkin server - this plugin has been moved into https://github.com/Kong/kong, please open issues and PRs in that repo
Stars: ✭ 60 (-97.17%)
Mutual labels:  tracing, zipkin, openzipkin
zipkin-cpp-opentracing
OpenTracing Tracer implementation for Zipkin in C++
Stars: ✭ 46 (-97.83%)
Mutual labels:  instrumentation, tracing, zipkin
pitchfork
Convert tracing data between Zipkin and Haystack formats
Stars: ✭ 40 (-98.11%)
Mutual labels:  tracing, zipkin, distributed-tracing
ruby-sensor
💎 Ruby Distributed Tracing & Metrics Sensor for Instana
Stars: ✭ 23 (-98.91%)
Mutual labels:  instrumentation, tracing, distributed-tracing
Zipkin Js
Zipkin instrumentation for Node.js and browsers
Stars: ✭ 489 (-76.9%)
Mutual labels:  tracing, distributed-tracing, zipkin
Molten
php probe for zipkin and opentracing
Stars: ✭ 740 (-65.04%)
Mutual labels:  tracing, instrumentation, zipkin
thundra-agent-python
Thundra Lambda Python Agent
Stars: ✭ 36 (-98.3%)
Mutual labels:  instrumentation, tracing, distributed-tracing
zipkin-php-example
See how much time php services spend on an http request
Stars: ✭ 52 (-97.54%)
Mutual labels:  zipkin, distributed-tracing, openzipkin

Gitter chat Build Status Maven Central

Brave

Brave is a distributed tracing instrumentation library. Brave typically intercepts production requests to gather timing data, correlate and propagate trace contexts. While typically trace data is sent to Zipkin server, third-party plugins are available to send to alternate services such as Amazon X-Ray.

This repository includes dependency-free Java libraries and instrumentation for common components used in production services. For example, this includes trace filters for Servlet and log correlation for Apache Log4J.

You can look at our example project for how to trace a simple web application.

What's included

Brave's dependency-free tracer library works against JRE6+. This is the underlying api that instrumentation use to time operations and add tags that describe them. This library also includes code that parses X-B3-TraceId headers.

Most users won't write tracing code directly. Rather, they reuse instrumentation others have written. Check our instrumentation and Zipkin's list before rolling your own. Common tracing libraries like JDBC, Servlet and Spring already exist. Instrumentation written here are tested and benchmarked.

If you are trying to trace legacy applications, you may be interested in Spring XML Configuration. This allows you to setup tracing without any custom code.

You may want to put trace IDs into your log files, or change thread local behavior. Look at our context libraries, for integration with tools such as SLF4J.

Version Compatibility policy

All Brave libraries match the minimum Java version of what's being traced or integrated with, and adds no 3rd party dependencies. The goal is to neither impact your projects' choices, nor subject your project to dependency decisions made by others.

For example, even including a basic reporting library, zipkin-sender-urlconnection, Brave transitively includes no json, logging, protobuf or thrift dependency. This means zero concern if your application chooses a specific version of SLF4J, Gson or Guava. Moreover, the entire dependency tree including basic reporting in json, thrift or protobuf is less than 512KiB of jars.

There is a floor Java version of 1.6, which allows older JREs and older Android runtimes, yet may limit some applications. For example, Servlet 2.5 works with Java 1.5, but due to Brave being 1.6, you will not be able to trace Servlet 2.5 applications until you use at least JRE 1.6.

All integrations set their associated library to "provided" scope. This ensures Brave doesn't interfere with the versions you choose.

Some libraries update often which leads to api drift. In some cases, we test versions ranges to reduce the impact of this. For example, we test gRPC and Kafka against multiple library versions.

Artifacts

All artifacts publish to the group ID "io.zipkin.brave". We use a common release version for all components.

Library Releases

Snapshots are uploaded to Sonatype which synchronizes with Maven Central

Library Snapshots

Snapshots are uploaded to Sonatype after commits to master.

Version alignments

When using multiple brave components, you'll want to align versions in one place. This allows you to more safely upgrade, with less worry about conflicts.

You can use our Maven instrumentation BOM (Bill of Materials) for this:

Ex. in your dependencies section, import the BOM like this:

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>io.zipkin.brave</groupId>
        <artifactId>brave-bom</artifactId>
        <version>${brave.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

Now, you can leave off the version when choosing any supported instrumentation. Also any indirect use will have versions aligned:

<dependency>
  <groupId>io.zipkin.brave</groupId>
  <artifactId>brave-instrumentation-okhttp3</artifactId>
</dependency>

With the above in place, you can use the property brave.version to override dependency versions coherently. This is most commonly to test a new feature or fix.

Note: If you override a version, always double check that your version is valid (equal to or later) than what you are updating. This will avoid class conflicts.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].