Prometheus Plugs Hex.pm

Elixir Plug integration for prometheus.erl

TL;DRExample app

Instrumentation

To instrument whole plug pipeline use Prometheus.PlugPipelineInstrumenter:

defmodule MyApp.Endpoint.PipelineInstrumenter do
  use Prometheus.PlugPipelineInstrumenter
end

To instrument just a single plug use Prometheus.PlugInstrumenter:

defmodule MyApp.CoolPlugInstrumenter do
  use Prometheus.PlugInstrumenter
end

Both modules implement plug interface and Prometheus.PlugInstrumenter generates proxy for specified plug so you'll need to replace instrumented plug with your instrumenter in pipeline.

Instrumenters configured via :prometheus app environment. Please consult respective modules documentation on what options are available.

Exporting

To export metric we first have to create a plug that will serve scraping requests.

defmodule MyApp.MetricsExporter do
  use Prometheus.PlugExporter

Then we add exporter to MyApp pipeline:

plug MyApp.MetricsExporter

You can configure path, export format and Prometheus registry via :prometheus app environment. For more information please see Prometheus.PlugExporter module documenataion.

Documentation

Please find documentation on hexdocs.

Installation

The package can be installed as:

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

    def deps do

     [{:prometheus_plugs, "~> 0.7"}]

    end

  2. Ensure prometheus is started before your application:

    def application do

     [applications: [:prometheus]]

    end

License

MIT