| CARVIEW |
servant-tracing
Please see the README on Github at https://github.com/ChrisCoffey/haskell-opentracing-light#readme
[Skip to Readme]
Downloads
- servant-tracing-0.2.0.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
| Versions [RSS] | 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.2.0.0 |
|---|---|
| Change log | ChangeLog.md |
| Dependencies | aeson (>=2.0.1.0 && <3), async, base (>=4.7 && <5), bytestring, bytestring-lexing, containers, hashable, http-api-data, http-client, http-types, lifted-base, monad-control, mtl, random, servant, text, time, unordered-containers, wai [details] |
| License | MIT |
| Copyright | 2018-2021 Chris Coffey |
| Author | Chris Coffey |
| Maintainer | chris@coffey.dev |
| Uploaded | by ChrisCoffey at 2021-12-19T20:54:18Z |
| Home page | https://github.com/ChrisCoffey/haskell-opentracing-light#readme |
| Bug tracker | https://github.com/ChrisCoffey/haskell-opentracing-light/issues |
| Source repo | head: git clone https://github.com/ChrisCoffey/haskell-opentracing-light |
| Distributions | |
| Downloads | 2038 total (10 in the last 30 days) |
| Rating | (no votes yet) [estimated by Bayesian average] |
| Your Rating |
|
| Status | Docs available [build log] Last success reported on 2021-12-19 [all 1 reports] |
Readme for servant-tracing-0.2.0.0
[back to package description]servant-tracing
This repository is the minimum required for publishing trace data to Zipkin or Jaeger. It adheres to the Open Tracing Standard but is missing a few features. See the documentation on Hackage for module-level details.
Using the library
The OpenTracing standard revolves around a single function, recordSpan. recordSpan is responsible for creating new spans (see the standard for the definition of a span) and ensuring child spans use the new id. In order to properly build this tree of calls library users must provide the necessary environment via a MonadTracer instance (see haddocks). Library users are responsible for defining their own publish loop. There is a default Zipkin publisher in Tracing.Zipkin which works with Jaeger & Zipkin, but the loop to drain the spanBuffer must be provided by the user.
foo :: (MonadIO m, MonadTracer m) =>
Int
-> m String
foo str = recordSpan
Nothing
[Tag "Ultimate Answer to Life, The Universe and Everything", Tag 42]
"Compute Ultimate Question"
$ pure "Oops"
The code above logs a new span to the spanBuffer, where it will sit until published. If it turns out that foo is called from an active span, then it will be recorded as a child of said higher span.
Testing Locally with the Demo App
You can start up a compatible server for Zipkin or Jaeger via a standalone docker container. From there its a matter of seting the following environment variables:
- TRACING_ENDPOINT: a
Stringwith the fully url to a running tracing server. For example,https://localhost:9411/api/v2/spansto publish to a Zipkin endpoint. - TRACING_SERVICE: a
Stringname for your service
Once the a tracing server & the example service are running, you can interact with it via your favorite REST client. The api expects a header named Auth, and has two top level endpoints: fast & slow. Here's an example request: curl localhost:8080/slow -HAUTH="foo"
Pending Features
- Thrift support
- Additional clients
- Pluggable samplers