yangbancode

yangbancode

Otel - Pure Elixir implementation of OpenTelemetry

Hi everyone :waving_hand:

I’d like to introduce Otel, a project I recently released — a pure-Elixir implementation of OpenTelemetry that satisfies the full OpenTelemetry Stable specification.

There’s still plenty to refine on the stability and performance side, but it’ll keep getting better — I hope it catches your interest.

Features

  • Signals
    • Traces
    • Metrics
    • Logs
    • Baggage
  • Propagators
    • W3C TraceContext
    • W3C Baggage
  • Exporters
    • Console (stdout)
    • OTLP HTTP
  • Configuration
    • Declarative YAML (OTEL_CONFIG_FILE)
    • Environment variables (OTEL_*)
    • Programmatic (Application env)
  • Semantic Conventions
    • Attribute registry
    • Metric registry
  • Integrations
    • :logger bridge

Thanks!

https://github.com/yangbancode/otel

Most Liked

yangbancode

yangbancode

Hi @hauleth — I see you’re an OpenTelemetry core member. First, I want to sincerely thank you for the work and the community contribution you’ve put in over the years.

About five years ago, I introduced :opentelemetry Traces into a project I was working on, and it was a huge help for performance analysis and bug tracking. We surfaced and quickly resolved a number of issues that had been buried in the system, and that experience has stayed with me strongly ever since. Without the EEF team’s work at that time, I don’t think we would have unraveled those problems as quickly as we did.

Logs and Metrics weren’t officially supported back then, so I remember substituting :telemetry + Prometheus for Metrics and Logger JSON output + the Datadog Agent for Logs. It worked, but having those third-party tools hanging off :opentelemetry from every angle made for a less-than-smooth developer experience. I really wished all three signals would land in one place at stable quality, and I thought about contributing directly — but Erlang syntax never quite agreed with me. Quietly cheering from the user side was about all I could do.

After moving to a different company, I drifted away from :opentelemetry for a while. Recently I had a bit of free time and wanted to take on a fun personal project, and I was curious to actually try out what people are calling “vibe coding” with AI tools like Claude. I also wanted to get a feel for how I might work in the age of AI. While thinking about what topic would suit, the OpenTelemetry experience that had stayed with me most strongly came back to mind, and I thought — what if I tried implementing it myself?

In a sense, this project grew out of how amazing :opentelemetry felt to use back then — it’s not an attempt to replace the official implementation in any way. I started this as a small toy project to play with and run a few experiments, and I’d be grateful if it could be received in that spirit.

mudasobwa

mudasobwa

Creator of Cure

Woud you mind to tell, how is it better compared to opentelemetry?

hauleth

hauleth

Just from the start - your logger implementation will greatly impact performance of the whole system in case of slower exporter as you have no overload protection there.

And as @mudasobwa said - why create new project when there exists official one already?

Where Next?

Popular in Announcing Top

tmbb
PhoenixWS - Websockets over Phoenix Channels Source code on Github here: GitHub - tmbb/phoenix_ws: Websockets implemented over Phoenix Ch...
New
devonestes
Introducing assertions, the library that helps you write really great test assertions! GitHub: GitHub - devonestes/assertions: Helpful a...
New
mikehostetler
I’m excited to announce Jido, a framework providing foundational primitives for building autonomous agent systems in Elixir. While develo...
New
aesmail
Hello guys, I have finally made it. I created an admin interface for a framework. It’s been on my todo list for years and with the curre...
New
zorbash
I created Kitto a framework for dashboards inspired by Dashing. The distributed characteristics of Elixir and the low memory footprint...
New
Crowdhailer
Experimenting with this code. OK.try do user <- fetch_user(1) cart <- fetch_cart(1) order = checkout(cart, user) save_orde...
New
versilov
Could not wait for the missing Elixir ML libraries to appear, so, I wrote one myself, taking https://github.com/sdwolfz/exlearn as a foun...
New
Hal9000
Here is my first stab at this. README pasted below. https://github.com/Hal9000/elixir_random Comments and critiques are welcome. Thank...
New
markmark206
simple_feature_flags is a tiny package that lets you turn features on or off based on which environment (e.g. localhost, staging, product...
New
anshuman23
Hello all, I have been working on my proposed project called Tensorflex as part of Google Summer of Code 2018.. Tensorflex can be used f...
New

Other popular topics Top

aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
New
JeremM34
Hello, how can I check the Phoenix version ? Thanks !
New
Fl4m3Ph03n1x
About me? ( if you have nothing better to do than reading about some random guy in the internet :stuck_out_tongue: ) Hello all, this is ...
New
msaraiva
Surface is an experimental library built on top of Phoenix LiveView and its new LiveComponent API that aims to provide a more declarative...
564 43622 214
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
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
shijith.k
I am trying to start a new phoenix project with elixir 1.9, but mix phx.new does not work. It says that ** (Mix) The task "phx.new" could...
New
axelson
This post is a wiki (feel free to hit the edit button near the bottom right of this post to add your own changes!) This post collects co...
239 47930 226
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New

We're in Beta

About us Mission Statement