Packages
Prometheus monitoring system client Plugs. Http metrics collector and exporter.
Current section
Files
Jump to
Current section
Files
lib/plug/prometheus_exporter.ex
defmodule Plug.PrometheusExporter do
@moduledoc """
Exports metrics in text format via configurable endpoint:
``` elixir
plug Plug.PrometheusExporter, [path: "/prom/metrics"] # default is /metrics
```
Options:
- path - url to scrape. Default is `"/metrics"`.
- format - export format (`:prometheus_text_format` or `:prometheus_protobuf_format`). Default is `:prometheus_text_format`.
- registry - prometheus registry to export. Default is `:default`.
"""
import Plug.Conn
@behaviour Plug
def init(opts) do
:prometheus.start
path = Keyword.get(opts, :path, "/metrics")
format = Keyword.get(opts, :format, :prometheus_text_format)
registry = Keyword.get(opts, :registry, :default)
{Plug.Router.Utils.split(path), format, registry}
end
def call(conn, {path, format, registry}) do
case conn.path_info do
^path ->
conn
|> put_resp_content_type(format.content_type)
|> send_resp(200, format.format(registry))
|> halt
_ ->
conn
end
end
end