# TelemetryMetricsPrometheus

[![CircleCI](]( [![codecov](]( [![Hex](]( [![Hexdocs](](

TelemetryMetricsPrometheus is a [Telemetry.Metrics Reporter]( for aggregating and exposing [Prometheus]( metrics based on `Telemetry.Metrics` definitions. TelemetryMetricsPrometheus provides a server out of the box exposing a `/metrics` endpoint, making setup a breeze.

## Is this the right Prometheus package for me?

If you want to take advantage of consuming `:telemetry` events with the ease of 
defining and managing metrics `Telemetry.Metrics` brings for Prometheus, then yes! 
This package provides a simple and straightforward way to aggregate and report 
Prometheus metrics. Whether you're using [Prometheus]( servers, [Datadog](, 
or any other monitoring solution which supports scraping, you're in luck!

If you're not interested in taking advantage of `Telemetry.Metrics` but still 
want to implement Prometheus or use `:telemetry` in your project, have a look at 
something like the [OpenCensus]( project and 
see if it better meets your needs.

### What if I don't want the bundled server?

[TelemetryMetricsPrometheus.Core]( is the core implementation. You can run Core directly, however you will need to do all
of the plumbing to expose a `/metrics` route.

## Installation

The package can be installed by adding `telemetry_metrics_prometheus` to your 
list of dependencies in `mix.exs`:

def deps do
    {:telemetry_metrics_prometheus, "~> 1.0.0"}

See the documentation on [Hexdocs]( for more information.

## Contributing

Contributors are highly welcome! 

Additional documentation and tests are welcome. 

Please open an issue for discussion before undertaking anything non-trivial before
jumping in and submitting a PR.