OpenTracing, via otter, middleware for Elli.
{deps, [elli_otter]}.
Use the elli_middleware
module as the callback with the elli_otter_middleware
in the mods list, followed by other middlewares and your callback.
ElliOtterConfig = elli_otter:config(#{prefix => <<>>,
traced_request_attributes => [path, method, headers],
log_exceptions => true}),
Config = [{mods, [{elli_otter_middleware, ElliOtterConfig}, ...]}],
ElliOpts = [{callback, elli_middleware}, {callback_args, Config}, ...],
See the otter documentation for how to configure filtering and sending to Zipkin or Jaeger.
elli_otter
provides the function config
to return the proper list used for configuration in the middleware. It takes a map with options:
prefix
: String the headers in requests will have for OpenTracing specific headers. Default:<<>>
.traced_request_attributes
: List of a attributes to tag. Default:[path, method, headers]
.log_exceptions
: Iftrue
the and an exception happens that Elli handles, likerequest_parse_error
if it fails to parse the request, a log of the stacktrace will be included in the span. Default:true
.debug
: Iftrue
the span is started for every request. Default:true
.sampling_percent
: Percent of incoming requests to create spans for. Default:10
. Note: When using defaults this one doesnt matter sincedebug
istrue
.