* Use test matrix from file
* Only check formatting on specific Elixir version
* Use latest patch version of each Elixir/OTP release in test matrix
* Test on Elixir 1.15 and OTP 26
* Run formatter on opentelemetry_httpoison
* Run formatter on opentelemetry_phoenix
* Run formatter on opentelemetry_tesla
* Fix building opentelemetry_ecto on Elixir 1.15
Upgraded deps to fix ssl_verify_fun not compiling
* Fix building opentelemetry_dataloader on Elixir 1.15
Upgraded deps to fix ssl_verify_fun and ecto_sql not compiling
* Upgrade opentelemetry_finch to build on Elixir 1.15
* Upgrade opentelemetry_httpoison deps to build on 1.15
* Upgrade opentelemetry_nebulex to build on Elixir 1.15
* Upgrade opentelemetry_oban to build on Elixir 1.15
* Upgrade opentelemetry_phoenix deps to build on 1.15
* Upgrade opentelemetry_redix deps to build on 1.15
* Fix warning about <> being ambiguous
* Fix assertion on attributes keys
These are always atoms, not strings.
* Upgrade ssl_verify_fun in opentelemetry_telemetry
* Deterministically sort keys before asserting in tests
* Upgrade opentelemetry_process_propogator to build on Elixir 1.15
* Run mix format on opentelemetry_process_propogator
* Assert keys are atoms, not strings
* Use matrix.os to define runs-on parameter
* Pin test matrix to specific OTP + Elixir versions
* Run formatter on telemetry and process_propagator
* Run formatter over opentelemetry_phoenix
---------
Co-authored-by: Tristan Sloughter <t@crashfast.com>
* Add source_url_pattern to be able to use the "link to source" button
* Add README.md as an "extra" where it wasn't already
* Add a `main` setting. They all have a very obvious main module. Set
that as `main`, so a user is shown this immediately instead of a list
of usually only this module.
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>