View Source TelemetryUI (telemetry_ui v4.0.1)

Main entry point to start all the processes as part of your application.

Usage

use Application

def start(_type, _args) do
  children = [
    Shopcast.Repo,
    MyAppWeb.Endpoint,
    {TelemetryUI, my_config()}
  ]

The reporter, write buffer and pruner processes will be part of your supervision tree, ensuring that everything runs smoothly.

The config is a data structure representing all settings used by TelemetryUI.

Config example

  [
    metrics: [
      {"System", [last_value("vm.memory.total", unit: {:byte, :megabyte})]}
    ],
    theme: %{title: "Metrics"},
    backend: 
      %TelemetryUI.Backend.EctoPostgres{
        repo: MuyApp.Repo,
        pruner_threshold: [months: -1],
        pruner_interval_ms: 3_600_000,
        max_buffer_size: 1_000,
        flush_interval_ms: 10_000
      }
  ]

This config will show a basic "last value" chart for the memory usage reported by the VM. The title of the page will be "Metrics" and the backend used to store and query metrics will be PostgreSQL. See TelemetryUI.Config for a list of all options.

Metrics list

Every kind of metrics exposed by TelemetryMetrics is supported by TelemetryUI:

  • last_value
  • summary
  • sum
  • counter
  • distribution

TelemetryUI also exposes its own set of metrics:

  • average
  • average_over_time
  • count_over_time
  • median
  • median_over_time

The Web

Finally, when the configuration is done and we actually want to see our metrics, we need to add the TelemetryUI.Web module in our router:

Phoenix

scope "/" do
  pipe_through([:browser])
  get("/metrics", TelemetryUI.Web, [], [assigns: %{telemetry_ui_allowed: true}])
end

The metrics page is protected by default. It needs to have the telemetry_ui_allowed assign to true to render. We can imagine having a :admin_protected plug that ensure a user is an admin and also assign telemetry_ui_allowed to true.

scope "/" do
  pipe_through([:browser, :admin_protected])
  get("/metrics", TelemetryUI.Web, [])
end

That’s it! The /metrics page will show the metrics as they are recorded. Checkout the Guides to dive into more complex configuration and awesome features :)

Summary

Functions

Returns a specification to start this module under a supervisor.

See Supervisor.

Link to this function

insert_metric_data(name, event)

View Source
Link to this function

metric_data(name, metric, filters)

View Source
Link to this function

page_by_title(name, title)

View Source
Link to this function

valid_share_key?(share_key)

View Source
Link to this function

writer_buffer_name(name)

View Source