davydog187

davydog187

Elixir Blog Post: Elixir Observability: OpenTelemetry, Lightstep, Honeycomb

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!

Most Liked

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.

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!

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"
davydog187

davydog187

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!

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

Where Next?

Popular in Blog Posts Top

thiagoa
Hello everyone, I published the first post of a series which aims to TDD a full application under an Umbrella project. Each post will g...
New
fredwu
Hi folks, I wrote a blog post the other day on how I built my MVP in 3 months whilst having a day job, using Elixir/Phoenix/LiveView. Th...
New
jordiee
https://medium.com/@jpiepkow/distributed-state-is-hard-5a0d384c2f3c
New
bencoppock
I write about the frustration that can occur when dealing with string and atom-based keys in maps and how to (safely) translate string-ba...
New
jordiee
https://medium.com/@jpiepkow/team-based-login-with-accesspass-be236d4bd7dd
New
brainlid
Elixir has a built-in Zip library that comes with OTP. This post explores how to use the zip module and asks the important question: “Is ...
New
victorbjorklund
I’m showing you how you can customise the phx.new generator to give you a new Phoenix project the way YOU want it. In this post I show yo...
New
lawik
Building on other people’s work I bashed things together and suddenly I can know when someone is speaking using Elixir and Membrane.
New
stryrckt
Support for AlpineJS in LiveView was added in 0.13.3 and it works fabulously. I just wrote a blog article about it and plan another one s...
New
lawik
One of the Erlang ecosystem’s spiciest nerd snipes are hot code updates. Because it can do it. In ways that almost no other runtime can.
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
josevalim
Hi everyone, One of the features added to Elixir early on to help integration with Erlang code was the idea of overridable function defi...
New
JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1140 51847 244
New
yawaramin
In the Dialyzer docs ( http://erlang.org/doc/man/dialyzer.html#requesting-or-suppressing-warnings-in-source-files ), there is a way to tu...
New
myronmarston
The Elixir Typespec docs show the following syntax for keyword lists in typespecs: # ... | [key: type] # keyword lis...
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
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? https://hexdocs.pm/ecto/Ecto.Repo.h...
New
WestKeys
Currently suffering from paralysis by [HTTP client] analysis. This is rather unusual in Elixirland as there tends to be consensus on the ...
New
AstonJ
by Lance Halvorsen Elixir and Phoenix are generating tremendous excitement as an unbeatable platform for building modern web application...
460 27162 124
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

We're in Beta

About us Mission Statement