dfed96874f
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> |
||
---|---|---|
.github | ||
examples | ||
instrumentation | ||
propagators/opentelemetry_process_propagator | ||
utilities | ||
.gitignore | ||
CODEOWNERS | ||
CONTRIBUTING.md | ||
LICENSE | ||
README.md | ||
mix.exs | ||
rebar.lock |
README.md
<p align="center"> <strong> <a href="https://opentelemetry.io/docs/instrumentation/erlang/getting-started/">Getting Started<a/> • <a href="https://hexdocs.pm/opentelemetry_api/1.0.0-rc.2/OpenTelemetry.html">API Documentation<a/> </strong> </p> <p align="center"> <strong> <a href="CONTRIBUTING.md">Contributing<a/> • <a href="instrumentation/">Instrumentation<a/> • <a href="propagators/">Propagators<a/> • <a href="examples/">Examples<a/> </strong> </p>
Getting Started • API Documentation
Contributing • Instrumentation • Propagators • Examples
About this project
This is a repository for OpenTelemetry Erlang & Elixir contributions that are not part of the core repository and core distribution of the API and SDK.
Instrumentations
OpenTelemetry can collect tracing data using instrumentation. Vendors/Users can also create and use their own. Currently, OpenTelemetry supports automatic tracing for:
Supported Runtimes
OpenTelemetry requires OTP v21.3 and above.
See Elixir OTP Compatibility for supported OTP/Elixir combinations.
Contributing
We'd love your help!. Use tags [up-for-grabs][up-for-grabs-issues] and good first issue to get started with the project. Follow CONTRIBUTING guide to report issues or submit a proposal.
Useful links
- For more information on OpenTelemetry, see opentelemetry.io.
- For conventions used in OpenTelemetry traces, see the following readme.
- For help or feedback on this project, join us in GitHub Discussions,
#otel-erlang-elixir
channel in the CNCF slack, and#opentelemetry
channel in the Elixir Lang slack - Erlang SIG community page
License
Apache 2.0 - See LICENSE for more information.