View Source Trifle.Stats (Trifle.Stats v2.5.0)

Simple timeline analytics for tracking custom metrics.

Trifle.Stats allows you to track time-series data and status information with various storage backends.

Configuration

You can configure Trifle.Stats globally:

# In your config/config.exs or application start
driver = Trifle.Stats.Driver.Process.new()
Trifle.Stats.configure(
  driver: driver,
  time_zone: "Europe/London",
  track_granularities: [:hour, :day, :week],
  beginning_of_week: :monday
)

# Then use without passing config to each call
Trifle.Stats.track("page_views", DateTime.utc_now(), %{count: 1})

Or pass configuration explicitly to each function call:

config = Trifle.Stats.Configuration.configure(driver)
Trifle.Stats.track("page_views", DateTime.utc_now(), %{count: 1}, config)

Summary

Functions

Assert function to run set stats.

Beam function to send status ping.

Configure Trifle.Stats globally. This is equivalent to calling Trifle.Stats.Configuration.configure_global/1.

Scan function to retrieve latest status.

Series function to create a Series wrapper from values data.

Track function to run icremental stats.

Functions

Assert function to run set stats.

Examples

iex> Trifle.Stats.assert("test", DateTime.utc_now(), %{duration: 103, count: 1})
{:ok, []}
Link to this function

assert(key, at, values, opts)

View Source
Link to this function

assert(key, at, values, config, opts)

View Source
Link to this function

beam(key, at, values, config \\ nil)

View Source

Beam function to send status ping.

Examples

iex> Trifle.Stats.beam("test", DateTime.utc_now(), %{count: 5})
{:ok, []}

Configure Trifle.Stats globally. This is equivalent to calling Trifle.Stats.Configuration.configure_global/1.

Examples

driver = Trifle.Stats.Driver.Process.new()
Trifle.Stats.configure(
  driver: driver,
  time_zone: "UTC",
  track_granularities: [:hour, :day, :month]
)
Link to this function

scan(key, config \\ nil)

View Source

Scan function to retrieve latest status.

Examples

iex> Trifle.Stats.scan("test")
{:ok, %{}}

Series function to create a Series wrapper from values data.

Examples

iex> series_data = %{values: []}
iex> series = Trifle.Stats.series(series_data)
%Trifle.Stats.Series{series: %{values: []}}

Track function to run icremental stats.

Examples

iex> Trifle.Stats.track("test", DateTime.utc_now(), %{duration: 103, count: 1})
{:ok, []}
Link to this function

track(key, at, values, opts)

View Source
Link to this function

track(key, at, values, config, opts)

View Source
Link to this function

values(key, from, to, granularity, config \\ nil, opts \\ [])

View Source

Values function to retrieve stats.

Examples

iex> Trifle.Stats.values("test", DateTime.utc_now(), DateTime.utc_now(), :day)
%{at: [...], values: [...]}

# Skip empty data points
iex> Trifle.Stats.values("test", from, to, :day, config, skip_blanks: true)
%{at: [...], values: [...]}  # Only non-empty entries