All Projects → openzipkin → Zipkin Go

openzipkin / Zipkin Go

Licence: apache-2.0
Zipkin tracer library for go

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Zipkin Go

Opencensus Node
A stats collection and distributed tracing framework
Stars: ✭ 249 (-42.76%)
Mutual labels:  tracing, instrumentation, distributed-tracing, trace, zipkin
Zipkin Go Opentracing
OpenTracing Bridge for Zipkin Go
Stars: ✭ 472 (+8.51%)
Mutual labels:  tracing, instrumentation, distributed-tracing, trace, zipkin
zipkin-cpp-opentracing
OpenTracing Tracer implementation for Zipkin in C++
Stars: ✭ 46 (-89.43%)
Mutual labels:  instrumentation, tracing, trace, zipkin
Opencensus Web
A stats collection and distributed tracing framework
Stars: ✭ 168 (-61.38%)
Mutual labels:  tracing, instrumentation, distributed-tracing, trace
Brave Opentracing
Bridge between OpenTracing and Brave
Stars: ✭ 64 (-85.29%)
Mutual labels:  tracing, instrumentation, distributed-tracing, zipkin
Spring Cloud Sleuth
Distributed tracing for spring cloud
Stars: ✭ 1,531 (+251.95%)
Mutual labels:  tracing, instrumentation, distributed-tracing, zipkin
Molten
php probe for zipkin and opentracing
Stars: ✭ 740 (+70.11%)
Mutual labels:  tracing, instrumentation, trace, zipkin
zipkin-ruby-opentracing
OpenTracing Tracer implementation for Zipkin in Ruby
Stars: ✭ 15 (-96.55%)
Mutual labels:  instrumentation, tracing, trace, zipkin
Brave
Java distributed tracing implementation compatible with Zipkin backend services.
Stars: ✭ 2,117 (+386.67%)
Mutual labels:  tracing, instrumentation, distributed-tracing, zipkin
dropwizard-zipkin
Dropwizard Zipkin Bundle
Stars: ✭ 48 (-88.97%)
Mutual labels:  instrumentation, tracing, zipkin, distributed-tracing
Opencensus Java
A stats collection and distributed tracing framework
Stars: ✭ 640 (+47.13%)
Mutual labels:  tracing, distributed-tracing, trace, zipkin
go-sensor
🚀 Go Distributed Tracing & Metrics Sensor for Instana
Stars: ✭ 90 (-79.31%)
Mutual labels:  instrumentation, tracing, trace, distributed-tracing
gateway
A proxy to buffer and forward metrics, events, and traces.
Stars: ✭ 94 (-78.39%)
Mutual labels:  tracing, zipkin, distributed-tracing
Opencensus Csharp
Distributed tracing and stats collecting framework
Stars: ✭ 126 (-71.03%)
Mutual labels:  tracing, distributed-tracing, trace
pitchfork
Convert tracing data between Zipkin and Haystack formats
Stars: ✭ 40 (-90.8%)
Mutual labels:  tracing, zipkin, distributed-tracing
Jaeger Ui
Web UI for Jaeger
Stars: ✭ 639 (+46.9%)
Mutual labels:  tracing, distributed-tracing, trace
Zipkin
Zipkin is a distributed tracing system
Stars: ✭ 14,969 (+3341.15%)
Mutual labels:  tracing, distributed-tracing, zipkin
thundra-agent-nodejs
Thundra Lambda Node.js Agent
Stars: ✭ 31 (-92.87%)
Mutual labels:  instrumentation, tracing, distributed-tracing
nginx-opentracing
Instrument nginx for OpenTracing.
Stars: ✭ 21 (-95.17%)
Mutual labels:  instrumentation, tracing, zipkin
easeagent
An agent component for the Java system
Stars: ✭ 437 (+0.46%)
Mutual labels:  tracing, zipkin, distributed-tracing

Zipkin Library for Go

Travis CI CircleCI Appveyor CI Coverage Status Go Report Card GoDoc Gitter chat Sourcegraph

Zipkin Go is the official Go Tracer implementation for Zipkin, supported by the OpenZipkin community.

package organization

zipkin-go is built with interoperability in mind within the OpenZipkin community and even 3rd parties, the library consists of several packages.

The main tracing implementation can be found in the root folder of this repository. Reusable parts not considered core implementation or deemed beneficiary for usage by others are placed in their own packages within this repository.

model

This library implements the Zipkin V2 Span Model which is available in the model package. It contains a Go data model compatible with the Zipkin V2 API and can automatically sanitize, parse and (de)serialize to and from the required JSON representation as used by the official Zipkin V2 Collectors.

propagation

The propagation package and B3 subpackage hold the logic for propagating SpanContext (span identifiers and sampling flags) between services participating in traces. Currently Zipkin B3 Propagation is supported for HTTP and GRPC.

middleware

The middleware subpackages contain officially supported middleware handlers and tracing wrappers.

http

An easy to use http.Handler middleware for tracing server side requests is provided. This allows one to use this middleware in applications using standard library servers as well as most available higher level frameworks. Some frameworks will have their own instrumentation and middleware that maps better for their ecosystem.

For HTTP client operations NewTransport can return a http.RoundTripper implementation that can either wrap the standard http.Client's Transport or a custom provided one and add per request tracing. Since HTTP Requests can have one or multiple redirects it is advisable to always enclose HTTP Client calls with a Span either around the *http.Client call level or parent function level.

For convenience NewClient is provided which returns a HTTP Client which embeds *http.Client and provides an application span around the HTTP calls when calling the DoWithAppSpan() method.

grpc

Easy to use grpc.StatsHandler middleware are provided for tracing gRPC server and client requests.

For a server, pass NewServerHandler when calling NewServer, e.g.,

import (
	"google.golang.org/grpc"
	zipkingrpc "github.com/openzipkin/zipkin-go/middleware/grpc"
)

server = grpc.NewServer(grpc.StatsHandler(zipkingrpc.NewServerHandler(tracer)))

For a client, pass NewClientHandler when calling Dial, e.g.,

import (
	"google.golang.org/grpc"
	zipkingrpc "github.com/openzipkin/zipkin-go/middleware/grpc"
)

conn, err = grpc.Dial(addr, grpc.WithStatsHandler(zipkingrpc.NewClientHandler(tracer)))

reporter

The reporter package holds the interface which the various Reporter implementations use. It is exported into its own package as it can be used by 3rd parties to use these Reporter packages in their own libraries for exporting to the Zipkin ecosystem. The zipkin-go tracer also uses the interface to accept 3rd party Reporter implementations.

HTTP Reporter

Most common Reporter type used by Zipkin users transporting Spans to the Zipkin server using JSON over HTTP. The reporter holds a buffer and reports to the backend asynchronously.

Kafka Reporter

High performance Reporter transporting Spans to the Zipkin server using a Kafka Producer digesting JSON V2 Spans. The reporter uses the Sarama async producer underneath.

usage and examples

HTTP Server Example

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].