Current section

Files

Jump to
membrane_core lib membrane telemetry.ex
Raw

lib/membrane/telemetry.ex

defmodule Membrane.Telemetry do
@moduledoc """
Defines basic telemetry event types used by Membrane's Core.
Membrane uses [Telemetry Package](https://hex.pm/packages/telemetry) for instrumentation and does not store or save any measurements by itself.
It is user's responsibility to use some sort of metrics reporter
that will be attached to `:telemetry` package to consume and process generated measurements.
## Instrumentation
`Membrane.Telemetry` publishes functions that return described below event names.
The following events are published by Membrane's Core with following measurement types and metadata:
* `[:membrane, :input_buffer, :size]` - used by `Membrane.Core.InputBuffer` to report current buffer's size inside functions `Membrane.Core.InputBuffer.store/3` and `Membrane.Core.InputBuffer.take_and_demand/4`.
* Measurement: `t:input_buffer_size_event_value_t/0`
* Metadata: `%{}`
* `[:membrane, :link, :new]` - used by `Membrane.Core.Parent.ChildLifeController.LinkHandler` to report new link connection being initialized in pipeline.
* Measurement: `t:new_link_event_value_t/0`
* Metadata: `%{}`
"""
@type event_name_t :: [atom(), ...]
@typedoc """
* element_path - element's process path with pad's name that input buffer is attached to
* method - input buffer's function call name
* value - current buffer's size
"""
@type input_buffer_size_event_value_t :: %{
element_path: String.t(),
method: String.t(),
value: integer()
}
@spec input_buffer_size_event_name() :: event_name_t()
def input_buffer_size_event_name, do: [:membrane, :input_buffer, :size]
@typedoc """
* parent_path - process path of link's parent
* from - from element name
* to - to element name
* pad_from - from's pad name
* pad_to - to's pad name
"""
@type new_link_event_value_t :: %{
parent_path: String.t(),
from: String.t(),
to: String.t(),
pad_from: String.t(),
pad_to: String.t()
}
@spec new_link_event_name() :: event_name_t()
def new_link_event_name, do: [:membrane, :link, :new]
end