86 Commits

Author SHA1 Message Date
Bryan Naegele
c8b760e776
publish latest updates (#127) 2022-11-16 19:07:23 -07:00
Andrew Rosa
56c6503a93
Fix two use cases of Ecto span propagation (#82)
First one is related to `OpenTelemetry.Ctx` API. I've noticed in a few
scenarios the current span of a trace may get lost after Ecto calls.

Looking at the The `attach/1` typespec, it's a Ctx -> Token, while
`dettach/1` as Token -> Ctx function. That made me assume the expected
input of dettach is the return type of attach. Indeed, after this change
we got the behavior of Ecto calls preserve the parent span untouched.

That leads to a second bug found. When ecto does simple calls within a
Task, due the special propagation code for preloads that means it will
skip the current span, if any.  The solution here is to first check the
current process.

One test was added to reproduce this bug.
2022-11-15 17:55:32 -07:00
Bryan Naegele
4d39f47b03
update elixir package deps (#126)
* update elixir package deps

* Oban test updates
2022-11-15 17:48:50 -07:00
Yordis Prieto
ed49b0c4bb
chore: add semantic conventions pkg (#118)
Co-authored-by: Tristan Sloughter <t@crashfast.com>
2022-11-15 16:39:22 -07:00
Yordis Prieto
0c509f4ebc
chore: ran formatter (#123)
* chore: ran formatter

* Delete .formatter.exs

Co-authored-by: Bryan Naegele <bryannaegele@users.noreply.github.com>
2022-11-15 16:25:04 -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
Yordis Prieto
24499cbae1
fix: missing deps in redix (#122) 2022-11-15 04:43:44 -07:00
Yordis Prieto
01fc804ab2
chore: add semantic conventions pgk to redix (#119) 2022-11-14 15:33:48 -07:00
Alberto Sartori
a72305f574
Add server span kind to otel cowboy (#116)
* Add server span kind to otel cowboy

* Upgrade deps
2022-11-10 04:15:15 -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
Aaron Renner
8e5d373477
Fix ctx return types for process_propagator functions (#114) 2022-10-19 17:52:52 -06:00
Bryan Naegele
da912fd08b
Publish process propagator v0.2.0 (#111)
* Publish process propagator v0.2.0

* Fix docs
2022-10-12 15:59:20 -06:00
Ricardo Paiva
b10af6e987
Bump opentelemetry_tesla version (#112) 2022-10-12 15:25:08 -06:00
Guilherme de Maio
c69a3c7b49
[opentelemetry-tesla] add custom span name override as middleware opt (#105)
* fix remove extra bracket in mix.exs

* use capture log for less verbose test output

* add span_name opt for overriding span name

* add moduledoc

* allow function for span_name opt
2022-10-04 16:32:36 -06:00
Damir Vandic
7a4c33ef7c
Relax dependencies for opentelemtry_tesla (#106) 2022-09-03 07:59:03 -06:00
cevado
a9e6fa0c84
opentelemetry_ecto - add possibility to setup additional attributes. (#94)
* Make possible to include additional attributes to the span through setup

* Adjust code review changes
2022-09-02 13:47:34 -06:00
Bryan Naegele
d5bae4d624
Update elixir.yml 2022-09-02 13:42:19 -06:00
David White
2b5eb14cca
Fix bug in OpentelemetryOban.insert_all/4 (#103)
Co-authored-by: Tristan Sloughter <t@crashfast.com>
2022-08-28 05:45:02 -06:00
Bryan Naegele
fb6c3d2985
Conveniences for Tasks (#80)
* Conveniences for Tasks

* Finish Task module functions

* Complete Task and add Task.Supervisor

* Check if new funs added

* Remove with_ctx in favor of wrapping default

* Fix docs
2022-08-26 14:10:57 -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
Ygor Castor
59664d87c8
Implemented AWS X-Ray TraceId Generator (#95) 2022-07-21 11:40:47 -06:00
Bryan Naegele
6591b28166
Publish updates for Phoenix, Ecto, and Cowboy (#79)
* Publish 1.0 for Phoenix, Ecto, and Cowboy

* Missed version in changelog
2022-06-03 10:54:37 -06:00
Kevin Rankin
08cffdd72d
adds missing comma to opentelemetery_exporter config example (#87) 2022-05-27 11:34:29 -06:00
Andrew Rosa
8df66285bb
Report Redix error messages through OTel status (#81)
Instead of custom attributes, leverage the status description as
described in Semantic Conventions. This approach is taken from current
`opentelemetry_ecto` implementation.

Small non-related change is a fix the license description in `mix.exs`.
2022-05-10 14:05:35 -06:00
Bryan Naegele
e856486e30
Publish otel telemetry 1.0.0 (#78) 2022-04-13 19:22:28 -06:00
Greg Mefford
0939fe2de8
Relax requirement on telemetry library (#77) 2022-04-13 09:57:45 -06:00
Andrew Rosa
daa6a97f3e
Bump dependencies and relax opentelemetry* to 1.0 (#75) 2022-03-31 11:23:32 -06:00
Tristan Sloughter
af2a659631
bump otel-elli version number (#74) 2022-03-28 10:13:13 -06:00
Tristan Sloughter
74172effcd
add grpcbox instrumentation library (#70)
* add grpcbox instrumentation library

* grpcbox: fix .app file license and deps

* lock grpcbox
2022-03-27 11:42:36 -06:00
Tristan Sloughter
db5193be45
elli instrumentation library (#69)
* elli instrumentation library

* Update instrumentation/opentelemetry_elli/README.md

Co-authored-by: Fred Hebert <mononcqc@ferd.ca>

* Update instrumentation/opentelemetry_elli/README.md

Co-authored-by: Fred Hebert <mononcqc@ferd.ca>

* Update instrumentation/opentelemetry_elli/README.md

Co-authored-by: Fred Hebert <mononcqc@ferd.ca>

* Update instrumentation/opentelemetry_elli/README.md

Co-authored-by: Fred Hebert <mononcqc@ferd.ca>

* Update instrumentation/opentelemetry_elli/README.md

Co-authored-by: Fred Hebert <mononcqc@ferd.ca>

* Update instrumentation/opentelemetry_elli/README.md

Co-authored-by: Fred Hebert <mononcqc@ferd.ca>

* add note about how excluded URL env var is parsed

* Update instrumentation/opentelemetry_elli/src/opentelemetry_elli.app.src

Co-authored-by: Fred Hebert <mononcqc@ferd.ca>

Co-authored-by: Fred Hebert <mononcqc@ferd.ca>
2022-03-27 11:02:44 -06:00
Bryan Naegele
c7fd3c9d9d
v0.1.0 (#73)
* v0.1.0

* v0.1.1
2022-03-25 14:53:37 -06:00
Damir Vandic
0f137525b5
Make Ecto spans of preloads children of the parent span (#49)
🎉
2022-03-24 14:19:24 -06:00
Andrew Rosa
3faa246d02
Remove exporter race-condition on tests (#44)
Default exporter immediately attempts on start connect to
`:otel-collector` default port. As we don't have any collector running
on our test environment, this results in a few warnings. That's not an
issue in itself, as code immediately switches to another export, but
creates a lot of noise.

This patch moves the exporter setup to `config/test.exs`, essentially
removing the need to restart opentelemetry applicationn for each test
case. The only work setup blocks do is update the exporter's target pid.

The processor was changed to simple mode, available now, which also remove
another vector of (unlikely but theoretically possible) race-conditions.
2022-03-24 11:48: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
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