Commit Graph

32 Commits

Author SHA1 Message Date
renovate[bot] 0b22da6fef
chore(deps): update actions/cache action to v4 (#255)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-17 10:08:42 -07:00
renovate[bot] 7a8f87d5bb
chore(deps): update dependency ubuntu to v22 (#241)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-10 09:20:36 -07:00
renovate[bot] 778ebf6ab3
chore(deps): update actions/checkout action to v4 (#238)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-09 22:09:50 -07:00
renovate[bot] 8bd3cc8c7a
chore(deps): update circleci/postgres docker tag to v13.5 (#225)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-09 21:38:34 -07:00
renovate[bot] f3c25630a6
chore(deps): update actions/cache action to v3 (#236)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-09 21:33:23 -07:00
Bryan Naegele 7d50d86b95
Revert "chore: run propagator dialyzer on CI (#202)" (#224)
This reverts commit 97d13c39b7.
2023-11-09 18:28:51 -07:00
João Thallis 97d13c39b7
chore: run propagator dialyzer on CI (#202)
* chore: run propagator dialyzer on CI

* Format using Elixir 1.15.6

* Support only Elixir ~> 1.12

It is necessary because :dialyxir requires Elixir ">= 1.12.0"

---------

Co-authored-by: Tristan Sloughter <t@crashfast.com>
2023-11-09 02:26:29 -07:00
Bryan Naegele 02202fb780
Add strict version type for setup-beam (#206) 2023-09-16 09:17:35 -06:00
Bryan Naegele 018efed93a
Release drafting (#200) 2023-09-05 09:38:49 -06:00
Tom Taylor 17d31cc594
Improve test matrix and add support for Elixir 1.15 and OTP 26 (#188)
* 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>
2023-08-25 14:11:23 -06:00
Cristiano Piemontese 0cc8c760d0
Add telepoison (#148)
* add telepoison

* rename

* rename file too, duh

* rename test file

* port updates

* add standard workflow
2023-06-04 08:23:03 -06:00
Maarten van Vliet 1de26cce1a
Add Dataloader instrumentation library (#137)
* Add Dataloader instrumentation library

* Move call to set context to @run_start event

---------

Co-authored-by: Tristan Sloughter <t@crashfast.com>
2023-04-05 10:34:49 -06:00
Bryan Naegele de17c31194
OpentelemetryReq plugin (#160)
* OpentelemetryReq plugin

* Split span handling

* version bump

* Remove set

* Unused var

* Set parent ctx back on completion
2023-03-31 09:51:27 -06:00
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
Bryan Naegele f5b138f297
Bryannaegele patch 1 (#135)
* Update elixir.yml

* Update erlang.yml (#134)
2022-11-25 14:35:36 -07:00
Bryan Naegele 62219a28f1
Update elixir.yml 2022-11-25 14:31:43 -07:00
Bryan Naegele 0e6a776ffb
Fix CI errors, update GHA deps, update versions (#125)
* Fix CI errors, update GHA deps, update versions

* output syntax

* remove OTP 22 tests

* set concurrency to cancel in progress

* whitespace

* incompatible vsns and failed test

* Try pulling excludes out

* Escaping

* Just drop < 1.13 until this can move to workflows

* quote
2022-11-15 16:22:28 -07:00
Bryan Naegele a71bf882cc
Fix Tesla's test nam (#113) 2022-11-15 12:12:27 -07:00
John Mauricio Carmona E 4358c75b99
finch-instrumentation (#115)
* finch-instrumentation

* Span attributes update

* Readme update

* Readme update
2022-11-09 12:27:40 -07:00
Bryan Naegele d5bae4d624
Update elixir.yml 2022-09-02 13:42:19 -06:00
Ricardo Paiva e8d1462f46
Add otel tesla library (#90)
* Add Tesla HTTP client instrumentation library

* Update workflows configuration

* Update labeler.yml

* Update CODEOWNERS

* Add LICENSE file

Co-authored-by: Bryan Naegele <bryannaegele@users.noreply.github.com>
2022-08-25 12:47:59 -06:00
Bryan Naegele 7a5802cb14
Process propagator library (#64)
* Process propagator library

* Fix Elixir API

* CI files

* Update propagators/opentelemetry_process_propagator/lib/opentelemetry_process_propagator.ex

Co-authored-by: Andrew Rosa <dev@andrewhr.io>

* Update propagators/opentelemetry_process_propagator/lib/opentelemetry_process_propagator.ex

Co-authored-by: Andrew Rosa <dev@andrewhr.io>

* format

Co-authored-by: Andrew Rosa <dev@andrewhr.io>
2022-03-23 13:02:28 -06:00
Andrew Rosa f281a90f3c
Update CI config for opentelemetry_redix (#58)
Following the pattern on [this PR][1]

[1]: https://github.com/open-telemetry/opentelemetry-erlang-contrib/pull/55/files#diff-567a3fdf49d6f0f0119dda6d1c098fcb5ee3785ee956481b3daaf5a2f246076f

Co-authored-by: Bryan Naegele <bryannaegele@users.noreply.github.com>
2022-01-04 22:34:06 -07:00
Andrew Rosa 50ed370444
Add OpenTelemetry integration to Redix (#29)
Initial approach follows Ecto instrumentation, recording spans for all
Redix `[:redix, :pipeline, :stop]` events.

The command sanitization is inspired-by and adapted from [Java
instrumentation][1], from where I've also copied the actual commands and
what configuration should they follow.

Network attributes are tracked via a "sidecar" process, which keeps
track of connection attributes also via `telemetry`. This extra bit of
bookkeeping is needed as command events doesn't include that piece of
information, unfortunately.

[1]: b2bc41453b/instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/db/RedisCommandSanitizer.java
2022-01-04 14:39:19 -07:00
Bryan Naegele 4f087f85a5
Add elixir 1.13 to matrix; drop OTP 21 support (#55)
* Add elixir 1.13 to matrix; drop OTP 21 support
2021-12-28 14:14:26 -07:00
Indrek Juhkam eecb238cff
Add opentelemetry integration to Oban (#6)
By default a new trace is automatically started when a job is processed
by monitoring these events:
* `[:oban, :job, :start]` — at the point a job is fetched from the database and will execute
* `[:oban, :job, :stop]` — after a job succeeds and the success is recorded in the database
* `[:oban, :job, :exception]` — after a job fails and the failure is recorded in the database

To also record a span when a job is created and to link traces together
`Oban.insert/2` has to be replaced by `OpentelemetryOban.insert/2`.

Before:

```elixir
  %{id: 1, in_the: "business", of_doing: "business"}
  |> MyApp.Business.new()
  |> Oban.insert()
```

After:

```elixir
  %{id: 1, in_the: "business", of_doing: "business"}
  |> MyApp.Business.new()
  |> OpentelemetryOban.insert()
```

Co-authored-by: Tristan Sloughter <t@crashfast.com>
2021-12-08 08:41:36 -07:00
Bryan Naegele d7eb7b8a24
Migrate otel_telemetry to contrib (#43) 2021-11-27 18:33:47 -07:00
Bryan Naegele 2f2b31c1ce
Otel 1.0.0-rc.3 support (#27) 2021-10-13 21:11:26 -06:00
Bryan Naegele bfee0f71a4
Migrate otel ecto (#16)
* Migrate otel ecto
2021-10-08 15:38:18 -06:00
Bryan Naegele e49b8e9b3f
Update elixir.yml 2021-09-12 19:27:27 -06:00
Bryan Naegele 4d758e89f5
Update test matrix strategy (#10) 2021-09-12 18:49:05 -06:00
Bryan Naegele a216f6ce20
Otel phoenix migration (#4)
* Otel phoenix migration

* Abandon dynamic matrix for now

* Add project-level codeowners

* Add examples and phoenix

* Typo
2021-09-12 13:49:24 -06:00