IwoHerka

IwoHerka

OpenTelemetry exporter failed to initialize with exception inets_not_started

I’m trying to deploy Phoenix application with OpenTelemetry tracing in a Docker container. Dockerfile I was using so far (sucessfully) is a typical one (i.e. generated by mix phx.gen.release --docker). Following versions are used:

ARG ELIXIR_VERSION=1.15.4
ARG OTP_VERSION=26.0.2
ARG DEBIAN_VERSION=bullseye-20230612-slim

So, the image is hexpm/elixir:1.15.4-erlang-26.0.2-debian-bullseye-20230612-slim.
(I’m running the same versions locally for development, the only difference I’m working on Ubuntu 22.04 via WSL2.)

The problem is that then running this container, a following message is produced which indicates that OTLP exporter fails (with MIX_ENV=prod):

=WARNING REPORT==== 6-Sep-2023::20:15:42.868641 ===
OTLP exporter failed to initialize with exception error:{badmatch,
                                                          {error,
                                                           inets_not_started}}
=WARNING REPORT==== 6-Sep-2023::20:15:42.880076 ===
Failed to load OTP-trusted CAs: error:{badmatch,{error,enoent}}, falling back to hardcoded authorities

This doesn’t happen when running code in (both in dev and prod) locally, outside container.

My OTLP config is almost the same as in Getting Started | OpenTelemetry, namely:

mix.exs:

# (in this order):

{:opentelemetry_exporter, "~> 1.6"},
{:opentelemetry, "~> 1.3"},
{:opentelemetry_api, "~> 1.2"},
{:opentelemetry_phoenix, "~> 1.1"},
{:opentelemetry_cowboy, "~> 0.2"},
{:opentelemetry_ecto, "~> 1.1"},

# and:

defp releases() do
  [
    foo: [
      applications: [
        opentelemetry: :temporary,
        opentelemetry_exporter: :permanent
      ]
    ]
  ]
end

application.ex:

:opentelemetry_cowboy.setup()
OpentelemetryPhoenix.setup(adapter: :cowboy2)
OpentelemetryEcto.setup([:foo, :repo])

config/runtime.ex:

  otlp_protocol = System.get_env("OTEL_PROTOCOL") |> String.to_atom()
  otlp_endpoint = System.get_env("OTEL_ENDPOINT")

  config :opentelemetry,
    span_processor: :batch,
    traces_exporter: :otlp

  config :opentelemetry_exporter,
    otlp_protocol: otlp_protocol,
    otlp_endpoint: otlp_endpoint

  config :opentelemetry, :processors, [
    {:otel_simple_processor, %{}}
  ]

Does anyone have any idea why this problem occurs?

Edit:

I’ve figured out that the problem only occurs in a release, that’s why I only see it in a container, not when starting via mix phx.server or iex -S mix phx.server.

Edit 2:

When run with lower log level I also get:

[debug] OTLP exporter failed to initialize: exception error: no match of right hand side value {error,inets_not_started}
  in function  opentelemetry_exporter:start_httpc/1 (/home/poly/P/foo-api/deps/opentelemetry_exporter/src/opentelemetry_exporter.erl, line 239)
  in call from opentelemetry_exporter:init/1 (/home/poly/P/foo-api/deps/opentelemetry_exporter/src/opentelemetry_exporter.erl, line 210)
  in call from otel_exporter:init/1 (/home/poly/P/foo-api/deps/opentelemetry/src/otel_exporter.erl, line 44)
  in call from otel_batch_processor:init_exporter/2 (/home/poly/P/foo-api/deps/opentelemetry/src/otel_batch_processor.erl, line 317)
  in call from otel_batch_processor:idle/3 (/home/poly/P/foo-api/deps/opentelemetry/src/otel_batch_processor.erl, line 197)
  in call from gen_statem:loop_state_callback/11 (gen_statem.erl, line 1377)
  in call from proc_lib:init_p_do_apply/3 (proc_lib.erl, line 241)
[warning] OTLP exporter failed to initialize with exception :error:{:badmatch, {:error, :inets_not_started}}

Thanks!

Marked As Solved

IwoHerka

IwoHerka

It turned out that changing the order of opentelemetry and opentelemetry_exporter under releases in mix.exs fixes the issue:

foo: [
  applications: [
    opentelemetry_exporter: :permanent,
    opentelemetry: :temporary
  ]
]

Where Next?

Popular in Questions Top

freewebwithme
Using vs code and installed ElixirLS: support and debugger. And I got an error popped up on start up says Failed to run ‘elixir’ comma...
New
senggen
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] 15:22:35.803 [error] gen_event {lager_file_backend...
New
pmjoe
I have a relationship of love and hate with Elixir. Lots of things are just absolutely right, but there are some things that are kind of ...
New
LegitStack
I’m hoping you guys can give me some general advice and perhaps code examples if you’re feeling up to it. I’m very interested in Elixir,...
New
jerry
Good day to you all. I have been struggling to get a query involving like and ilike to work. Can anyone assist me on this, please? pro...
New
qwerescape
Is there a way to get the call stack or stack trace at any point in the code? Not from exceptions, but an expression that returns how the...
New
gonzofish
I’m currently trying to understand how to join three tables using Ecto. All the examples I’ve seen use 2, so maybe I’m just missing somet...
New
sabri
Can someone explain the settings of pool_size of Ecto in config file? and what is the recommend size? Thanks
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New
vrod
I am using the Starship cross-shell prompt – it seems pretty nice, but I get some errors: [WARN] - (starship::utils): Executing command ...
New

Other popular topics Top

TunkShif
This post is an instruction guide to help you setup your Neovim for Elixir development from scratch. It includes general information on h...
273 38985 115
New
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
JorisKok
I have a server on AWS, and was running a load test using artillery. When looking at the Phoenix dashboard I see the Ports going to 100% ...
New
albydarned
Hello all! I am typing this post from my new MacBook Pro with the M1 chip. I’m loving it so far, and will probably use it as my daily dr...
New
_russellb
I want to try my hand at web scraping. What tools/libraries do I need to use. I’m hoping to turn this into something professional so don’...
New
Jim
As a follow up to my earlier question: I have the code compiling and running but not getting a successful login from the rest server. ...
New
ovidiubadita
Hey all, I discovered Elixir and I love it. I always wanted to learn a functional programming and I intended to go for Haskell, but afte...
New
Nvim
Elixir appears to be a superior language to Python. I don’t see any advantage of Python over Elixir. Are there any?
New

We're in Beta

About us Mission Statement