@hackage e11y0.1.0.0

An event-oriented observability library

Instrument your Haskell codebase with wide, semantically meaningful events.

This library is designed with separating the following concerns in mind:

Writing instrumentation
When instrumenting code, I want to think in terms of my application domain and report any information I might need in order to infer internal application-level state and understand the behavior of my program/library.
Consuming instrumentation
When consuming instrumentation, I want to think in terms of the API of the specific backend I'm supporting (writing to stderr, serving a Prometheus page, posting to OpenTelemetry) and what is needed to render to that API.
Initializing instrumentation in an application
When I'm ready to tie it all together, I want to identify the specific backends I want to post to and provide the bridge code to render the domain-specific instrumentation as needed for those backends. I also want to handle concerns like sampling or client-side aggregation of domain-specific instrumentation to keep usage manageable.

See Observe.Event for detailed documentation on instrumenting your code.

See Observe.Event.Backend for creating a new EventBackend to consume instrumentation.

See Observe.Event.Backend.Data for an EventBackend that represents the stream of events as ordinary Haskell data.

See e11y-otel for an OpenTelemetry-based backend.

This is a rewrite of eventuo11y, designed to be easier to use, less intrusive, and not nearly as annoying to write/say. The name is a shortening of "event-based observability" (event-based -> e, observability -> o11y), and can be pronounced "eh-lee" or "ee-eleven-why".