TimelessMetrics.Schema (timeless_metrics v6.0.10)

Copy Markdown View Source

Declarative DSL for defining metric storage tiers, retention, and rollup schedules.

Example

defmodule MyApp.MetricSchema do
  use TimelessMetrics.Schema

  raw_retention {7, :days}

  tier :hourly,
    resolution: :hour,
    aggregates: [:avg, :min, :max, :count, :sum, :last],
    retention: {30, :days}

  tier :daily,
    resolution: :day,
    aggregates: [:avg, :min, :max, :count, :sum, :last],
    retention: {365, :days}

  tier :monthly,
    resolution: {30, :days},
    aggregates: [:avg, :min, :max, :count, :sum],
    retention: :forever
end

Then pass it to TimelessMetrics:

{TimelessMetrics, name: :metrics, data_dir: "/data", schema: MyApp.MetricSchema}

Summary

Functions

Compute chunk_seconds from an explicit :chunk option or default based on resolution.

Build a default schema when none is provided.

Functions

chunk_seconds(duration, resolution_seconds)

Compute chunk_seconds from an explicit :chunk option or default based on resolution.

Defaults: hourly (≤3600s) → 24h, daily (≤86400s) → 30d, coarser → 365d.

default()

Build a default schema when none is provided.

duration_to_seconds(arg1)

raw_retention(duration)

(macro)

resolution_to_seconds(arg1)

retention_interval(ms)

(macro)

rollup_interval(ms)

(macro)

tier(name, opts)

(macro)