akoutmos

akoutmos

Author of Build a Weather Station with Elixir and Nerves

PromEx - Prometheus metrics and Grafana dashboards for all of your favorite Elixir libraries

Prometheus metrics and Grafana dashboards for all of your favorite Elixir libraries

Hex.pm GitHub Workflow Status (branch) Coveralls github branch

I have been putting off creating an ElixirForum post about PromEx until it hit the coveted 1.0.0 mark. But that time has finally come! PromEx is a metrics framework that ties together all of the BEAM Telemetry libraries in a simple to use package. It comes with plugins for all of the popular Elixir ecosystem libraries including Phoenix, Ecto, LiveView, Oban, the BEAM itself, and may more coming soon. Each PromEx plugin also comes with an accompanying Grafana dashboard which PromEx will automatically upload for you on application start. PromEx will also annotate all of your PromEx Grafana dashboards so that you know when application instances come up and go down:

PromEx is extensible in that it also allows you to write you own plugins and dashboards to support gathering metrics specific to you application.

Check out the thorough Hex Docs to learn more about PromEx Contents — PromEx v1.0.0
And Check out the snapshots of the dashboards if you are curious what you get out of the box Dashboards Screenshots — PromEx v1.11.0

Most Liked

akoutmos

akoutmos

Author of Build a Weather Station with Elixir and Nerves

Version 1.4.0 of PromEx has been published to Hex.

Changelog for this version:

Changed

  • The Phoenix plugin now requires an :endpoint configuration option to be passed to it containing the module
    for which metrics will be captured.

Added

  • Plug.Router plugin and dashboard.
  • PlugCowboy plugin and dashboard.
  • Phoenix plugin now supports multiple routers and multiple endpoints.
  • Phoenix plugin and dashboards now contains endpoint configuration data.
  • Phoenix plugin now captures socket metrics (dashboard not yet updated though).
  • Ecto plugin captures total_time metrics (dashboard not yet updated though).
  • Add an optional configuration to dashboard renderer and each plugin so that the metrics_prefix can be altered.

Fixed

  • Oban dashboard overview stat panels.
akoutmos

akoutmos

Author of Build a Weather Station with Elixir and Nerves

Version 1.0.1 of PromEx has been published to Hex

This release includes mostly documentation fixes and a minor bug fix to the Oban plugin. Give it a whirl!

akoutmos

akoutmos

Author of Build a Weather Station with Elixir and Nerves

Great question! The metrics plug that comes with PromEx has no authorization configuration available since I have another library that I maintain that deals with things like that. I will probably pull in authorization into the builtin plug since it is a common request in the near future. But for now I recommend people use Unplug which can unhook plugs from your plug pipeline.

PromEx is currently capturing metrics for The Changelog and you can look at how they secure the metrics endpoint using Unplug:

akoutmos

akoutmos

Author of Build a Weather Station with Elixir and Nerves

Version 1.6.0 of PromEx has been published to Hex

Changelog for this version:

Added

  • Updated BEAM plugin to surface JIT support
  • Broadway metrics plugin
  • Broadway Grafana dashboard

Fixed

  • LiveView plugin would detach exception handles when certain errors were encountered

Here is a snapshot of the Broadway dashboard:

akoutmos

akoutmos

Author of Build a Weather Station with Elixir and Nerves

Version 1.7.0 of PromEx has been published to Hex

This is a really exciting release as PromEx now allows you to bundle GrafanaAgent so that you can push metrics to a Prometheus instance via remote_write. That means that you can get up and running with services like GrafanaCloud in minutes! Imagine that, metrics and dashboards all up and running in 15 minutes :clinking_glasses:. Enjoy!

Changelog for this version:

Added

  • Added ability to execute arbitrary function on resulting dashboard for user customization.
  • The GrafanaClient is now considered part of the public API, and users can interact with Grafana directly. For example, users can publish their own Grafana annotations in addition to the annotations provided by PromEx.
  • Added the ability to start GrafanaAgent via a port so that metrics can be published via remote_write to an other Prometheus instance. For example, if you are using GrafanaCloud, you can use PromEx to push metrics right to GrafanaCloud using the appropriate configuration. This feature is currently only available for Linux and OS X.
  • The ETSCronFlusher GenServer can now be configured to flush the ETS buffer at whatever time interval you desire. The default is still every 7.5s.

Fixed

  • Broadway metrics prefix.
  • Broadway dashboard panel descriptions and titles.
  • Fixed the :default_selected_interval option in all dashboards.
  • Phoenix plugin manual metrics were ignoring the metric prefix option.

Changed

  • Application plugin no longer logs warnings for missing GIT env vars.
  • LifecycleAnnotator no longer logs warnings for missing GIT env vars.
  • All plugin distribution buckets have been redefined. The reason for this being that prior to PromEx 1.7, some of the distribution buckets were a bit wasteful and were not adding value in terms of metrics data points. With this change,
    users should notice a decline in data point cardinality without compromising resolution.
  • Application plugin has changed how it fetches dependency information. It is now using Applciation.spec/1 to get the list of applications that are started with your application. This should reduce noise in the Grafana dashboard as all
    the default OTP and Elixir applications will not show up.
  • All Grafana dashboard now have a default panel sort order where the largest timeseries plot is first in the list when hovering over the visuals.
  • All Grafana dashboards now filter the instance filter based on the selected job filter.
  • The Oban plugin no longer collects metrics related to :circuit events as those have been removed from Oban starting with version 2.11 (Lock based leadership by sorentwo · Pull Request #606 · oban-bg/oban · GitHub). The Oban dashboard will be updated in the next release to remove the unused panels.

Where Next?

Popular in Libraries Top

Qqwy
While not as prevalent as in imperative languages, arrays (collections with efficient random element access) are still very useful in Eli...
New
Jskalc
Hi! Today, after a couple weeks of development I’ve released v0.1 of LiveVue. It’s a seamless integration of Vue and Phoenix LiveView, i...
New
vic
Expat is a tiny experiment I did for extracting patterns and being able to reuse them (compose and share patterns between elixir librarie...
New
mplatts
With HEEX released we decided to start a components library using Tailwind CSS - check it out here: Petal Components. We also have a boi...
New
dbern
I’m excited to announce that TaxJar has developed and open-sourced DateTimeParser. We developed it because we found a need to parse user ...
New
mindok
What is ContEx? A pure Elixir server-side data plotting/charting library outputting SVG. It has nice barcharts in particular and works g...
New
josevalim
Yes, yet another parser combinator library! Most of the parser combinators in the ecosystem are either compile-time, often using AST tra...
159 18262 141
New
gabrielpoca
Hello everyone! I want to share with you something that I’m really proud of: https://stillstatic.io/ Still is a static site builder for...
New
mattludwigs
Grizzly is a library for working with Z-Wave devices. Z-Wave is a low-frequency radio protocol for controlling smart home devices on a me...
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

shahryarjb
Hello, I get Persian date from my client and convert it to normal calendar like this: def jalali_string_to_miladi_english_number(persi...
New
dotdotdotPaul
Okay, I'm having a heck of a time trying to figure out how to best handle the validation of belongs_to associations in Ecto. I'm sure I'...
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
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 record...
New
ycv005
I have followed this StackOverflow post to install the specific version of Erlang. And When I am running mix ecto.setup then getting fol...
New
lk-geimfari
What is most correct way to open, read and parse JSON file with poison? For example if we have example.json file in root of some projec...
New
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
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
AstonJ
by Lance Halvorsen Elixir and Phoenix are generating tremendous excitement as an unbeatable platform for building modern web application...
460 27162 124
New

Sub Categories:

We're in Beta

About us Mission Statement