| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Freckle.App.OpenTelemetry
Description
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 Methods 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 Spans created
that are internal to an application.
Defaults:
kind:Internalattributes:[]links:[]startTime:Nothing(getTimestampwill be called uponSpancreation)
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