Ready-made Telemetry.Metrics definitions for every ExDataSketch
telemetry event.
Pass all/1's result straight to a Telemetry.Metrics reporter (the
Telemetry.Metrics.ConsoleReporter built into the :telemetry_metrics
package, TelemetryMetricsPrometheus, TelemetryMetricsStatsd, or
Phoenix LiveDashboard's own metrics page) instead of hand-writing a
metric per event.
Usage
# In a Phoenix application's telemetry.ex:
def metrics do
ExDataSketch.Telemetry.Metrics.all() ++ [
# ... your application's own metrics
]
endSee ExDataSketch.Telemetry's moduledoc for the full event/measurement/
metadata table this module's metric list is derived from.
Coverage
Every event ExDataSketch.Telemetry.all_event_names/0 returns has at
least one metric here: a summary for each numeric measurement it
carries, or a counter (an event-occurrence count) when it carries
none. [:ex_data_sketch, :stream, :reduce] is the only event with no
measurements at all, so it is the only event that gets a counter purely
for coverage; [:ex_data_sketch, :sketch, :ingest] additionally gets a
counter alongside its duration/size_bytes summaries as a call-volume
metric for the library's most common operation.
What is deliberately not a metric here
pipeline.accumulate'sbatch_sizemetadata is not a tag on any metric -- it is a per-call variable integer, and tagging by it would explode cardinality in a real reporter (StatsD, Prometheus). Build a custom metric withTelemetry.Metrics.summary/2directly if you need it.window.roll'soldest_age_msis metadata describing the dropped slot's age, not a measurement in the:telemetry.execute/3measurements map, so noTelemetry.Metricsdefinition can read it.persistence.deletehas nosketch_typetag: the sketch struct is already discarded by the time that event fires (seeExDataSketch.Telemetry's moduledoc).
Summary
Functions
Returns a Telemetry.Metrics definition for every event
ExDataSketch.Telemetry.all_event_names/0 returns.
Types
Functions
@spec all(opts()) :: [Telemetry.Metrics.t()]
Returns a Telemetry.Metrics definition for every event
ExDataSketch.Telemetry.all_event_names/0 returns.
Options
:prefix-- the dot-separated namespace prepended to every metric name (default:"ex_data_sketch"). Useful when running more than one ExDataSketch-backed component that needs distinct metric namespaces in a shared reporter. Only the metric's display name changes -- the underlying:telemetryevent listened to is always the real, unprefixed[:ex_data_sketch, ...]event name, so metrics still fire regardless of this option.
Examples
iex> metrics = ExDataSketch.Telemetry.Metrics.all()
iex> length(metrics) > 0
true
iex> Enum.all?(metrics, fn m -> match?(%Telemetry.Metrics.Summary{}, m) or match?(%Telemetry.Metrics.Counter{}, m) end)
true
iex> metrics = ExDataSketch.Telemetry.Metrics.all(prefix: "my_app")
iex> [metric | _] = metrics
iex> String.starts_with?(metric.name |> Enum.join("."), "my_app.")
true