Prometheus Plugs 
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.PlugExporterThen 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:
Add prometheus_plug to your list of dependencies in
mix.exs:def deps do
[{:prometheus_plugs, "~> 0.7"}]end
Ensure prometheus is started before your application:
def application do
[applications: [:prometheus]]end
License
MIT