Unified observability for Phoenix: persistent metrics, logs, and traces in LiveDashboard.
One dep, one child_spec, one router macro.
Quick Start
# 1. Supervision tree (one line)
{TimelessPhoenix, data_dir: "/var/lib/obs"}
# 2. Router (one macro)
import TimelessPhoenix.Router
timeless_phoenix_dashboard("/dashboard")Child Spec Options
:data_dir(required) — base directory; createsmetrics/,logs/,spans/subdirs:name— atom used for metrics/process naming (default::default); embedded logs and traces are node-wide singletons:metrics—Telemetry.Metricslist for reporter (default:TimelessPhoenix.DefaultMetrics.all()):timeless— extra opts forwarded to TimelessMetrics:timeless_logs— application env overrides for TimelessLogs:timeless_traces— application env overrides for TimelessTraces:reporter— extra opts for Reporter (:flush_interval,:prefix)
Summary
Functions
Returns a child spec that starts all three observability engines + reporter.
Returns additional_pages config for LiveDashboard with all three dashboard pages,
and a fourth, beam ("TimelessAcct"), when timeless_beam_acct is among the
application's dependencies: its recordings of the processes of a node.
Verify the 2.0 libSQL engines on a live node: engine flags, extension
handshake, legacy-store conversion status, and data presence for all
three signals. Prints a report unless quiet: true; returns {verdict, report} with
verdict :ok | :warn | :error.
Callback for LiveDashboard's metrics_history option.
Functions
Returns a child spec that starts all three observability engines + reporter.
Returns additional_pages config for LiveDashboard with all three dashboard pages,
and a fourth, beam ("TimelessAcct"), when timeless_beam_acct is among the
application's dependencies: its recordings of the processes of a node.
Options
:name— instance name (default::default):download_path— path to DownloadPlug (default:"/timeless/downloads"):beam_acct— whether to include thetimeless_beam_acctpage (default: whether it is available)
Verify the 2.0 libSQL engines on a live node: engine flags, extension
handshake, legacy-store conversion status, and data presence for all
three signals. Prints a report unless quiet: true; returns {verdict, report} with
verdict :ok | :warn | :error.
TimelessPhoenix.doctor()
TimelessPhoenix.doctor(:default, quiet: true)
Callback for LiveDashboard's metrics_history option.
Delegates to TimelessMetricsDashboard.metrics_history/3 using the Timeless store
name for this instance.
Router Configuration
live_dashboard "/dashboard",
metrics: MyApp.Telemetry,
metrics_history: {TimelessPhoenix, :metrics_history, []}Or with a named instance:
metrics_history: {TimelessPhoenix, :metrics_history, [:my_instance]}