prometheus_quantile_summary (prometheus v6.0.1)
View SourceSummary metric, to track the size of events and report quantiles Based on prometheus_summary
Example use cases for Summaries:
- Response latency;
- Request size;
- Response size.
Example:
-module(my_proxy_instrumenter).
setup() ->
prometheus_quantile_summary:declare(#{name => request_size_bytes,
help => \"Request size in bytes.\"}),
prometheus_quantile_summary:declare(#{name => response_size_bytes,
help => \"Response size in bytes.\"}).
observe_request(Size) ->
prometheus_quantile_summary:observe(request_size_bytes, Size).
observe_response(Size) ->
prometheus_quantile_summary:observe(response_size_bytes, Size).
Reports:
request_size_bytes_size
request_size_bytes_count
request_size_bytes\{quantile=\"0.5\"\}
request_size_bytes\{quantile=\"0.9\"\}
request_size_bytes\{quantile=\"0.95\"\}
Configuration
It takes error
and bound
as in ddskerl_ets:opts/0
.
Summary
Functions
Creates a summary using Spec
. If a summary with the same Spec
exists returns false
.
Equivalent to deregister(default, Name)
.
Removes all summary series with name Name
and removes Metric Family from Registry
.
Creates a summary using Spec
.
Equivalent to observe(default, Name, [], Value)
.
Observes the given Value
.
Equivalent to observe_duration(default, Name, LabelValues, Fun)
.
Tracks the amount of time spent executing Fun
.
Equivalent to remove(default, Name, [])
.
Equivalent to remove(default, Name, LabelValues)
.
Removes summary series identified by Registry
, Name
and LabelValues
.
Equivalent to reset(default, Name, [])
.
Equivalent to reset(default, Name, LabelValues)
.
Resets the value of the summary identified by Registry
, Name
and LabelValues
.
Equivalent to value(default, Name, [])
.
Equivalent to value(default, Name, LabelValues)
.
Returns the value of the summary identified by Registry
, Name
and LabelValues
.
If there is no summary for LabelValues
, returns undefined
.
Functions
-spec declare(prometheus_metric:spec()) -> boolean().
Creates a summary using Spec
. If a summary with the same Spec
exists returns false
.
Raises:
{missing_metric_spec_key, Key, Spec}
error if requiredSpec
key is missing.{invalid_metric_name, Name, Message}
error if metricName
is invalid.{invalid_metric_help, Help, Message}
error if metricHelp
is invalid.{invalid_metric_labels, Labels, Message}
error ifLabels
isn't a list.{invalid_label_name, Name, Message}
error ifName
isn't a valid label name.{invalid_value_error, Value, MessagE}
error ifduration_unit
is unknown or doesn't match metric name.
-spec deregister(prometheus_metric:name()) -> {boolean(), boolean()}.
Equivalent to deregister(default, Name)
.
-spec deregister(prometheus_registry:registry(), prometheus_metric:name()) -> {boolean(), boolean()}.
Removes all summary series with name Name
and removes Metric Family from Registry
.
After this call new/1 for Name
and Registry
will succeed.
Returns {true, _}
if Name
was a registered summary. Otherwise returns {false, _}
.
-spec new(prometheus_metric:spec()) -> ok.
Creates a summary using Spec
.
Raises:
{missing_metric_spec_key, Key, Spec}
error if requiredSpec
key is missing.{invalid_metric_name, Name, Message}
error if metricName
is invalid.{invalid_metric_help, Help, Message}
error if metricHelp
is invalid.{invalid_metric_labels, Labels, Message}
error ifLabels
isn't a list.{invalid_label_name, Name, Message}
error ifName
isn't a valid label name.{invalid_value_error, Value, Message}
error ifduration_unit
is unknown or doesn't match metric name.{mf_already_exists, {Registry, Name}, Message}
error if a summary with the sameSpec
already exists.
-spec observe(prometheus_metric:name(), number()) -> ok.
Equivalent to observe(default, Name, [], Value)
.
-spec observe(prometheus_metric:name(), prometheus_metric:label_values(), number()) -> ok.
Equivalent to observe(default, Name, LabelValues, Value)
.
-spec observe(Registry, Name, LabelValues, Value) -> ok when Registry :: prometheus_registry:registry(), Name :: prometheus_metric:name(), LabelValues :: prometheus_metric:label_values(), Value :: number().
Observes the given Value
.
Raises:
{invalid_value, Value, Message}
ifValue
isn't an integer.{unknown_metric, Registry, Name}
error if summary with namedName
can't be found inRegistry
.{invalid_metric_arity, Present, Expected}
error if labels count mismatch.
-spec observe_duration(prometheus_metric:name(), fun(() -> dynamic())) -> dynamic().
Equivalent to observe_duration(default, Name, [], Fun)
.
-spec observe_duration(Name, LabelValues, Value) -> dynamic() when Name :: prometheus_metric:name(), LabelValues :: prometheus_metric:label_values(), Value :: fun(() -> dynamic()).
Equivalent to observe_duration(default, Name, LabelValues, Fun)
.
-spec observe_duration(Registry, Name, LabelValues, Value) -> dynamic() when Registry :: prometheus_registry:registry(), Name :: prometheus_metric:name(), LabelValues :: prometheus_metric:label_values(), Value :: fun(() -> dynamic()).
Tracks the amount of time spent executing Fun
.
Raises:
{unknown_metric, Registry, Name}
error if summary with namedName
can't be found inRegistry
.{invalid_metric_arity, Present, Expected}
error if labels count mismatch.{invalid_value, Value, Message}
ifFun
isn't a function.
-spec remove(prometheus_metric:name()) -> boolean().
Equivalent to remove(default, Name, [])
.
-spec remove(prometheus_metric:name(), prometheus_metric:label_values()) -> boolean().
Equivalent to remove(default, Name, LabelValues)
.
-spec remove(Registry, Name, LabelValues) -> boolean() when Registry :: prometheus_registry:registry(), Name :: prometheus_metric:name(), LabelValues :: prometheus_metric:label_values().
Removes summary series identified by Registry
, Name
and LabelValues
.
Raises:
{unknown_metric, Registry, Name}
error if summary with nameName
can't be found inRegistry
.{invalid_metric_arity, Present, Expected}
error if labels count mismatch.
-spec reset(prometheus_metric:name()) -> boolean().
Equivalent to reset(default, Name, [])
.
-spec reset(prometheus_metric:name(), prometheus_metric:label_values()) -> boolean().
Equivalent to reset(default, Name, LabelValues)
.
-spec reset(Registry, Name, LabelValues) -> boolean() when Registry :: prometheus_registry:registry(), Name :: prometheus_metric:name(), LabelValues :: prometheus_metric:label_values().
Resets the value of the summary identified by Registry
, Name
and LabelValues
.
Raises:
{unknown_metric, Registry, Name}
error if summary with nameName
can't be found inRegistry
.{invalid_metric_arity, Present, Expected}
error if labels count mismatch.
-spec value(prometheus_metric:name()) -> {non_neg_integer(), number(), [{float(), float()}]} | undefined.
Equivalent to value(default, Name, [])
.
-spec value(prometheus_metric:name(), prometheus_metric:label_values()) -> {non_neg_integer(), number(), [{float(), float()}]} | undefined.
Equivalent to value(default, Name, LabelValues)
.
-spec value(Registry, Name, LabelValues) -> Result when Registry :: prometheus_registry:registry(), Name :: prometheus_metric:name(), LabelValues :: prometheus_metric:label_values(), Result :: {non_neg_integer(), number(), [{float(), float()}]} | undefined.
Returns the value of the summary identified by Registry
, Name
and LabelValues
.
If there is no summary for LabelValues
, returns undefined
.
If duration unit set, sum will be converted to the duration unit. Read more here.
Raises:
{unknown_metric, Registry, Name}
error if summary namedName
can't be found inRegistry
.{invalid_metric_arity, Present, Expected}
error if labels count mismatch.
-spec values(prometheus_registry:registry(), prometheus_metric:name()) -> [{[{atom(), dynamic()}], non_neg_integer(), infinity | number(), [{float(), float()}]}].