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 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 fo the specific backend I'm supporting (writing to
stderr
, serving aPrometheus
page, posting toOpenTelemetry
) 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 documentation on writing an EventBackend
.
See eventuo11y-dsl for simpler syntax for creating application-level instrumentation types.
See eventuo11y-otel for an OpenTelemetry-based backend.
See eventuo11y-prometheus for a Prometheus-based backend.
See eventuo11y-json for JSON-based rendering and backends.
See Example.hs for an example.
See eventuo11y-batteries for miscellaneous framework-specific helpers.