Commit Graph

102 Commits

Author SHA1 Message Date
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
Patrice Chalin 2a25aab6d1
Update README.md (#71) 2022-03-20 16:44:31 -06:00
Kai e3f0ec8ee0
Handle binary and undefined response status and rename http.status to http.status_code in `opentelemetry-cowboy` (#48)
* Handle binary resp_status from Cowboy and rename http.status to http.status_code

* Fix test to use http.status_code as well

* Handle resp_status could be undefined but not error

- This could be due to websocket upgrade request.

* Rename Status1 and transform_status to a more concise naming

* Add test case for handling binary response code

* Fix syntax and failing tests

* Always convert cowboy status to status code

* Set otel span status as error when status code >= 500
2022-03-19 06:16:15 -06:00
Derek Kraan ddb2d3b963
Only attempt to record an exception if there is an active span. (#37)
There is an edge case, if you use `forward/4` and use Plug.ErrorHandler,
then when an exception reaches the outer router, then Plug.send_resp
will be called, triggering `[:phoenix, :endpoint, :stop]`, and the span
will be gone by the time the outer router gets the exception. This
causes this telemetry handler to crash and be detached.

Sequence of events:
- [:phoenix, :endpoint, :start]
- [:phoenix, :router_dispatch, :exception] (inner router)
- [:phoenix, :endpoint, :stop]
- [:phoenix, :router_dispatch, :exception] (outer router) ** here there is no span, crashes
2022-03-18 05:21:26 -06:00
Kai 563901d516
Add missing .env and update README (#67)
Co-authored-by: Tristan Sloughter <t@crashfast.com>
2022-03-15 13:49:17 -06:00
Ho-Yon Mak a7b0c04aaf
Add idle_time measurement (#66)
Co-authored-by: Tristan Sloughter <t@crashfast.com>
2022-03-14 10:22:22 -06:00
Kai 44fd2a6871
Add Phoenix + Ecto example (#60)
* Boostrap Phoenix application from mix phx.new

* Add opentelemetry dependencies

* Setup opentelemetry for local env

* Setup Dockerfile, docker-compose and otel config

* Configure runtime config for exporter to export to otel collector in prod env

* Generate Posts HTML resources

* Add Release module to run migration in release

* Generate Users LiveView resource

* Add exporter configuration to export directly to external service

* Update README.md to include description and instructions

* Update README.md to include more details on exporting traces

* Fix otlp collector deprecated ports as suggested
2022-02-25 18:45:46 -07:00
Bryan Naegele fb2595d2fb
Do not attempt to end a span if ctx wasn't found (#59)
* Do not attempt to end a span if ctx is undefined
2022-01-05 10:23:10 -07: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
Bryan Naegele 9446fe6a99
Otel 1.0 support (#57) 2022-01-04 18:58: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
Aaron Renner 50775c881e
Make plug dependency explicit (#53) 2022-01-04 13:47:21 -07:00
Alexandre Hamez 6722d00d77
Fix typo (#56) 2022-01-04 06:01:06 -07:00
Bryan Naegele 1d52d88e42
Otel 1.0.0-rc.4 updates (#54)
* Otel 1.0.0-rc.4 updates

* Unused module attribute

* Missed oban test
2021-12-28 16:39:06 -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
matthijsqd 9446655797
set phoenix attributes on span creation (#52) 2021-12-17 09:16: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
Andrew Rosa f12a635d9d
Fix compilation warning on otel_telemetry (#46)
Fix of `Warning: variable 'Ctx' is unused` on compilation logs.
2021-11-28 12:16:37 -07:00
Bryan Naegele d7eb7b8a24
Migrate otel_telemetry to contrib (#43) 2021-11-27 18:33:47 -07:00
Raphael D. Pinheiro 8755d5fdba
Avoid syntax error for insecure key (#45)
According to the docs: https://opentelemetry.io/docs/collector/configuration/#exporters the insecure key should be inside tls key otherwise the service doesn't start.
2021-11-24 10:38:59 -07:00
Kai b4046eb073
Port example from opentelemetry-examples (#31)
* Copy opentelemetry-examples/basic_elixir over

* Bump opentelemtry and opentelemetry_exporter to 1,0.0-rc.3

* Remove OpenTelemetry.register_application_tracer

* Update example to be consistent with opentelemetry.io docs

Co-authored-by: Tristan Sloughter <t@crashfast.com>
2021-11-23 13:15:59 -07:00
Bryan Naegele 9bef47b7a0
Update .gitignore 2021-11-22 12:18:02 -07:00
Ho-Yon Mak 352c17231a
Set error status for ecto errors in opentelemetry_ecto (#41)
* Set error status on error instead of just adding attribute

* Use Exception.message if error is an exception

Co-authored-by: Bryan Naegele <bryannaegele@users.noreply.github.com>
2021-11-22 12:08:31 -07:00
Indrek Juhkam 4aaf86181a
Set opentelemetry_ecto span kind to CLIENT (#38)
From the [semantic conventions][1]:

> Span kind: MUST always be CLIENT.

[1]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/database.md

Co-authored-by: Bryan Naegele <bryannaegele@users.noreply.github.com>
2021-11-22 11:49:58 -07:00
Ho-Yon Mak 3f43f8dd9f
opentelemetry_phoenix http.status -> http_status_code (#42) 2021-11-19 07:15:43 -07:00
Timmo Verlaan f21b315e3e
inspect terms that otherwise can't be serialized by exporter (#40) 2021-11-18 18:02:36 -07:00
Maciej Szlosarczyk 9ce604153d
Add info about conventions to guides (#33)
Co-authored-by: Tristan Sloughter <t@crashfast.com>
2021-11-12 10:52:29 -07:00
Ho-Yon Mak 404aab58b2
Add opentelemetry-ecto to README (#34) 2021-11-11 14:13:08 -07:00
Seth Archer Brown f083f3d7e7
Remove outdate setup example (#30)
Co-authored-by: Bryan Naegele <bryannaegele@users.noreply.github.com>
2021-10-15 14:11:28 -06:00
Bryan Naegele 27727e40cd
Publish packages (#28) 2021-10-15 14:01:11 -06:00
Norberto Lopes d92d8ef7c8
Cosmetic change to avoid dangling suffix of ':' if source is nil (#23)
As it stands, when source is nil (which, for example, can happen if there is a
call to `Repo.transaction`), the name of the span ends in an odd ':'. This
removes that ':'.

Co-authored-by: Bryan Naegele <bryannaegele@users.noreply.github.com>
2021-10-13 21:16:07 -06:00
Bryan Naegele 2f2b31c1ce
Otel 1.0.0-rc.3 support (#27) 2021-10-13 21:11:26 -06:00
Bryan Naegele aece932faf
Lock Otel versions and publish updates (#22) 2021-10-08 16:27:42 -06:00
Bryan Naegele bfee0f71a4
Migrate otel ecto (#16)
* Migrate otel ecto
2021-10-08 15:38:18 -06:00
Bryan Naegele 71e1e4ab48
Cowboy instrumentation (#18)
* Cowboy instrumentation
2021-10-06 13:36:22 -06:00
Damir Vandic 1cd2251768
Fix typos (#17)
Co-authored-by: Bryan Naegele <bryannaegele@users.noreply.github.com>
2021-10-06 12:37:01 -06:00
Manu 18aa2eca97
Update github URL for Hex.pm (#21) 2021-10-06 12:36:16 -06:00
Marco "Efesto" Polita 3334b07b9d
Adds readme entry on Plug.Telemetry (#20)
* adds entry about Plug.Telemetry

* Adds reference to phoenix endpoint template
2021-10-01 10:30:49 -06:00
Bryan Naegele 2e45dc6a63
Start PR templates for existing projects and general PR (#8)
* Start PR templates for existing projects and general PR

* Add spec compliance requirement
2021-09-19 20:20:18 -06:00
Bryan Naegele 401d05041f
opentelemetry-phoenix 1.0.0-rc3 (#15) 2021-09-19 18:17:51 -06:00
Bryan Naegele 70825304a6
Update otel-phoenix deps (#9)
* Update otel-phoenix deps

* CI not triggering

* Remove deprecated plug conn property

* Retry shared matrix with 1.11 include fix

* Try reading the file again

* Still can't get file reading right

* Update source links
2021-09-19 17:51:51 -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 aabe880146
Update labeler.yml 2021-09-12 16:46:23 -06:00
Bryan Naegele 7209beabc3
Update README.md 2021-09-12 16:36:15 -06:00
Bryan Naegele b9efd1d228 Update issue templates 2021-09-12 14:59:20 -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
Bryan Naegele 6b8d11a666
Merge pull request #5 from bryannaegele/labeler
Labeler
2021-08-29 20:35:39 -06:00
Bryan Naegele fa590a679d Labeler 2021-08-29 20:33:52 -06:00
Sergey Kanzhelev ea78449027
Create CODEOWNERS 2021-04-19 10:21:49 -07:00