Prometheus.ex v1.0.0 Prometheus.Model

Helpers for working with Prometheus data model. For advanced users.

Prometheus.Collector example demonstrates how to use this module.

Summary

Macros

Creates counter metric with labels and value

Creates counter metrics from mdata {labels, value} tuple list

Creates Metric Family of type, name and help. collector.collect_metrics/2 callback will be called and expected to return individual metrics list

Creates gauge metric with labels and value

Creates gauge metrics from mdata {label, value} tuple list

Creates histogram metric with labels, buckets, count, and sum

Creates histogram metrics from mdata {labels, buckets, count, sum} tuple list

Creates summary metric with labels, count, and sum

Creates summary metrics from mdata {labels, count, sum} tuple list

Creates untyped metric with labels and value

Creates untyped metrics from mdata {label, value} tuple list

Macros

counter_metric(labels \\ [], value)

Creates counter metric with labels and value.

iex(15)> Prometheus.Model.counter_metric([host: "example.com"], 100)
{:Metric, [{:LabelPair, "host", "example.com"}], :undefined, {:Counter, 100},
:undefined, :undefined, :undefined, :undefined}
counter_metrics(mdata)

Creates counter metrics from mdata {labels, value} tuple list.

iex(14)> Prometheus.Model.counter_metrics([{[host: "example.com"], 100}])
[{:Metric, [{:LabelPair, "host", "example.com"}], :undefined, {:Counter, 100},
:undefined, :undefined, :undefined, :undefined}]
create_mf(name, help, type, collector, collector_data)

Creates Metric Family of type, name and help. collector.collect_metrics/2 callback will be called and expected to return individual metrics list.

gauge_metric(labels \\ [], value)

Creates gauge metric with labels and value.

iex(13)> Prometheus.Model.gauge_metric([host: "example.com"], 100)
{:Metric, [{:LabelPair, "host", "example.com"}], {:Gauge, 100}, :undefined,
 :undefined, :undefined, :undefined, :undefined}
gauge_metrics(mdata)

Creates gauge metrics from mdata {label, value} tuple list.

iex(11)> Prometheus.Model.gauge_metrics([{[host: "example.com"], 100}])
[{:Metric, [{:LabelPair, "host", "example.com"}], {:Gauge, 100}, :undefined,
:undefined, :undefined, :undefined, :undefined}]
histogram_metric(labels \\ [], buckets, count, sum)

Creates histogram metric with labels, buckets, count, and sum.

iex(4)> Prometheus.Model.histogram_metric([{:method, :get}], [{2, 1}, {5, 1}, {:infinity, 2}], 2, 10.5)
{:Metric, [{:LabelPair, "method", "get"}], :undefined, :undefined, :undefined,
:undefined,
{:Histogram, 2, 10.5,
[{:Bucket, 1, 2}, {:Bucket, 1, 5}, {:Bucket, 2, :infinity}]}, :undefined}

Buckets is a list of pairs {upper_bound, cumulative_count}. Cumulative count is a sum of all cumulative_counts of previous buckets + counter of current bucket.

histogram_metrics(mdata)

Creates histogram metrics from mdata {labels, buckets, count, sum} tuple list.

iex(2)> Prometheus.Model.histogram_metrics([{ [{:method, :get}], [{2, 1}, {5, 1}, {:infinity, 2}], 2, 10.5}])
[{:Metric, [{:LabelPair, "method", "get"}], :undefined, :undefined, :undefined,
  :undefined,
  {:Histogram, 2, 10.5,
   [{:Bucket, 1, 2}, {:Bucket, 1, 5}, {:Bucket, 2, :infinity}]}, :undefined}]
summary_metric(labels \\ [], count, sum)

Creates summary metric with labels, count, and sum.

iex(3)> Prometheus.Model.summary_metric([{:method, :get}], 2, 10.5)
{:Metric, [{:LabelPair, "method", "get"}], :undefined, :undefined,
  {:Summary, 2, 10.5, []}, :undefined, :undefined, :undefined}
summary_metrics(mdata)

Creates summary metrics from mdata {labels, count, sum} tuple list.

iex(7)> Prometheus.Model.summary_metrics([{[{:method, :get}], 2, 10.5}])
[{:Metric, [{:LabelPair, "method", "get"}], :undefined, :undefined,
  {:Summary, 2, 10.5, []}, :undefined, :undefined, :undefined}]
untyped_metric(labels \\ [], value)

Creates untyped metric with labels and value.

iex(13)> Prometheus.Model.untyped_metric([host: "example.com"], 100)
{:Metric, [{:LabelPair, "host", "example.com"}], :undefined,
 :undefined, :undefined, {:Untyped, 100}, :undefined, :undefined}
untyped_metrics(mdata)

Creates untyped metrics from mdata {label, value} tuple list.

iex(11)> Prometheus.Model.untyped_metrics([{[host: "example.com"], 100}])
[{:Metric, [{:LabelPair, "host", "example.com"}], :undefined,
:undefined, :undefined, {:Untyped, 100}, :undefined, :undefined}]