9mm

9mm

What do you use to monitor your Elixir app?

Im coming close to deploying my app soon :smiley:

I can imagine things like seeing a realtime view of the number of processes, exceptions and whatnot would be really helpful to see.

I know there are some extremely bloated tools for ruby, I’d rather avoid stuff like that.

So what are your ‘must have’ monitoring / performance tuning / metrics libraries?

Most Liked

binaryseed

binaryseed

Over at New Relic, we use the open source agent we have built. It comes with Plug transaction tracing, distributed tracing for micro-services, errors, BEAM stats, function tracing, custom attributes, alerting, etc.

In progress are a few framework integrations - Phoenix and Absinthe. Long term we want to align with the Elixir Telemetry project so we don’t need a bunch of vendor specific instrumentation packages in the ecosystem

lpil

lpil

Creator of Gleam

I’ve been using Appsignal https://appsignal.com/

The product itself is excellent for both exception and performance monitoring, and the custom metrics are handy too. It’s also well priced too- switching over from New Relic saved us a lot of money.

I’ve pestered the Appsignal team plenty of times for help (or to obnoxiously request features!) and they’ve always been extremely helpful and responsive. Very happy with the service.

It currently has a bug where with cowboy 2 it reports 404s as errors, but that should be fixed soon.

sneako

sneako

I have been using Statix with Elixometer which all gets sent to Datadog (via their agent/dogstatsd), where we have our monitoring dashboards.

Also Honeybadger for error monitoring, and VictorOps for alerting.

However, just yesterday, I replaced Elixometer with vmstats in one of our applications (following a similar strategy to the one laid out in this blog post). I think I will be using vmstats going forward. It was much easier to set up than elixometer and requires much less configuration.

keathley

keathley

Currently we use a combination of statsd for raw metrics and open tracing through spandex: https://github.com/spandex-project. All of this gets sent over to datadog. In the past I’ve used prometheus and grafana and both are good. I actually prefer prometheus to statsd but both are fine. I don’t think I could live without open tracing at this point. Its probably not necessary if you’re just running 1 or 2 services. But if you end up with a lot of different services its pretty invaluable for observability.

Off the shelf apm tools have the most strengths when you only need to monitor / observe 1 application or service. As systems grow I tend to want more control over my monitoring and alerting rules and a lot of off the shelf apm tools don’t give you that sort of power. In the end I prefer tools like datadog or grafana.

fmcgeough

fmcgeough

These are all good suggestions. Additionally we use:

I’d use (or pick) something to store metrics in that can provide visualizations. Start small and pump some general data into that store. Add to it over time. We use telegraf currently for that.

Where Next?

Popular in Questions Top

srinivasu
How to handle excepions in elixir? Suppose i have A, B, C ,D, E modules. and each module has get() function. A.get() method will call th...
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
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
New
fayddelight
I tried installing elixir 1.11.2 erlang 23.3.4 via asdf in my zsh shell. Enabled the versions locally and globally. When I list them ...
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
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
beno
I will often find my self writing things similar to: case some_value do nil -> something() "" -> something() _ -> someth...
New
9mm
I am constructing a JSON object (map) and I need to conditionally set a field. I’m trying to write proper elixir-way code… and I’m at a l...
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

JDanielMartinez
Hi! May someone helps me, please! I have two apps into an umbrella project: the first one is Database, which manages queries, and the se...
New
Brian
What is the proper way to load a module from a file in to IEX? In the python world, doing something like this pretty standard: from ....
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
sergio
I couldn’t find any guides that worked well with Phoenix 1.6.0 and esbuild. I hope this helps people test the waters and eases you into t...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New
malloryerik
Hi, this is for people who, like me, have had some friction using .html.heex templates in VSCode. The solution seems to be, in a hyphena...
New
polypush135
As many of you may have realized by now (sorry for all the posts here) I’ve been working on a db problem where I’m trying to aggregate a ...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
chrisalley
ExUnit now has describe blocks which is a welcome addition coming from RSpec. In the docs, it states that nested hierarchies of describe ...
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

We're in Beta

About us Mission Statement