defmodule Membrane.RTP.Metrics do
@moduledoc """
Defines list of metrics, that can be aggregated based on events from membrane_rtp_plugin.
"""
alias Telemetry.Metrics
@doc """
Returns list of metrics, that can be aggregated based on events from membrane_rtp_plugin.
"""
@spec metrics() :: [Metrics.t()]
def metrics() do
[
Metrics.counter(
"inbound-rtp.packets",
event_name: [Membrane.RTP, :packet, :arrival]
),
Metrics.sum(
"inbound-rtp.bytes_received",
event_name: [Membrane.RTP, :packet, :arrival],
measurement: :bytes
),
Metrics.last_value(
"inbound-rtp.encoding",
event_name: [Membrane.RTP, :inbound_track, :new],
measurement: :encoding
),
Metrics.last_value(
"inbound-rtp.ssrc",
event_name: [Membrane.RTP, :inbound_track, :new],
measurement: :ssrc
),
Metrics.counter(
"inbound-rtp.markers_received",
event_name: [Membrane.RTP, :rtp, :marker_received]
),
Metrics.counter(
"outbound-rtp.markers_sent",
event_name: [Membrane.RTP, :rtp, :marker_sent]
),
Metrics.counter(
"rtcp.total_packets_received",
event_name: [Membrane.RTP, :rtcp, :arrival]
),
Metrics.counter(
"rtcp.total_packets_sent",
event_name: [Membrane.RTP, :rtcp, :sent]
),
Metrics.counter(
"rtcp.nack_sent",
event_name: [Membrane.RTP, :rtcp, :nack, :sent]
),
Metrics.counter(
"rtcp.fir_sent",
event_name: [Membrane.RTP, :rtcp, :fir, :sent]
),
Metrics.counter(
"rtcp.sender_reports_sent",
event_name: [Membrane.RTP, :rtcp, :sender_report, :sent]
),
Metrics.counter(
"rtcp.receiver_reports_sent",
event_name: [Membrane.RTP, :rtcp, :receiver_report, :sent]
),
Metrics.counter(
"rtcp.nack_received",
event_name: [Membrane.RTP, :rtcp, :nack, :arrival]
),
Metrics.counter(
"rtcp.fir_received",
event_name: [Membrane.RTP, :rtcp, :fir, :arrival]
),
Metrics.counter(
"rtcp.pli_received",
event_name: [Membrane.RTP, :rtcp, :pli, :arrival]
),
Metrics.counter(
"rtcp.sender_reports_received",
event_name: [Membrane.RTP, :rtcp, :sender_report, :arrival]
),
Metrics.counter(
"rtcp.receiver_reports_received",
event_name: [Membrane.RTP, :rtcp, :receiver_report, :arrival]
),
Metrics.sum(
"outbound-rtp.rtx_sent",
event_name: [Membrane.RTP, :rtx, :sent],
measurement: :amount
),
Metrics.counter(
"outbound-rtp.packets",
event_name: [Membrane.RTP, :packet, :sent]
),
Metrics.counter(
"outbound-rtp.bytes",
event_name: [Membrane.RTP, :packet, :sent],
measurement: :bytes
)
]
end
end