davydog187

davydog187

Hello all!

I wrote a blog post called Elixir Observability: OpenTelemetry, Lightstep, Honeycomb. The post post covers how to integrate your Elixir application with Open Telemetry to make it observable in Lightstep and Honeycomb’s reliability platform.

Please let me know if you have questions or feedback!

Showing Posts 1 to 8

dimitarvp

dimitarvp

Really good post, thanks a lot!

I’ve been wrestling with OpenTelemetry in Rust a few months ago and it took me a day or two to even find my way around all the terminology and then be able to send metrics to Jaeger and Zipkin. And Prometheus afterwards, with Grafana.

Your post added a few extra strokes to the picture that I was not clear on. Much appreciated!

davydog187

davydog187 OP

Thanks for the kind words. If there are sub-topics that you’d like me to dive into, please let me know and I’ll consider them!

dimitarvp

dimitarvp

Yes, there’s one thing.

Most OpenTelemetry guides never talk about what piece fits where. A simple diagram showing how on one of the “floors” of this “building” you can have Jaeger, Zipkin, or Prometheus for example would be hugely helpful.

When I was learning OT this was very hard to grasp initially. Nobody seems to care to give the big picture – literally – with a diagram.

So something like: “To have OT work well you need the pieces X, Y and Z – for collecting/ingesting data, aggregating them, and visualizing them. For Y you can choose between Jager and Zipkin, for Z you can choose between this or that (e.g. Grafana and friends)”.

Strangely, such perspective is almost always missing.

the_wildgoose

the_wildgoose

This is a great post! Thanks

If I might also draw attention to the “Mobius” library for elixir. It doesn’t do anything like the above, however, it solves a similar problem when all you wanted was something simple, right now. So I came across it when I was doing a little embedded stuff and had no desire to setup a bunch of servers, timeseries databases, grafana, etc, etc.

Mobius is just a stupidly simple little mini timeseries database, complete with the ability to plot basic graphs from the command line… It in no way does anything as powerful as all the stuff you described… But you know what! For me at least it created the DEMAND to go and get something better! Before that I had no way to see how useful telemetry was. Mobius let me quickly answer simple questions, which in turn has led me to want more. So I went from having no telemetry to adding stuff to all my key functions. From here I can use opentelemetry/grafana/etc to get proper analysis. However, I don’t think I would have bothered without that leg up

Give it a whirl. I think it’s a great stepping stone to create demand for a proper solution

dimitarvp

dimitarvp

Thanks for the reminder, I’ve been meaning to try it for months now.

csadewa

csadewa

Very cool! 3 months ago i was implementing opentelemetry on elixir and it was a bumpy ride. It would be a smoother ride if i had read your blog post then.

Regarding subtopic, there were some additional problem that i was wrestling with besides basic otel:

  1. How to implement opentelemetry instrumenter in elixir: if you have a custom library/plugin which are not yet included in standard opentelemetry instrumenter for elixir/erlang. how you should develop it or extend existing?
  2. Performance tuning: I once has a performance problem with opentelemetry (memory usage and latency) for high request throughput server, mainly caused by number of span and trace stored by opentelemetry. i was able to fix it at the time with fiddling following variable:
OTEL_BSP_SCHEDULE_DELAY_MILLIS: "500"
OTEL_BSP_MAX_QUEUE_SIZE: "1024"
OTEL_SPAN_SWEEPER_INTERVAL: "120000"
OTEL_SPAN_SWEEPER_STRATEGY: failed_attribute_and_end_span
OTEL_SPAN_SWEEPER_SPAN_TTL: "120000"
csadewa

csadewa

also, for someone which new to opentelemetry integration on elixir, CNCF Slack for opentelemetry erlang working group is very welcoming and i was able to get a lot of help there GitHub - open-telemetry/opentelemetry-erlang: OpenTelemetry Erlang SDK · GitHub

pedroassumpcao

pedroassumpcao

Great post, I noticed that you focused more on high cardinality data and how that can be exported to Lightstep or Honeycomb, but I am wondering what would be if I would like to export metrics (low cardinality) as well and what would be the main differences.

— All posts loaded —

Where Next? Top

Trending in Blog Posts Top

mudasobwa
I am seeing a lot of aplications of Argumentum ad Vericundiam in software discussions. They do link some piece of writing and point us to...
New
rhcarvalho
At the heart of every Phoenix application is the often “invisible” HTTP server layer. For over a decade Cowboy has served the community ...
New
pckrishnadas88
I’ve published Part 3 of my Elixir distributed systems learning series. This part explores process monitoring using the low-level primit...
New
zorn
I wrote up a blog post talking about the first skill I made, one that does a detailed Elixir dependency update. More than Dependabot, it...
New
pckrishnadas88
I’ve published Part 4 of my Elixir distributed systems learning series. This part explores process linking using low-level primitives di...
New
pckrishnadas88
Hey everyone! :waving_hand: I’ve published Part 7 of the Building Distributed Systems in Elixir series, where we build core distributed ...
New
mudasobwa
So, instead of wasting my afternoon arguing with anonymous handles on X, I turned to my trusty, soulless assistant and said: “Listen, ple...
New

Other Trending Topics Top

mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews