Home
Softono

Prometheus.ex

Open source MIT Elixir
423
Stars
67
Forks
14
Issues
9
Watchers
7 months
Last Commit

 About Prometheus.ex

Prometheus.io Elixir client

Platforms

Web Self-hosted

Languages

Elixir

Links

Need Help Installing Prometheus.ex?

We provide expert installation service for this software. Our team will install, configure, and secure Prometheus.ex on your server. plans start at just $30.

Prometheus.ex

View on GitHub

Prometheus.ex

Hex.pm Hex.pm Hex Docs GitHub Actions Codecov

Elixir Prometheus.io client based on Prometheus.erl.

Dashboard from Monitoring Elixir apps in 2016: Prometheus and Grafana by @skosch.

Example

defmodule ExampleInstrumenter do
  use Prometheus.Metric

  def setup do    
    Histogram.new([name: :http_request_duration_milliseconds,
                   labels: [:method],
                   buckets: [100, 300, 500, 750, 1000],
                   help: "Http Request execution time"])
  end

  def instrument(%{time: time, method: method}) do
    Histogram.observe([name: :http_request_duration_milliseconds, labels: [method]], time)
  end
end

or

defmodule ExampleInstrumenter do
  use Prometheus.Metric

  @histogram [name: :http_request_duration_milliseconds,
              labels: [:method],
              buckets: [100, 300, 500, 750, 1000],
              help: "Http Request execution time"]

  def instrument(%{time: time, method: method}) do
    Histogram.observe([name: :http_request_duration_milliseconds, labels: [method]], time)
  end
end

Here histogram will be declared in auto-generated @on_load callback, i.e. you don't have to call setup manually.

Please read how to measure durations correctly with prometheus.ex.

Integrations / Collectors / Instrumenters

Dashboards

Installation

Available in Hex, the package can be installed as:

  1. Add prometheus_ex to your list of dependencies in mix.exs:

    def deps do
      [{:prometheus_ex, "~> 4.0"}]
    end
    
  2. Ensure prometheus_ex is started before your application:

    def application do
      [applications: [:prometheus_ex]]
    end