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 instrumentationWhen 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 instrumentationWhen consuming instrumentation, I want to think in terms of the API fo the specific backend I'm supporting (writing to
stderr, serving aPrometheuspage, posting toOpenTelemetry) and what is needed to render to that API.Initializing instrumentation in an applicationWhen 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.