Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Application tracing via https://opentelemetry.io/
data App = App { -- ... , appTracer :: Tracer } instance HasTracer App where tracerL = lens appTracer $ x y -> x { appTracer = y } loadApp f = do -- ... withTracerProvider $ tracerProvider -> do let appTracer = makeTracer tracerProvider "my-app" tracerOptions f App {..}
You may need to do this even if you don't plan to manually trace things, in order to
satisfy the MonadTracer
constraint required by functions like runDB
. If
you don't need this feature, and don't plan on running an otel-collector, set
OTEL_TRACES_EXPORTER=none
in the environment, which makes all tracing a
no-op.
In the future, it should be possible to use OTEL_SDK_DISABLED
for the same
purpose. See https://github.com/iand675/hs-opentelemetry/issues/60.
Synopsis
- class HasTracer s where
- data Tracer
- class Monad m => MonadTracer (m :: Type -> Type) where
- inSpan :: (MonadUnliftIO m, MonadTracer m, HasCallStack) => Text -> SpanArguments -> m a -> m a
- defaultSpanArguments :: SpanArguments
- withTraceIdContext :: (MonadIO m, MonadMask m) => m a -> m a
- getCurrentTraceId :: MonadIO m => m (Maybe TraceId)
- getCurrentTraceIdAsDatadog :: MonadIO m => m (Maybe Word64)
- getCurrentSpanContext :: MonadIO m => m (Maybe SpanContext)
- withTracerProvider :: MonadUnliftIO m => (TracerProvider -> m a) -> m a
- makeTracer :: TracerProvider -> InstrumentationLibrary -> TracerOptions -> Tracer
- tracerOptions :: TracerOptions
Documentation
Effects
class Monad m => MonadTracer (m :: Type -> Type) where Source #
This is generally scoped by Monad stack to do different things
Instances
HasTracer app => MonadTracer (AppExample app) Source # | |
Defined in Freckle.App.Test getTracer :: AppExample app Tracer Source # | |
(Monad m, HasTracer app) => MonadTracer (AppT app m) Source # | |
MonadTracer m => MonadTracer (IdentityT m) | |
MonadTracer m => MonadTracer (ReaderT r m) | |
inSpan :: (MonadUnliftIO m, MonadTracer m, HasCallStack) => Text -> SpanArguments -> m a -> m a Source #
defaultSpanArguments :: SpanArguments Source #
Smart constructor for SpanArguments
providing reasonable values for most Span
s created
that are internal to an application.
Defaults:
kind
:Internal
attributes
:[]
links
:[]
startTime
:Nothing
(getTimestamp
will be called uponSpan
creation)
Querying
withTraceIdContext :: (MonadIO m, MonadMask m) => m a -> m a Source #
getCurrentSpanContext :: MonadIO m => m (Maybe SpanContext) Source #
Setup
withTracerProvider :: MonadUnliftIO m => (TracerProvider -> m a) -> m a Source #
Tracer
makeTracer :: TracerProvider -> InstrumentationLibrary -> TracerOptions -> Tracer Source #
tracerOptions :: TracerOptions Source #
Default Tracer options