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: Iftruethe and an exception happens that Elli handles, likerequest_parse_errorif it fails to parse the request, a log of the stacktrace will be included in the span. Default:true.debug: Iftruethe 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 sincedebugistrue.