Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data Span = Span {
- operationName :: !OpName
- context :: !SpanContext
- timestamp :: !POSIXTime
- duration :: !NominalDiffTime
- relations :: ![SpanRelation]
- tags :: !(Map Text SpanTag)
- baggage :: !(Map Text Text)
- debug :: !Bool
- serviceName :: !Text
- data SpanRelation
- data SpanRelationTag
- data SpanContext = SpanContext {}
- data SpanTag
- newtype OpName = OpName Text
- newtype SpanId = SpanId Int64
- newtype TraceId = TraceId Int64
- data Tracer = Tracer {
- spanBuffer :: IORef [Span]
- svcName :: Text
- data TracingInstructions = TracingInstructions {}
- class Monad m => MonadTracer m where
- class ToSpanTag a where
- data Tag = ToSpanTag a => Tag Text a
- recordSpan :: (MonadIO m, MonadBaseControl IO m, MonadTracer m) => Maybe SpanRelationTag -> [Tag] -> OpName -> m a -> m a
- debugPrintSpan :: Span -> Text
Documentation
A timed section of code with a logical name and SpanContext
. Individual spans will be reconstructed by an
OpenTracing backend into a single trace.
Span | |
|
data SpanRelation Source #
Spans may be top level, a child, or logically follow from a given span.
data SpanContext Source #
Uniquely identifies a given Span
& points to its encompasing trace
Used to embed additional information into a Span for consumption & viewing in a tracing backend
Human-readable name for the span
An opaque & unique identifier for a trace segment, called a Span
An opaque & unique identifier for a logical operation. Traces are composed of many Span
s
Global context required for tracing. The $sel:spanBuffer:Tracer
should be manually drained by library users.
data TracingInstructions Source #
Instructions that are specific to a single trace
class Monad m => MonadTracer m where Source #
Indicates that the current monad can provide a Tracer
and related context.
It assumes some form of environment. While this exposes some mutable state, all
of it is hidden away behind the recordSpan
api.
:: m TraceId | Set during the initial request from the outside world, this is propagated across all nodes in the call |
:: m (IORef SpanId) | Set via |
:: m Bool | Set during the initial request from the outside world, this is propagated across all nodes in the call |
Allows for easily representing multiple types in a tag list
recordSpan :: (MonadIO m, MonadBaseControl IO m, MonadTracer m) => Maybe SpanRelationTag -> [Tag] -> OpName -> m a -> m a Source #
Wraps a computation & writes it to the Tracer'
s IORef. To start a new top-level span, and therefore
a new trace, call this function with *spanType* == Nothing
. Otherwise, this will create a child span.
Doesn't support parallel computations yet
debugPrintSpan :: Span -> Text Source #
Dump the details of a span. Used for debugging or logging