All Projects → tpolecat → Natchez

tpolecat / Natchez

Licence: mit
functional tracing for cats

Programming Languages

scala
5932 projects

Projects that are alternatives of or similar to Natchez

Trace4cats
Distributed app tracing implementation in pure scala using cats-effect
Stars: ✭ 80 (-62.62%)
Mutual labels:  cats, tracing, opentracing
Jaeger Openshift
Support for deploying Jaeger into OpenShift
Stars: ✭ 53 (-75.23%)
Mutual labels:  tracing, opentracing
Dd Opentracing Cpp
Datadog Opentracing C++ Client
Stars: ✭ 22 (-89.72%)
Mutual labels:  tracing, opentracing
Brave Opentracing
Bridge between OpenTracing and Brave
Stars: ✭ 64 (-70.09%)
Mutual labels:  tracing, opentracing
Gf
GoFrame is a modular, powerful, high-performance and enterprise-class application development framework of Golang.
Stars: ✭ 6,501 (+2937.85%)
Mutual labels:  tracing, opentracing
Jaeger Ui
Web UI for Jaeger
Stars: ✭ 639 (+198.6%)
Mutual labels:  tracing, opentracing
Java Vertx Web
OpenTracing instrumentation for Vert.x web package
Stars: ✭ 21 (-90.19%)
Mutual labels:  tracing, opentracing
Java Specialagent
Automatic instrumentation for 3rd-party libraries in Java applications with OpenTracing.
Stars: ✭ 156 (-27.1%)
Mutual labels:  tracing, opentracing
Stagemonitor
an open source solution to application performance monitoring for java server applications
Stars: ✭ 1,664 (+677.57%)
Mutual labels:  tracing, opentracing
Dd Trace Dotnet
.NET Tracer for Datadog APM
Stars: ✭ 125 (-41.59%)
Mutual labels:  tracing, opentracing
Zipkin Go Opentracing
OpenTracing Bridge for Zipkin Go
Stars: ✭ 472 (+120.56%)
Mutual labels:  tracing, opentracing
Dd Trace Php
Datadog Tracing PHP Client
Stars: ✭ 203 (-5.14%)
Mutual labels:  tracing, opentracing
Jaeger Kubernetes
Support for deploying Jaeger into Kubernetes
Stars: ✭ 402 (+87.85%)
Mutual labels:  tracing, opentracing
Molten
php probe for zipkin and opentracing
Stars: ✭ 740 (+245.79%)
Mutual labels:  tracing, opentracing
Go Microservice Helpers
A collection of handy snippets that simplify creation of GRPC servers and clients
Stars: ✭ 400 (+86.92%)
Mutual labels:  tracing, opentracing
Sqlhooks
Attach hooks to any database/sql driver
Stars: ✭ 397 (+85.51%)
Mutual labels:  tracing, opentracing
Java Spring Cloud
Distributed tracing for Spring Boot, Cloud and other Spring projects
Stars: ✭ 326 (+52.34%)
Mutual labels:  tracing, opentracing
Nginx Opentracing
NGINX plugin for OpenTracing
Stars: ✭ 341 (+59.35%)
Mutual labels:  tracing, opentracing
Java Spring Web
OpenTracing Spring Web instrumentation
Stars: ✭ 89 (-58.41%)
Mutual labels:  tracing, opentracing
Dd Trace Js
JavaScript APM Tracer
Stars: ✭ 212 (-0.93%)
Mutual labels:  tracing, opentracing

Natchez Trace

Join the chat at https://gitter.im/tpolecat/natchez

Note on Versioning

  • Versions 0.0.x are built with Cats-Effect 2 from branch master. This is a terminal series and will end sometime in 2021.
  • Versions 0.1.x are built with Cats-Effect 3 from branch series/0.1. This will be the continuing series moving forward.
  • Contibutions should target master. Maintainers will merge these into series/0.1 as needed.

This is a minimal distributed tracing effect for Cats, inspired by earlier work done on puretracing. There is very little documentation (sorry) but nevertheless people are using this at scale and it seems to work.

Natchez currently has integration with:

It supports

  • spans
  • numeric, string, and boolean fields
  • swizzling to and from http headers

It does not support

  • logs
  • baggage

If you can make a case for either of these ideas I will consider supporting them, but they seem unnecessary to me.

The Trace effect looks like this:

def doStuff[F[_]: Trace]: F[Whatevs] =
  Trace[F].span("span here") {
    // Do stuff in F here. This is the extent of the span.
    // You can use the instance to:
    //  - create child spans
    //  - set data fields
    //  - extract a set of headers to pass to a remote
    //    service, which can then continue the trace
  }

To try it out start up Jaeger as your trace collector.

docker run -d --name jaeger \
  -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \
  -p 5775:5775/udp \
  -p 6831:6831/udp \
  -p 6832:6832/udp \
  -p 5778:5778 \
  -p 16686:16686 \
  -p 14268:14268 \
  -p 9411:9411 \
  jaegertracing/all-in-one:1.8

Now, finally, if you run the example in modules/examples (with sbt examples/run) and go to localhost:16686 you can then select natchez-example and search for traces.

To use it in your own projects (not recommended yet) you can do

// or whichever module you need
libraryDependencies += "org.tpolecat"  %% "natchez-jaeger" % <version>
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].