instrument_metric (instrument v0.6.1)
View SourceMain API facade for metrics instrumentation.
This module provides a unified interface for creating and manipulating metrics including counters, gauges, and histograms. It supports both simple metrics and vector metrics (metrics with labels).
Simple Metrics
Counter = instrument:new_counter(requests_total, <<"Total HTTP requests">>),
instrument:inc_counter(Counter),
instrument:inc_counter(Counter, 5).Vector Metrics (Labeled)
instrument:new_counter_vec(http_requests, <<"Requests">>, [method, status]),
instrument:inc_counter_vec(http_requests, [<<"GET">>, <<"200">>]).For OpenTelemetry-compatible metrics, see instrument_meter.
Summary
Types
Functions
-spec clear_labels(Vector :: metric()) -> ok.
-spec dec_gauge(Gauge :: metric()) -> Result :: ok | {error, not_found}.
-spec dec_gauge_vec(Name :: metric_name(), LabelValues :: list()) -> ok | {error, term()}.
-spec dec_gauge_vec(Name :: metric_name(), LabelValues :: list(), Value :: number()) -> ok | {error, term()}.
-spec get_counter_vec(Name :: metric_name(), LabelValues :: list()) -> float() | {error, term()}.
-spec get_gauge_vec(Name :: metric_name(), LabelValues :: list()) -> float() | {error, term()}.
-spec get_histogram_vec(Name :: metric_name(), LabelValues :: list()) -> map() | {error, term()}.
-spec inc_counter(Counter :: metric()) -> Result :: ok | {error, not_found}.
-spec inc_counter_vec(Name :: metric_name(), LabelValues :: list()) -> ok | {error, term()}.
-spec inc_counter_vec(Name :: metric_name(), LabelValues :: list(), Value :: number()) -> ok | {error, term()}.
-spec inc_gauge(Gauge :: metric()) -> Result :: ok | {error, not_found}.
-spec inc_gauge_vec(Name :: metric_name(), LabelValues :: list()) -> ok | {error, term()}.
-spec inc_gauge_vec(Name :: metric_name(), LabelValues :: list(), Value :: number()) -> ok | {error, term()}.
-spec labels(Name :: metric_name(), LabelValues :: list()) -> metric() | {error, term()}.
-spec new_counter(Name :: metric_name(), Help :: help()) -> Counter :: metric().
-spec new_counter_vec(Name :: metric_name(), Help :: help(), Labels :: labels()) -> ok.
-spec new_gauge(Name :: metric_name(), Help :: help()) -> Gauge :: metric().
-spec new_gauge_vec(Name :: metric_name(), Help :: help(), Labels :: labels()) -> ok.
-spec new_histogram(Name :: metric_name(), Help :: help()) -> Hist :: metric().
-spec new_histogram(Name :: metric_name(), Help :: help(), Buckets :: list()) -> Hist :: metric().
-spec new_histogram_vec(Name :: metric_name(), Help :: help(), Labels :: labels()) -> ok.
-spec new_histogram_vec(Name :: metric_name(), Help :: help(), Labels :: labels(), Buckets :: list()) -> ok.
-spec new_vector(Labels :: labels(), MetricType :: metric_type(), Name :: metric_name(), Help :: help()) -> Vector :: metric().
-spec new_vector(Labels :: labels(), MetricType :: metric_type(), Name :: metric_name(), Help :: help(), Buckets :: list()) -> Vector :: metric().
-spec observe_histogram_vec(Name :: metric_name(), LabelValues :: list(), Value :: number()) -> ok | {error, term()}.
-spec remove_label(Vector :: metric(), Label :: label_value()) -> Result :: term().
-spec set_gauge_to_current_time(Gauge :: metric()) -> Result :: ok | {error, not_found}.
-spec set_gauge_vec(Name :: metric_name(), LabelValues :: list(), Value :: number()) -> ok | {error, term()}.
-spec with_label(Vector :: metric(), Label :: label_value(), Fun :: mfa()) -> Result :: term().
-spec with_label(Vector :: metric(), Label :: label_value(), Fun :: mfa(), Val :: number()) -> Result :: term().