Andrew Rosa dfed96874f
Add Nebulex instrumentation library (#83)
Add instrumentation for Nebulex, a distributed cache library. This
library provides solid telemetry support for this initial
implementation.

Caching implementation is mostly based on in-memory storage (like ETS)
and RPC calls for distribution (via OTP libraries, like :erpc). AFAICT,
there is not much specifics for how to translate into Semantic
Attributes: those caches are not quite a DB, except maybe for the one
which implements the storage; the RPC can't be reliably captured
either.

Given the above constraints, this initial implementation instruments the
library via custom attributes (namespaced as `nebulex.*`). It's not 100%
clear the behaviour of OTel for actual distributed caches - from my
tests, that may create some orphan spans. I think that's fine as first
release.

Nebulex follow the patterns of Ecto, so this instrumentation follows a
similar pattern of OpentelemetryEcto. It does include a `setup_all/1`
function for convenience, that leverages the :init events Nebulex emit
on process start.

Co-authored-by: Tristan Sloughter <t@crashfast.com>
2022-12-14 17:38:18 -07:00

30 lines
856 B
Markdown

# OpentelemetryNebulex
OpentelemetryNebulex uses `telemetry` handlers to create `OpenTelemetry` spans
from Nebulex command events.
## Installation
The package can be installed by adding `opentelemetry_nebulex` to your list of
dependencies in `mix.exs`:
```elixir
def deps do
[
{:opentelemetry_nebulex, "~> 0.1.0"}
]
end
```
## Compatibility Matrix
| OpentelemetryNebulex Version | Otel Version | Notes |
| :--------------------------- | :----------- | :---- |
| | | |
| v0.1.0 | v1.0.0 | |
Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)
and published on [HexDocs](https://hexdocs.pm). Once published, the docs can
be found at [https://hexdocs.pm/opentelemetry_nebulex](https://hexdocs.pm/opentelemetry_nebulex).