README.md

# OpentelemetryOban

OpentelemetryOban uses [telemetry](https://hexdocs.pm/telemetry/) handlers to
create `OpenTelemetry` spans from Oban events.

## Installation

The package can be installed by adding `opentelemetry_oban` to your list of
dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:opentelemetry_oban, "~> 0.1"}
  ]
end
```

In your application start:

```elixir
    def start(_type, _args) do
      OpenTelemetry.register_application_tracer(:my_project)
      OpentelemetryOban.setup()

      # ...
    end
```

## Usage

By default a new trace is automatically started when a job is processed.

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()
```

Oban also supports inserting jobs using `Oban.insert/4`, `Oban.insert_all/2`
and `Oban.insert_all/4`. These are currently not supported by OpentelemetryOban
and are just proxied through to Oban.