From 87543f91dda0dfd2aba0538e8f2ba0296f555b72 Mon Sep 17 00:00:00 2001 From: Alessandro Ros Date: Fri, 24 Apr 2026 23:20:49 +0200 Subject: [PATCH] metrics: add labels to the output (#5687) group metrics under visible, distinct labels. --- internal/core/metrics_test.go | 287 ++------- internal/metrics/metrics.go | 162 +++-- internal/metrics/metrics_test.go | 1018 ++++++++++++++++-------------- 3 files changed, 754 insertions(+), 713 deletions(-) diff --git a/internal/core/metrics_test.go b/internal/core/metrics_test.go index c3e6ae34..ee15af82 100644 --- a/internal/core/metrics_test.go +++ b/internal/core/metrics_test.go @@ -75,22 +75,35 @@ func TestMetrics(t *testing.T) { t.Run("initial", func(t *testing.T) { bo := httpPullFile(t, hc, "http://localhost:9998/metrics") - require.Equal(t, `paths 0 + require.Equal(t, `# Paths +paths 0 paths_inbound_bytes 0 paths_outbound_bytes 0 paths_inbound_frames_in_error 0 + +# Paths (deprecated) paths_bytes_received 0 paths_bytes_sent 0 paths_readers 0 + +# HLS muxers hls_muxers 0 hls_muxers_outbound_bytes 0 hls_muxers_outbound_frames_discarded 0 + +# HLS muxers (deprecated) hls_muxers_bytes_sent 0 + +# RTSP connections rtsp_conns 0 rtsp_conns_inbound_bytes 0 rtsp_conns_outbound_bytes 0 + +# RTSP connections (deprecated) rtsp_conns_bytes_received 0 rtsp_conns_bytes_sent 0 + +# RTSP sessions rtsp_sessions 0 rtsp_sessions_inbound_bytes 0 rtsp_sessions_inbound_rtp_packets 0 @@ -104,6 +117,8 @@ rtsp_sessions_outbound_rtp_packets 0 rtsp_sessions_outbound_rtp_packets_reported_lost 0 rtsp_sessions_outbound_rtp_packets_discarded 0 rtsp_sessions_outbound_rtcp_packets 0 + +# RTSP sessions (deprecated) rtsp_sessions_bytes_received 0 rtsp_sessions_bytes_sent 0 rtsp_sessions_rtp_packets_received 0 @@ -114,11 +129,17 @@ rtsp_sessions_rtp_packets_jitter 0 rtsp_sessions_rtcp_packets_received 0 rtsp_sessions_rtcp_packets_sent 0 rtsp_sessions_rtcp_packets_in_error 0 + +# RTSPS connections rtsps_conns 0 rtsps_conns_inbound_bytes 0 rtsps_conns_outbound_bytes 0 + +# RTSPS connections (deprecated) rtsps_conns_bytes_received 0 rtsps_conns_bytes_sent 0 + +# RTSPS sessions rtsps_sessions 0 rtsps_sessions_inbound_bytes 0 rtsps_sessions_inbound_rtp_packets 0 @@ -132,6 +153,8 @@ rtsps_sessions_outbound_rtp_packets 0 rtsps_sessions_outbound_rtp_packets_reported_lost 0 rtsps_sessions_outbound_rtp_packets_discarded 0 rtsps_sessions_outbound_rtcp_packets 0 + +# RTSPS sessions (deprecated) rtsps_sessions_bytes_received 0 rtsps_sessions_bytes_sent 0 rtsps_sessions_rtp_packets_received 0 @@ -142,18 +165,28 @@ rtsps_sessions_rtp_packets_jitter 0 rtsps_sessions_rtcp_packets_received 0 rtsps_sessions_rtcp_packets_sent 0 rtsps_sessions_rtcp_packets_in_error 0 + +# RTMP connections rtmp_conns 0 rtmp_conns_inbound_bytes 0 rtmp_conns_outbound_bytes 0 rtmp_conns_outbound_frames_discarded 0 + +# RTMP connections (deprecated) rtmp_conns_bytes_received 0 rtmp_conns_bytes_sent 0 + +# RTMPS connections rtmps_conns 0 rtmps_conns_inbound_bytes 0 rtmps_conns_outbound_bytes 0 rtmps_conns_outbound_frames_discarded 0 + +# RTMPS connections (deprecated) rtmps_conns_bytes_received 0 rtmps_conns_bytes_sent 0 + +# SRT connections srt_conns 0 srt_conns_packets_sent 0 srt_conns_packets_received 0 @@ -209,6 +242,8 @@ srt_conns_packets_received_avg_belated_time 0 srt_conns_packets_send_loss_rate 0 srt_conns_packets_received_loss_rate 0 srt_conns_outbound_frames_discarded 0 + +# WebRTC sessions webrtc_sessions 0 webrtc_sessions_inbound_bytes 0 webrtc_sessions_inbound_rtp_packets 0 @@ -219,6 +254,8 @@ webrtc_sessions_outbound_bytes 0 webrtc_sessions_outbound_rtp_packets 0 webrtc_sessions_outbound_rtcp_packets 0 webrtc_sessions_outbound_frames_discarded 0 + +# WebRTC sessions (deprecated) webrtc_sessions_bytes_received 0 webrtc_sessions_bytes_sent 0 webrtc_sessions_rtp_packets_received 0 @@ -227,6 +264,7 @@ webrtc_sessions_rtp_packets_lost 0 webrtc_sessions_rtp_packets_jitter 0 webrtc_sessions_rtcp_packets_received 0 webrtc_sessions_rtcp_packets_sent 0 + `, string(bo)) }) @@ -408,220 +446,31 @@ webrtc_sessions_rtcp_packets_sent 0 bo := httpPullFile(t, hc, "http://localhost:9998/metrics") - require.Regexp(t, - `^paths\{name=".*?",state="ready"\} 1`+"\n"+ - `paths_inbound_bytes\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_outbound_bytes\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_inbound_frames_in_error\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_bytes_received\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_bytes_sent\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_readers\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths\{name=".*?",state="ready"\} 1`+"\n"+ - `paths_inbound_bytes\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_outbound_bytes\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_inbound_frames_in_error\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_bytes_received\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_bytes_sent\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_readers\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths\{name=".*?",state="ready"\} 1`+"\n"+ - `paths_inbound_bytes\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_outbound_bytes\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_inbound_frames_in_error\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_bytes_received\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_bytes_sent\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_readers\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths\{name=".*?",state="ready"\} 1`+"\n"+ - `paths_inbound_bytes\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_outbound_bytes\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_inbound_frames_in_error\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_bytes_received\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_bytes_sent\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_readers\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths\{name=".*?",state="ready"\} 1`+"\n"+ - `paths_inbound_bytes\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_outbound_bytes\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_inbound_frames_in_error\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_bytes_received\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_bytes_sent\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_readers\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths\{name=".*?",state="ready"\} 1`+"\n"+ - `paths_inbound_bytes\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_outbound_bytes\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_inbound_frames_in_error\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_bytes_received\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_bytes_sent\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `paths_readers\{name=".*?",state="ready"\} [0-9]+`+"\n"+ - `hls_muxers\{name=".*?"\} 1`+"\n"+ - `hls_muxers_outbound_bytes\{name=".*?"\} 0`+"\n"+ - `hls_muxers_outbound_frames_discarded\{name=".*?"\} 0`+"\n"+ - `hls_muxers_bytes_sent\{name=".*?"\} 0`+"\n"+ - `hls_muxers\{name=".*?"\} 1`+"\n"+ - `hls_muxers_outbound_bytes\{name=".*?"\} 0`+"\n"+ - `hls_muxers_outbound_frames_discarded\{name=".*?"\} 0`+"\n"+ - `hls_muxers_bytes_sent\{name=".*?"\} 0`+"\n"+ - `hls_muxers\{name=".*?"\} 1`+"\n"+ - `hls_muxers_outbound_bytes\{name=".*?"\} 0`+"\n"+ - `hls_muxers_outbound_frames_discarded\{name=".*?"\} 0`+"\n"+ - `hls_muxers_bytes_sent\{name=".*?"\} 0`+"\n"+ - `hls_muxers\{name=".*?"\} 1`+"\n"+ - `hls_muxers_outbound_bytes\{name=".*?"\} 0`+"\n"+ - `hls_muxers_outbound_frames_discarded\{name=".*?"\} 0`+"\n"+ - `hls_muxers_bytes_sent\{name=".*?"\} 0`+"\n"+ - `hls_muxers\{name=".*?"\} 1`+"\n"+ - `hls_muxers_outbound_bytes\{name=".*?"\} 0`+"\n"+ - `hls_muxers_outbound_frames_discarded\{name=".*?"\} 0`+"\n"+ - `hls_muxers_bytes_sent\{name=".*?"\} 0`+"\n"+ - `hls_muxers\{name=".*?"\} 1`+"\n"+ - `hls_muxers_outbound_bytes\{name=".*?"\} 0`+"\n"+ - `hls_muxers_outbound_frames_discarded\{name=".*?"\} 0`+"\n"+ - `hls_muxers_bytes_sent\{name=".*?"\} 0`+"\n"+ - `rtsp_conns\{id=".*?"\} 1`+"\n"+ - `rtsp_conns_inbound_bytes\{id=".*?"\} [0-9]+`+"\n"+ - `rtsp_conns_outbound_bytes\{id=".*?"\} [0-9]+`+"\n"+ - `rtsp_conns_bytes_received\{id=".*?"\} [0-9]+`+"\n"+ - `rtsp_conns_bytes_sent\{id=".*?"\} [0-9]+`+"\n"+ - `rtsp_sessions\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} 1`+"\n"+ - `rtsp_sessions_inbound_bytes\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsp_sessions_inbound_rtp_packets\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsp_sessions_inbound_rtp_packets_lost\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsp_sessions_inbound_rtp_packets_in_error\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsp_sessions_inbound_rtp_packets_jitter\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsp_sessions_inbound_rtcp_packets\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsp_sessions_inbound_rtcp_packets_in_error\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsp_sessions_outbound_bytes\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsp_sessions_outbound_rtp_packets\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsp_sessions_outbound_rtp_packets_reported_lost\{id=".*?",path=".*?",`+ - `remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsp_sessions_outbound_rtp_packets_discarded\{id=".*?",path=".*?",`+ - `remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsp_sessions_outbound_rtcp_packets\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsp_sessions_bytes_received\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} 0`+"\n"+ - `rtsp_sessions_bytes_sent\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsp_sessions_rtp_packets_received\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsp_sessions_rtp_packets_sent\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsp_sessions_rtp_packets_lost\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsp_sessions_rtp_packets_in_error\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsp_sessions_rtp_packets_jitter\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsp_sessions_rtcp_packets_received\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsp_sessions_rtcp_packets_sent\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsp_sessions_rtcp_packets_in_error\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsps_conns\{id=".*?"\} 1`+"\n"+ - `rtsps_conns_inbound_bytes\{id=".*?"\} [0-9]+`+"\n"+ - `rtsps_conns_outbound_bytes\{id=".*?"\} [0-9]+`+"\n"+ - `rtsps_conns_bytes_received\{id=".*?"\} [0-9]+`+"\n"+ - `rtsps_conns_bytes_sent\{id=".*?"\} [0-9]+`+"\n"+ - `rtsps_sessions\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} 1`+"\n"+ - `rtsps_sessions_inbound_bytes\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsps_sessions_inbound_rtp_packets\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsps_sessions_inbound_rtp_packets_lost\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsps_sessions_inbound_rtp_packets_in_error\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsps_sessions_inbound_rtp_packets_jitter\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsps_sessions_inbound_rtcp_packets\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsps_sessions_inbound_rtcp_packets_in_error\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsps_sessions_outbound_bytes\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsps_sessions_outbound_rtp_packets\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsps_sessions_outbound_rtp_packets_reported_lost\{id=".*?",path=".*?",`+ - `remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsps_sessions_outbound_rtp_packets_discarded\{id=".*?",path=".*?",`+ - `remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsps_sessions_outbound_rtcp_packets\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsps_sessions_bytes_received\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} 0`+"\n"+ - `rtsps_sessions_bytes_sent\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsps_sessions_rtp_packets_received\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsps_sessions_rtp_packets_sent\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsps_sessions_rtp_packets_lost\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsps_sessions_rtp_packets_in_error\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsps_sessions_rtp_packets_jitter\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsps_sessions_rtcp_packets_received\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsps_sessions_rtcp_packets_sent\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtsps_sessions_rtcp_packets_in_error\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtmp_conns\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} 1`+"\n"+ - `rtmp_conns_inbound_bytes\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtmp_conns_outbound_bytes\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtmp_conns_outbound_frames_discarded\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtmp_conns_bytes_received\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtmp_conns_bytes_sent\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtmps_conns\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} 1`+"\n"+ - `rtmps_conns_inbound_bytes\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtmps_conns_outbound_bytes\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtmps_conns_outbound_frames_discarded\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtmps_conns_bytes_received\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `rtmps_conns_bytes_sent\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} 1`+"\n"+ - `srt_conns_packets_sent\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_received\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_sent_unique\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_received_unique\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} 1`+"\n"+ - `srt_conns_packets_send_loss\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_received_loss\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_retrans\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_received_retrans\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_sent_ack\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_received_ack\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_sent_nak\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_received_nak\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_sent_km\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_received_km\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_us_snd_duration\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_received_belated\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_send_drop\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_received_drop\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_received_undecrypt\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_bytes_sent\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} 0`+"\n"+ - `srt_conns_bytes_received\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_bytes_sent_unique\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_bytes_received_unique\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_bytes_received_loss\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_bytes_retrans\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_bytes_received_retrans\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_bytes_received_belated\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_bytes_send_drop\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_bytes_received_drop\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_bytes_received_undecrypt\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_us_packets_send_period\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} \d+\.\d+`+"\n"+ - `srt_conns_packets_flow_window\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_flight_size\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_ms_rtt\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} \d+\.\d+`+"\n"+ - `srt_conns_mbps_send_rate\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_mbps_receive_rate\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_mbps_link_capacity\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_bytes_avail_send_buf\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_bytes_avail_receive_buf\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_mbps_max_bw\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} -1`+"\n"+ - `srt_conns_bytes_mss\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_send_buf\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_bytes_send_buf\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_ms_send_buf\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_ms_send_tsb_pd_delay\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_receive_buf\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_bytes_receive_buf\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_ms_receive_buf\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_ms_receive_tsb_pd_delay\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_reorder_tolerance\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_received_avg_belated_time\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_send_loss_rate\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_packets_received_loss_rate\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `srt_conns_outbound_frames_discarded\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `webrtc_sessions\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} 1`+"\n"+ - `webrtc_sessions_inbound_bytes\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `webrtc_sessions_inbound_rtp_packets\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `webrtc_sessions_inbound_rtp_packets_lost\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `webrtc_sessions_inbound_rtp_packets_jitter\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `webrtc_sessions_inbound_rtcp_packets\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `webrtc_sessions_outbound_bytes\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `webrtc_sessions_outbound_rtp_packets\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `webrtc_sessions_outbound_rtcp_packets\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `webrtc_sessions_outbound_frames_discarded\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `webrtc_sessions_bytes_received\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `webrtc_sessions_bytes_sent\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `webrtc_sessions_rtp_packets_received\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `webrtc_sessions_rtp_packets_sent\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `webrtc_sessions_rtp_packets_lost\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `webrtc_sessions_rtp_packets_jitter\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `webrtc_sessions_rtcp_packets_received\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - `webrtc_sessions_rtcp_packets_sent\{id=".*?",path=".*?",remoteAddr=".*?",state="publish"\} [0-9]+`+"\n"+ - "$", - string(bo)) + boStr := string(bo) + require.Contains(t, boStr, "paths{name=\"rtmp_path\",state=\"ready\"} 1\n") + require.Contains(t, boStr, "paths{name=\"rtmps_path\",state=\"ready\"} 1\n") + require.Contains(t, boStr, "paths{name=\"rtsp_path\",state=\"ready\"} 1\n") + require.Contains(t, boStr, "paths{name=\"rtsps_path\",state=\"ready\"} 1\n") + require.Contains(t, boStr, "paths{name=\"srt_path\",state=\"ready\"} 1\n") + require.Contains(t, boStr, "paths{name=\"webrtc_path\",state=\"ready\"} 1\n") + require.Contains(t, boStr, "hls_muxers{name=\"rtmp_path\"} 1\n") + require.Contains(t, boStr, "hls_muxers{name=\"rtmps_path\"} 1\n") + require.Contains(t, boStr, "hls_muxers{name=\"rtsp_path\"} 1\n") + require.Contains(t, boStr, "hls_muxers{name=\"rtsps_path\"} 1\n") + require.Contains(t, boStr, "hls_muxers{name=\"srt_path\"} 1\n") + require.Contains(t, boStr, "hls_muxers{name=\"webrtc_path\"} 1\n") + require.Regexp(t, `(?m)^rtsp_conns\{id=".*?"\} 1$`, boStr) + require.Regexp(t, `(?m)^rtsp_sessions\{id=".*?",path="rtsp_path",remoteAddr=".*?",state="publish"\} 1$`, boStr) + require.Regexp(t, `(?m)^rtsps_conns\{id=".*?"\} 1$`, boStr) + require.Regexp(t, `(?m)^rtsps_sessions\{id=".*?",path="rtsps_path",remoteAddr=".*?",state="publish"\} 1$`, boStr) + require.Regexp(t, `(?m)^rtmp_conns\{id=".*?",path="rtmp_path",remoteAddr=".*?",state="publish"\} 1$`, boStr) + require.Regexp(t, `(?m)^rtmps_conns\{id=".*?",path="rtmps_path",remoteAddr=".*?",state="publish"\} 1$`, boStr) + require.Regexp(t, `(?m)^srt_conns\{id=".*?",path="srt_path",remoteAddr=".*?",state="publish"\} 1$`, boStr) + require.Regexp(t, `(?m)^srt_conns_ms_rtt\{id=".*?",path="srt_path",`+ + `remoteAddr=".*?",state="publish"\} [0-9.]+$`, boStr) + require.Regexp(t, `(?m)^webrtc_sessions\{id=".*?",path="webrtc_path",remoteAddr=".*?",state="publish"\} 1$`, boStr) + require.Regexp(t, `(?m)^webrtc_sessions_rtcp_packets_received\{id=".*?",path="webrtc_path",`+ + `remoteAddr=".*?",state="publish"\} [0-9]+$`, boStr) close(terminate) wg.Wait() @@ -640,13 +489,17 @@ webrtc_sessions_rtcp_packets_sent 0 bo := httpPullFile(t, hc, "http://localhost:9998/metrics") - require.Equal(t, "paths 0\n"+ + require.Equal(t, "# Paths\n"+ + "paths 0\n"+ "paths_inbound_bytes 0\n"+ "paths_outbound_bytes 0\n"+ "paths_inbound_frames_in_error 0\n"+ + "\n"+ + "# Paths (deprecated)\n"+ "paths_bytes_received 0\n"+ "paths_bytes_sent 0\n"+ - "paths_readers 0\n", + "paths_readers 0\n"+ + "\n", string(bo)) }) } diff --git a/internal/metrics/metrics.go b/internal/metrics/metrics.go index c781d307..62cb1b8a 100644 --- a/internal/metrics/metrics.go +++ b/internal/metrics/metrics.go @@ -239,52 +239,70 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { "name": i.Name, "state": state, }) + + out.WriteString("# Paths\n") metric(&out, "paths", ta, 1) metric(&out, "paths_inbound_bytes", ta, int64(i.InboundBytes)) metric(&out, "paths_outbound_bytes", ta, int64(i.OutboundBytes)) metric(&out, "paths_inbound_frames_in_error", ta, int64(i.InboundFramesInError)) - // deprecated + out.WriteString("\n") + + out.WriteString("# Paths (deprecated)\n") metric(&out, "paths_bytes_received", ta, int64(i.BytesReceived)) metric(&out, "paths_bytes_sent", ta, int64(i.BytesSent)) metric(&out, "paths_readers", ta, int64(len(i.Readers))) + out.WriteString("\n") } } } else if pathFilter == "" { + out.WriteString("# Paths\n") metric(&out, "paths", "", 0) metric(&out, "paths_inbound_bytes", "", 0) metric(&out, "paths_outbound_bytes", "", 0) metric(&out, "paths_inbound_frames_in_error", "", 0) - // deprecated + out.WriteString("\n") + + out.WriteString("# Paths (deprecated)\n") metric(&out, "paths_bytes_received", "", 0) metric(&out, "paths_bytes_sent", "", 0) metric(&out, "paths_readers", "", 0) + out.WriteString("\n") } } - if !interfaceIsEmpty(m.hlsServer) && - (typ == "" || typ == "hls_muxers") && - (!anyFilterActive || hlsMuxerFilter != "") { - var data *defs.APIHLSMuxerList - data, err := m.hlsServer.APIMuxersList() - if err == nil && len(data.Items) != 0 { - for _, i := range data.Items { - if hlsMuxerFilter == "" || hlsMuxerFilter == i.Path { - ta := tags(map[string]string{ - "name": i.Path, - }) - metric(&out, "hls_muxers", ta, 1) - metric(&out, "hls_muxers_outbound_bytes", ta, int64(i.OutboundBytes)) - metric(&out, "hls_muxers_outbound_frames_discarded", ta, int64(i.OutboundFramesDiscarded)) - // deprecated - metric(&out, "hls_muxers_bytes_sent", ta, int64(i.BytesSent)) + if !interfaceIsEmpty(m.hlsServer) { + if (typ == "" || typ == "hls_muxers") && (!anyFilterActive || hlsMuxerFilter != "") { + var data *defs.APIHLSMuxerList + data, err := m.hlsServer.APIMuxersList() + if err == nil && len(data.Items) != 0 { + for _, i := range data.Items { + if hlsMuxerFilter == "" || hlsMuxerFilter == i.Path { + ta := tags(map[string]string{ + "name": i.Path, + }) + + out.WriteString("# HLS muxers\n") + metric(&out, "hls_muxers", ta, 1) + metric(&out, "hls_muxers_outbound_bytes", ta, int64(i.OutboundBytes)) + metric(&out, "hls_muxers_outbound_frames_discarded", ta, int64(i.OutboundFramesDiscarded)) + out.WriteString("\n") + + out.WriteString("# HLS muxers (deprecated)\n") + metric(&out, "hls_muxers_bytes_sent", ta, int64(i.BytesSent)) + out.WriteString("\n") + } } + } else if hlsMuxerFilter == "" { + out.WriteString("# HLS muxers\n") + metric(&out, "hls_muxers", "", 0) + metric(&out, "hls_muxers_outbound_bytes", "", 0) + metric(&out, "hls_muxers_outbound_frames_discarded", "", 0) + out.WriteString("\n") + + out.WriteString("# HLS muxers (deprecated)\n") + metric(&out, "hls_muxers_bytes_sent", "", 0) + out.WriteString("\n") } - } else if hlsMuxerFilter == "" { - metric(&out, "hls_muxers", "", 0) - metric(&out, "hls_muxers_outbound_bytes", "", 0) - metric(&out, "hls_muxers_outbound_frames_discarded", "", 0) - // deprecated - metric(&out, "hls_muxers_bytes_sent", "", 0) } } @@ -298,21 +316,30 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { ta := tags(map[string]string{ "id": i.ID.String(), }) + + out.WriteString("# RTSP connections\n") metric(&out, "rtsp_conns", ta, 1) metric(&out, "rtsp_conns_inbound_bytes", ta, int64(i.InboundBytes)) metric(&out, "rtsp_conns_outbound_bytes", ta, int64(i.OutboundBytes)) - // deprecated + out.WriteString("\n") + + out.WriteString("# RTSP connections (deprecated)\n") metric(&out, "rtsp_conns_bytes_received", ta, int64(i.BytesReceived)) metric(&out, "rtsp_conns_bytes_sent", ta, int64(i.BytesSent)) + out.WriteString("\n") } } } else if rtspConnFilter == "" { + out.WriteString("# RTSP connections\n") metric(&out, "rtsp_conns", "", 0) metric(&out, "rtsp_conns_inbound_bytes", "", 0) metric(&out, "rtsp_conns_outbound_bytes", "", 0) - // deprecated + out.WriteString("\n") + + out.WriteString("# RTSP connections (deprecated)\n") metric(&out, "rtsp_conns_bytes_received", "", 0) metric(&out, "rtsp_conns_bytes_sent", "", 0) + out.WriteString("\n") } } @@ -328,6 +355,8 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { "path": i.Path, "remoteAddr": i.RemoteAddr, }) + + out.WriteString("# RTSP sessions\n") metric(&out, "rtsp_sessions", ta, 1) metric(&out, "rtsp_sessions_inbound_bytes", ta, int64(i.InboundBytes)) metric(&out, "rtsp_sessions_inbound_rtp_packets", ta, int64(i.InboundRTPPackets)) @@ -341,7 +370,9 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { metric(&out, "rtsp_sessions_outbound_rtp_packets_reported_lost", ta, int64(i.OutboundRTPPacketsReportedLost)) metric(&out, "rtsp_sessions_outbound_rtp_packets_discarded", ta, int64(i.OutboundRTPPacketsDiscarded)) metric(&out, "rtsp_sessions_outbound_rtcp_packets", ta, int64(i.OutboundRTCPPackets)) - // deprecated + out.WriteString("\n") + + out.WriteString("# RTSP sessions (deprecated)\n") metric(&out, "rtsp_sessions_bytes_received", ta, int64(i.BytesReceived)) metric(&out, "rtsp_sessions_bytes_sent", ta, int64(i.BytesSent)) metric(&out, "rtsp_sessions_rtp_packets_received", ta, int64(i.RTPPacketsReceived)) @@ -352,9 +383,11 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { metric(&out, "rtsp_sessions_rtcp_packets_received", ta, int64(i.RTCPPacketsReceived)) metric(&out, "rtsp_sessions_rtcp_packets_sent", ta, int64(i.RTCPPacketsSent)) metric(&out, "rtsp_sessions_rtcp_packets_in_error", ta, int64(i.RTCPPacketsInError)) + out.WriteString("\n") } } } else if rtspSessionFilter == "" { + out.WriteString("# RTSP sessions\n") metric(&out, "rtsp_sessions", "", 0) metric(&out, "rtsp_sessions_inbound_bytes", "", 0) metric(&out, "rtsp_sessions_inbound_rtp_packets", "", 0) @@ -368,7 +401,9 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { metric(&out, "rtsp_sessions_outbound_rtp_packets_reported_lost", "", 0) metric(&out, "rtsp_sessions_outbound_rtp_packets_discarded", "", 0) metric(&out, "rtsp_sessions_outbound_rtcp_packets", "", 0) - // deprecated + out.WriteString("\n") + + out.WriteString("# RTSP sessions (deprecated)\n") metric(&out, "rtsp_sessions_bytes_received", "", 0) metric(&out, "rtsp_sessions_bytes_sent", "", 0) metric(&out, "rtsp_sessions_rtp_packets_received", "", 0) @@ -379,6 +414,7 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { metric(&out, "rtsp_sessions_rtcp_packets_received", "", 0) metric(&out, "rtsp_sessions_rtcp_packets_sent", "", 0) metric(&out, "rtsp_sessions_rtcp_packets_in_error", "", 0) + out.WriteString("\n") } } } @@ -393,21 +429,30 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { ta := tags(map[string]string{ "id": i.ID.String(), }) + + out.WriteString("# RTSPS connections\n") metric(&out, "rtsps_conns", ta, 1) metric(&out, "rtsps_conns_inbound_bytes", ta, int64(i.InboundBytes)) metric(&out, "rtsps_conns_outbound_bytes", ta, int64(i.OutboundBytes)) - // deprecated + out.WriteString("\n") + + out.WriteString("# RTSPS connections (deprecated)\n") metric(&out, "rtsps_conns_bytes_received", ta, int64(i.BytesReceived)) metric(&out, "rtsps_conns_bytes_sent", ta, int64(i.BytesSent)) + out.WriteString("\n") } } } else if rtspsConnFilter == "" { + out.WriteString("# RTSPS connections\n") metric(&out, "rtsps_conns", "", 0) metric(&out, "rtsps_conns_inbound_bytes", "", 0) metric(&out, "rtsps_conns_outbound_bytes", "", 0) - // deprecated + out.WriteString("\n") + + out.WriteString("# RTSPS connections (deprecated)\n") metric(&out, "rtsps_conns_bytes_received", "", 0) metric(&out, "rtsps_conns_bytes_sent", "", 0) + out.WriteString("\n") } } @@ -423,6 +468,8 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { "path": i.Path, "remoteAddr": i.RemoteAddr, }) + + out.WriteString("# RTSPS sessions\n") metric(&out, "rtsps_sessions", ta, 1) metric(&out, "rtsps_sessions_inbound_bytes", ta, int64(i.InboundBytes)) metric(&out, "rtsps_sessions_inbound_rtp_packets", ta, int64(i.InboundRTPPackets)) @@ -436,7 +483,9 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { metric(&out, "rtsps_sessions_outbound_rtp_packets_reported_lost", ta, int64(i.OutboundRTPPacketsReportedLost)) metric(&out, "rtsps_sessions_outbound_rtp_packets_discarded", ta, int64(i.OutboundRTPPacketsDiscarded)) metric(&out, "rtsps_sessions_outbound_rtcp_packets", ta, int64(i.OutboundRTCPPackets)) - // deprecated + out.WriteString("\n") + + out.WriteString("# RTSPS sessions (deprecated)\n") metric(&out, "rtsps_sessions_bytes_received", ta, int64(i.BytesReceived)) metric(&out, "rtsps_sessions_bytes_sent", ta, int64(i.BytesSent)) metric(&out, "rtsps_sessions_rtp_packets_received", ta, int64(i.RTPPacketsReceived)) @@ -447,9 +496,11 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { metric(&out, "rtsps_sessions_rtcp_packets_received", ta, int64(i.RTCPPacketsReceived)) metric(&out, "rtsps_sessions_rtcp_packets_sent", ta, int64(i.RTCPPacketsSent)) metric(&out, "rtsps_sessions_rtcp_packets_in_error", ta, int64(i.RTCPPacketsInError)) + out.WriteString("\n") } } } else if rtspsSessionFilter == "" { + out.WriteString("# RTSPS sessions\n") metric(&out, "rtsps_sessions", "", 0) metric(&out, "rtsps_sessions_inbound_bytes", "", 0) metric(&out, "rtsps_sessions_inbound_rtp_packets", "", 0) @@ -463,7 +514,9 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { metric(&out, "rtsps_sessions_outbound_rtp_packets_reported_lost", "", 0) metric(&out, "rtsps_sessions_outbound_rtp_packets_discarded", "", 0) metric(&out, "rtsps_sessions_outbound_rtcp_packets", "", 0) - // deprecated + out.WriteString("\n") + + out.WriteString("# RTSPS sessions (deprecated)\n") metric(&out, "rtsps_sessions_bytes_received", "", 0) metric(&out, "rtsps_sessions_bytes_sent", "", 0) metric(&out, "rtsps_sessions_rtp_packets_received", "", 0) @@ -474,6 +527,7 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { metric(&out, "rtsps_sessions_rtcp_packets_received", "", 0) metric(&out, "rtsps_sessions_rtcp_packets_sent", "", 0) metric(&out, "rtsps_sessions_rtcp_packets_in_error", "", 0) + out.WriteString("\n") } } } @@ -492,23 +546,32 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { "path": i.Path, "remoteAddr": i.RemoteAddr, }) + + out.WriteString("# RTMP connections\n") metric(&out, "rtmp_conns", ta, 1) metric(&out, "rtmp_conns_inbound_bytes", ta, int64(i.InboundBytes)) metric(&out, "rtmp_conns_outbound_bytes", ta, int64(i.OutboundBytes)) metric(&out, "rtmp_conns_outbound_frames_discarded", ta, int64(i.OutboundFramesDiscarded)) - // deprecated + out.WriteString("\n") + + out.WriteString("# RTMP connections (deprecated)\n") metric(&out, "rtmp_conns_bytes_received", ta, int64(i.BytesReceived)) metric(&out, "rtmp_conns_bytes_sent", ta, int64(i.BytesSent)) + out.WriteString("\n") } } } else if rtmpConnFilter == "" { + out.WriteString("# RTMP connections\n") metric(&out, "rtmp_conns", "", 0) metric(&out, "rtmp_conns_inbound_bytes", "", 0) metric(&out, "rtmp_conns_outbound_bytes", "", 0) metric(&out, "rtmp_conns_outbound_frames_discarded", "", 0) - // deprecated + out.WriteString("\n") + + out.WriteString("# RTMP connections (deprecated)\n") metric(&out, "rtmp_conns_bytes_received", "", 0) metric(&out, "rtmp_conns_bytes_sent", "", 0) + out.WriteString("\n") } } @@ -526,23 +589,32 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { "path": i.Path, "remoteAddr": i.RemoteAddr, }) + + out.WriteString("# RTMPS connections\n") metric(&out, "rtmps_conns", ta, 1) metric(&out, "rtmps_conns_inbound_bytes", ta, int64(i.InboundBytes)) metric(&out, "rtmps_conns_outbound_bytes", ta, int64(i.OutboundBytes)) metric(&out, "rtmps_conns_outbound_frames_discarded", ta, int64(i.OutboundFramesDiscarded)) - // deprecated + out.WriteString("\n") + + out.WriteString("# RTMPS connections (deprecated)\n") metric(&out, "rtmps_conns_bytes_received", ta, int64(i.BytesReceived)) metric(&out, "rtmps_conns_bytes_sent", ta, int64(i.BytesSent)) + out.WriteString("\n") } } } else if rtmpsConnFilter == "" { + out.WriteString("# RTMPS connections\n") metric(&out, "rtmps_conns", "", 0) metric(&out, "rtmps_conns_inbound_bytes", "", 0) metric(&out, "rtmps_conns_outbound_bytes", "", 0) metric(&out, "rtmps_conns_outbound_frames_discarded", "", 0) - // deprecated + out.WriteString("\n") + + out.WriteString("# RTMPS connections (deprecated)\n") metric(&out, "rtmps_conns_bytes_received", "", 0) metric(&out, "rtmps_conns_bytes_sent", "", 0) + out.WriteString("\n") } } @@ -560,6 +632,8 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { "path": i.Path, "remoteAddr": i.RemoteAddr, }) + + out.WriteString("# SRT connections\n") metric(&out, "srt_conns", ta, 1) metric(&out, "srt_conns_packets_sent", ta, int64(i.PacketsSent)) metric(&out, "srt_conns_packets_received", ta, int64(i.PacketsReceived)) @@ -615,9 +689,11 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { metricFloat(&out, "srt_conns_packets_send_loss_rate", ta, i.PacketsSendLossRate) metricFloat(&out, "srt_conns_packets_received_loss_rate", ta, i.PacketsReceivedLossRate) metric(&out, "srt_conns_outbound_frames_discarded", ta, int64(i.OutboundFramesDiscarded)) + out.WriteString("\n") } } } else if srtConnFilter == "" { + out.WriteString("# SRT connections\n") metric(&out, "srt_conns", "", 0) metric(&out, "srt_conns_packets_sent", "", 0) metric(&out, "srt_conns_packets_received", "", 0) @@ -673,6 +749,7 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { metricFloat(&out, "srt_conns_packets_send_loss_rate", "", 0) metricFloat(&out, "srt_conns_packets_received_loss_rate", "", 0) metric(&out, "srt_conns_outbound_frames_discarded", "", 0) + out.WriteString("\n") } } @@ -690,6 +767,8 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { "path": i.Path, "remoteAddr": i.RemoteAddr, }) + + out.WriteString("# WebRTC sessions\n") metric(&out, "webrtc_sessions", ta, 1) metric(&out, "webrtc_sessions_inbound_bytes", ta, int64(i.InboundBytes)) metric(&out, "webrtc_sessions_inbound_rtp_packets", ta, int64(i.InboundRTPPackets)) @@ -700,7 +779,9 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { metric(&out, "webrtc_sessions_outbound_rtp_packets", ta, int64(i.OutboundRTPPackets)) metric(&out, "webrtc_sessions_outbound_rtcp_packets", ta, int64(i.OutboundRTCPPackets)) metric(&out, "webrtc_sessions_outbound_frames_discarded", ta, int64(i.OutboundFramesDiscarded)) - // deprecated + out.WriteString("\n") + + out.WriteString("# WebRTC sessions (deprecated)\n") metric(&out, "webrtc_sessions_bytes_received", ta, int64(i.BytesReceived)) metric(&out, "webrtc_sessions_bytes_sent", ta, int64(i.BytesSent)) metric(&out, "webrtc_sessions_rtp_packets_received", ta, int64(i.RTPPacketsReceived)) @@ -709,9 +790,11 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { metricFloat(&out, "webrtc_sessions_rtp_packets_jitter", ta, i.RTPPacketsJitter) metric(&out, "webrtc_sessions_rtcp_packets_received", ta, int64(i.RTCPPacketsReceived)) metric(&out, "webrtc_sessions_rtcp_packets_sent", ta, int64(i.RTCPPacketsSent)) + out.WriteString("\n") } } } else if webrtcSessionFilter == "" { + out.WriteString("# WebRTC sessions\n") metric(&out, "webrtc_sessions", "", 0) metric(&out, "webrtc_sessions_inbound_bytes", "", 0) metric(&out, "webrtc_sessions_inbound_rtp_packets", "", 0) @@ -722,7 +805,9 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { metric(&out, "webrtc_sessions_outbound_rtp_packets", "", 0) metric(&out, "webrtc_sessions_outbound_rtcp_packets", "", 0) metric(&out, "webrtc_sessions_outbound_frames_discarded", "", 0) - // deprecated + out.WriteString("\n") + + out.WriteString("# WebRTC sessions (deprecated)\n") metric(&out, "webrtc_sessions_bytes_received", "", 0) metric(&out, "webrtc_sessions_bytes_sent", "", 0) metric(&out, "webrtc_sessions_rtp_packets_received", "", 0) @@ -731,6 +816,7 @@ func (m *Metrics) onMetrics(ctx *gin.Context) { metricFloat(&out, "webrtc_sessions_rtp_packets_jitter", "", 0) metric(&out, "webrtc_sessions_rtcp_packets_received", "", 0) metric(&out, "webrtc_sessions_rtcp_packets_sent", "", 0) + out.WriteString("\n") } } diff --git a/internal/metrics/metrics_test.go b/internal/metrics/metrics_test.go index 10635a6b..25ea899d 100644 --- a/internal/metrics/metrics_test.go +++ b/internal/metrics/metrics_test.go @@ -456,290 +456,328 @@ func TestMetrics(t *testing.T) { byts, err := io.ReadAll(res.Body) require.NoError(t, err) - require.Equal(t, ""+ //nolint:dupl - "paths{name=\"mypath\",state=\"ready\"} 1\n"+ - "paths_inbound_bytes{name=\"mypath\",state=\"ready\"} 123\n"+ - "paths_outbound_bytes{name=\"mypath\",state=\"ready\"} 456\n"+ - "paths_inbound_frames_in_error{name=\"mypath\",state=\"ready\"} 7\n"+ - "paths_bytes_received{name=\"mypath\",state=\"ready\"} 123\n"+ - "paths_bytes_sent{name=\"mypath\",state=\"ready\"} 456\n"+ - "paths_readers{name=\"mypath\",state=\"ready\"} 1\n"+ - "hls_muxers{name=\"mypath\"} 1\n"+ - "hls_muxers_outbound_bytes{name=\"mypath\"} 789\n"+ - "hls_muxers_outbound_frames_discarded{name=\"mypath\"} 12\n"+ - "hls_muxers_bytes_sent{name=\"mypath\"} 789\n"+ - "rtsp_conns{id=\"18294761-f9d1-4ea9-9a35-fe265b62eb41\"} 1\n"+ - "rtsp_conns_inbound_bytes{id=\"18294761-f9d1-4ea9-9a35-fe265b62eb41\"} 123\n"+ - "rtsp_conns_outbound_bytes{id=\"18294761-f9d1-4ea9-9a35-fe265b62eb41\"} 456\n"+ - "rtsp_conns_bytes_received{id=\"18294761-f9d1-4ea9-9a35-fe265b62eb41\"} 123\n"+ - "rtsp_conns_bytes_sent{id=\"18294761-f9d1-4ea9-9a35-fe265b62eb41\"} 456\n"+ - "rtsp_sessions{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 1\n"+ - "rtsp_sessions_inbound_bytes{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ - "rtsp_sessions_inbound_rtp_packets{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ - "rtsp_sessions_inbound_rtp_packets_lost{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ - "rtsp_sessions_inbound_rtp_packets_in_error{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ - "rtsp_sessions_inbound_rtp_packets_jitter{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ - "rtsp_sessions_inbound_rtcp_packets{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ - "rtsp_sessions_inbound_rtcp_packets_in_error{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ - "rtsp_sessions_outbound_bytes{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ - "rtsp_sessions_outbound_rtp_packets{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ - "rtsp_sessions_outbound_rtp_packets_reported_lost{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 321\n"+ - "rtsp_sessions_outbound_rtp_packets_discarded{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 111\n"+ - "rtsp_sessions_outbound_rtcp_packets{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ - "rtsp_sessions_bytes_received{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ - "rtsp_sessions_bytes_sent{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ - "rtsp_sessions_rtp_packets_received{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ - "rtsp_sessions_rtp_packets_sent{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ - "rtsp_sessions_rtp_packets_lost{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ - "rtsp_sessions_rtp_packets_in_error{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ - "rtsp_sessions_rtp_packets_jitter{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ - "rtsp_sessions_rtcp_packets_received{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ - "rtsp_sessions_rtcp_packets_sent{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ - "rtsp_sessions_rtcp_packets_in_error{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ - "rtsps_conns{id=\"18294761-f9d1-4ea9-9a35-fe265b62eb41\"} 1\n"+ - "rtsps_conns_inbound_bytes{id=\"18294761-f9d1-4ea9-9a35-fe265b62eb41\"} 123\n"+ - "rtsps_conns_outbound_bytes{id=\"18294761-f9d1-4ea9-9a35-fe265b62eb41\"} 456\n"+ - "rtsps_conns_bytes_received{id=\"18294761-f9d1-4ea9-9a35-fe265b62eb41\"} 123\n"+ - "rtsps_conns_bytes_sent{id=\"18294761-f9d1-4ea9-9a35-fe265b62eb41\"} 456\n"+ - "rtsps_sessions{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 1\n"+ - "rtsps_sessions_inbound_bytes{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ - "rtsps_sessions_inbound_rtp_packets{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ - "rtsps_sessions_inbound_rtp_packets_lost{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ - "rtsps_sessions_inbound_rtp_packets_in_error{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ - "rtsps_sessions_inbound_rtp_packets_jitter{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ - "rtsps_sessions_inbound_rtcp_packets{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ - "rtsps_sessions_inbound_rtcp_packets_in_error{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ - "rtsps_sessions_outbound_bytes{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ - "rtsps_sessions_outbound_rtp_packets{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ - "rtsps_sessions_outbound_rtp_packets_reported_lost{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 321\n"+ - "rtsps_sessions_outbound_rtp_packets_discarded{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 111\n"+ - "rtsps_sessions_outbound_rtcp_packets{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ - "rtsps_sessions_bytes_received{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ - "rtsps_sessions_bytes_sent{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ - "rtsps_sessions_rtp_packets_received{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ - "rtsps_sessions_rtp_packets_sent{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ - "rtsps_sessions_rtp_packets_lost{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ - "rtsps_sessions_rtp_packets_in_error{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ - "rtsps_sessions_rtp_packets_jitter{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ - "rtsps_sessions_rtcp_packets_received{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ - "rtsps_sessions_rtcp_packets_sent{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ - "rtsps_sessions_rtcp_packets_in_error{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ - "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ - "rtmp_conns{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 1\n"+ - "rtmp_conns_inbound_bytes{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 123\n"+ - "rtmp_conns_outbound_bytes{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 456\n"+ - "rtmp_conns_outbound_frames_discarded{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 12\n"+ - "rtmp_conns_bytes_received{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 123\n"+ - "rtmp_conns_bytes_sent{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 456\n"+ - "rtmps_conns{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 1\n"+ - "rtmps_conns_inbound_bytes{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 123\n"+ - "rtmps_conns_outbound_bytes{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 456\n"+ - "rtmps_conns_outbound_frames_discarded{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 12\n"+ - "rtmps_conns_bytes_received{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 123\n"+ - "rtmps_conns_bytes_sent{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 456\n"+ - "srt_conns{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 1\n"+ - "srt_conns_packets_sent{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 100\n"+ - "srt_conns_packets_received{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 200\n"+ - "srt_conns_packets_sent_unique{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 90\n"+ - "srt_conns_packets_received_unique{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 180\n"+ - "srt_conns_packets_send_loss{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 10\n"+ - "srt_conns_packets_received_loss{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 20\n"+ - "srt_conns_packets_retrans{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 5\n"+ - "srt_conns_packets_received_retrans{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 3\n"+ - "srt_conns_packets_sent_ack{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 50\n"+ - "srt_conns_packets_received_ack{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 40\n"+ - "srt_conns_packets_sent_nak{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 2\n"+ - "srt_conns_packets_received_nak{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 1\n"+ - "srt_conns_packets_sent_km{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 4\n"+ - "srt_conns_packets_received_km{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 3\n"+ - "srt_conns_us_snd_duration{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 1000000\n"+ - "srt_conns_packets_received_belated{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 7\n"+ - "srt_conns_packets_send_drop{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 8\n"+ - "srt_conns_packets_received_drop{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 6\n"+ - "srt_conns_packets_received_undecrypt{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 0\n"+ - "srt_conns_bytes_sent{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 12345\n"+ - "srt_conns_bytes_received{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 67890\n"+ - "srt_conns_bytes_sent_unique{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 11000\n"+ - "srt_conns_bytes_received_unique{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 60000\n"+ - "srt_conns_bytes_received_loss{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 500\n"+ - "srt_conns_bytes_retrans{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 300\n"+ - "srt_conns_bytes_received_retrans{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 200\n"+ - "srt_conns_bytes_received_belated{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 100\n"+ - "srt_conns_bytes_send_drop{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 400\n"+ - "srt_conns_bytes_received_drop{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 350\n"+ - "srt_conns_bytes_received_undecrypt{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 0\n"+ - "srt_conns_us_packets_send_period{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 10.5\n"+ - "srt_conns_packets_flow_window{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 8192\n"+ - "srt_conns_packets_flight_size{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 25\n"+ - "srt_conns_ms_rtt{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 1.5\n"+ - "srt_conns_mbps_send_rate{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 50\n"+ - "srt_conns_mbps_receive_rate{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 48\n"+ - "srt_conns_mbps_link_capacity{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 100\n"+ - "srt_conns_bytes_avail_send_buf{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 65536\n"+ - "srt_conns_bytes_avail_receive_buf{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 65536\n"+ - "srt_conns_mbps_max_bw{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 100\n"+ - "srt_conns_bytes_mss{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 1500\n"+ - "srt_conns_packets_send_buf{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 10\n"+ - "srt_conns_bytes_send_buf{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 15000\n"+ - "srt_conns_ms_send_buf{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 120\n"+ - "srt_conns_ms_send_tsb_pd_delay{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 120\n"+ - "srt_conns_packets_receive_buf{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 15\n"+ - "srt_conns_bytes_receive_buf{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 22500\n"+ - "srt_conns_ms_receive_buf{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 120\n"+ - "srt_conns_ms_receive_tsb_pd_delay{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 120\n"+ - "srt_conns_packets_reorder_tolerance{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 3\n"+ - "srt_conns_packets_received_avg_belated_time{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 50\n"+ - "srt_conns_packets_send_loss_rate{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 0.01\n"+ - "srt_conns_packets_received_loss_rate{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 0.02\n"+ - "srt_conns_outbound_frames_discarded{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ - "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 5\n"+ - "webrtc_sessions{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ - "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 1\n"+ - "webrtc_sessions_inbound_bytes{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ - "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 123\n"+ - "webrtc_sessions_inbound_rtp_packets{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ - "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 789\n"+ - "webrtc_sessions_inbound_rtp_packets_lost{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ - "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 456\n"+ - "webrtc_sessions_inbound_rtp_packets_jitter{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ - "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 789\n"+ - "webrtc_sessions_inbound_rtcp_packets{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ - "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 123\n"+ - "webrtc_sessions_outbound_bytes{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ - "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 456\n"+ - "webrtc_sessions_outbound_rtp_packets{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ - "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 123\n"+ - "webrtc_sessions_outbound_rtcp_packets{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ - "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 456\n"+ - "webrtc_sessions_outbound_frames_discarded{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ - "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 12\n"+ - "webrtc_sessions_bytes_received{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ - "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 123\n"+ - "webrtc_sessions_bytes_sent{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ - "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 456\n"+ - "webrtc_sessions_rtp_packets_received{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ - "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 789\n"+ - "webrtc_sessions_rtp_packets_sent{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ - "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 123\n"+ - "webrtc_sessions_rtp_packets_lost{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ - "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 456\n"+ - "webrtc_sessions_rtp_packets_jitter{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ - "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 789\n"+ - "webrtc_sessions_rtcp_packets_received{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ - "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 123\n"+ - "webrtc_sessions_rtcp_packets_sent{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ - "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 456\n", + require.Equal(t, + "# Paths\n"+ //nolint:dupl + "paths{name=\"mypath\",state=\"ready\"} 1\n"+ + "paths_inbound_bytes{name=\"mypath\",state=\"ready\"} 123\n"+ + "paths_outbound_bytes{name=\"mypath\",state=\"ready\"} 456\n"+ + "paths_inbound_frames_in_error{name=\"mypath\",state=\"ready\"} 7\n"+ + "\n"+ + "# Paths (deprecated)\n"+ + "paths_bytes_received{name=\"mypath\",state=\"ready\"} 123\n"+ + "paths_bytes_sent{name=\"mypath\",state=\"ready\"} 456\n"+ + "paths_readers{name=\"mypath\",state=\"ready\"} 1\n"+ + "\n"+ + "# HLS muxers\n"+ + "hls_muxers{name=\"mypath\"} 1\n"+ + "hls_muxers_outbound_bytes{name=\"mypath\"} 789\n"+ + "hls_muxers_outbound_frames_discarded{name=\"mypath\"} 12\n"+ + "\n"+ + "# HLS muxers (deprecated)\n"+ + "hls_muxers_bytes_sent{name=\"mypath\"} 789\n"+ + "\n"+ + "# RTSP connections\n"+ + "rtsp_conns{id=\"18294761-f9d1-4ea9-9a35-fe265b62eb41\"} 1\n"+ + "rtsp_conns_inbound_bytes{id=\"18294761-f9d1-4ea9-9a35-fe265b62eb41\"} 123\n"+ + "rtsp_conns_outbound_bytes{id=\"18294761-f9d1-4ea9-9a35-fe265b62eb41\"} 456\n"+ + "\n"+ + "# RTSP connections (deprecated)\n"+ + "rtsp_conns_bytes_received{id=\"18294761-f9d1-4ea9-9a35-fe265b62eb41\"} 123\n"+ + "rtsp_conns_bytes_sent{id=\"18294761-f9d1-4ea9-9a35-fe265b62eb41\"} 456\n"+ + "\n"+ + "# RTSP sessions\n"+ + "rtsp_sessions{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 1\n"+ + "rtsp_sessions_inbound_bytes{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ + "rtsp_sessions_inbound_rtp_packets{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ + "rtsp_sessions_inbound_rtp_packets_lost{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ + "rtsp_sessions_inbound_rtp_packets_in_error{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ + "rtsp_sessions_inbound_rtp_packets_jitter{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ + "rtsp_sessions_inbound_rtcp_packets{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ + "rtsp_sessions_inbound_rtcp_packets_in_error{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ + "rtsp_sessions_outbound_bytes{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ + "rtsp_sessions_outbound_rtp_packets{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ + "rtsp_sessions_outbound_rtp_packets_reported_lost{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 321\n"+ + "rtsp_sessions_outbound_rtp_packets_discarded{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 111\n"+ + "rtsp_sessions_outbound_rtcp_packets{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ + "\n"+ + "# RTSP sessions (deprecated)\n"+ + "rtsp_sessions_bytes_received{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ + "rtsp_sessions_bytes_sent{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ + "rtsp_sessions_rtp_packets_received{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ + "rtsp_sessions_rtp_packets_sent{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ + "rtsp_sessions_rtp_packets_lost{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ + "rtsp_sessions_rtp_packets_in_error{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ + "rtsp_sessions_rtp_packets_jitter{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ + "rtsp_sessions_rtcp_packets_received{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ + "rtsp_sessions_rtcp_packets_sent{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ + "rtsp_sessions_rtcp_packets_in_error{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ + "\n"+ + "# RTSPS connections\n"+ + "rtsps_conns{id=\"18294761-f9d1-4ea9-9a35-fe265b62eb41\"} 1\n"+ + "rtsps_conns_inbound_bytes{id=\"18294761-f9d1-4ea9-9a35-fe265b62eb41\"} 123\n"+ + "rtsps_conns_outbound_bytes{id=\"18294761-f9d1-4ea9-9a35-fe265b62eb41\"} 456\n"+ + "\n"+ + "# RTSPS connections (deprecated)\n"+ + "rtsps_conns_bytes_received{id=\"18294761-f9d1-4ea9-9a35-fe265b62eb41\"} 123\n"+ + "rtsps_conns_bytes_sent{id=\"18294761-f9d1-4ea9-9a35-fe265b62eb41\"} 456\n"+ + "\n"+ + "# RTSPS sessions\n"+ + "rtsps_sessions{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 1\n"+ + "rtsps_sessions_inbound_bytes{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ + "rtsps_sessions_inbound_rtp_packets{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ + "rtsps_sessions_inbound_rtp_packets_lost{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ + "rtsps_sessions_inbound_rtp_packets_in_error{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ + "rtsps_sessions_inbound_rtp_packets_jitter{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ + "rtsps_sessions_inbound_rtcp_packets{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ + "rtsps_sessions_inbound_rtcp_packets_in_error{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ + "rtsps_sessions_outbound_bytes{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ + "rtsps_sessions_outbound_rtp_packets{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ + "rtsps_sessions_outbound_rtp_packets_reported_lost{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 321\n"+ + "rtsps_sessions_outbound_rtp_packets_discarded{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 111\n"+ + "rtsps_sessions_outbound_rtcp_packets{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ + "\n"+ + "# RTSPS sessions (deprecated)\n"+ + "rtsps_sessions_bytes_received{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ + "rtsps_sessions_bytes_sent{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ + "rtsps_sessions_rtp_packets_received{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ + "rtsps_sessions_rtp_packets_sent{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ + "rtsps_sessions_rtp_packets_lost{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ + "rtsps_sessions_rtp_packets_in_error{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ + "rtsps_sessions_rtp_packets_jitter{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 123\n"+ + "rtsps_sessions_rtcp_packets_received{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ + "rtsps_sessions_rtcp_packets_sent{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 789\n"+ + "rtsps_sessions_rtcp_packets_in_error{id=\"124b22ce-9c34-4387-b045-44caf98049f7\",path=\"mypath\","+ + "remoteAddr=\"124.5.5.5:34542\",state=\"publish\"} 456\n"+ + "\n"+ + "# RTMP connections\n"+ + "rtmp_conns{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 1\n"+ + "rtmp_conns_inbound_bytes{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 123\n"+ + "rtmp_conns_outbound_bytes{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 456\n"+ + "rtmp_conns_outbound_frames_discarded{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 12\n"+ + "\n"+ + "# RTMP connections (deprecated)\n"+ + "rtmp_conns_bytes_received{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 123\n"+ + "rtmp_conns_bytes_sent{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 456\n"+ + "\n"+ + "# RTMPS connections\n"+ + "rtmps_conns{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 1\n"+ + "rtmps_conns_inbound_bytes{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 123\n"+ + "rtmps_conns_outbound_bytes{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 456\n"+ + "rtmps_conns_outbound_frames_discarded{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 12\n"+ + "\n"+ + "# RTMPS connections (deprecated)\n"+ + "rtmps_conns_bytes_received{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 123\n"+ + "rtmps_conns_bytes_sent{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 456\n"+ + "\n"+ + "# SRT connections\n"+ + "srt_conns{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 1\n"+ + "srt_conns_packets_sent{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 100\n"+ + "srt_conns_packets_received{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 200\n"+ + "srt_conns_packets_sent_unique{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 90\n"+ + "srt_conns_packets_received_unique{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 180\n"+ + "srt_conns_packets_send_loss{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 10\n"+ + "srt_conns_packets_received_loss{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 20\n"+ + "srt_conns_packets_retrans{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 5\n"+ + "srt_conns_packets_received_retrans{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 3\n"+ + "srt_conns_packets_sent_ack{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 50\n"+ + "srt_conns_packets_received_ack{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 40\n"+ + "srt_conns_packets_sent_nak{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 2\n"+ + "srt_conns_packets_received_nak{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 1\n"+ + "srt_conns_packets_sent_km{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 4\n"+ + "srt_conns_packets_received_km{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 3\n"+ + "srt_conns_us_snd_duration{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 1000000\n"+ + "srt_conns_packets_received_belated{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 7\n"+ + "srt_conns_packets_send_drop{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 8\n"+ + "srt_conns_packets_received_drop{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 6\n"+ + "srt_conns_packets_received_undecrypt{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 0\n"+ + "srt_conns_bytes_sent{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 12345\n"+ + "srt_conns_bytes_received{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 67890\n"+ + "srt_conns_bytes_sent_unique{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 11000\n"+ + "srt_conns_bytes_received_unique{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 60000\n"+ + "srt_conns_bytes_received_loss{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 500\n"+ + "srt_conns_bytes_retrans{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 300\n"+ + "srt_conns_bytes_received_retrans{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 200\n"+ + "srt_conns_bytes_received_belated{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 100\n"+ + "srt_conns_bytes_send_drop{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 400\n"+ + "srt_conns_bytes_received_drop{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 350\n"+ + "srt_conns_bytes_received_undecrypt{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 0\n"+ + "srt_conns_us_packets_send_period{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 10.5\n"+ + "srt_conns_packets_flow_window{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 8192\n"+ + "srt_conns_packets_flight_size{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 25\n"+ + "srt_conns_ms_rtt{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 1.5\n"+ + "srt_conns_mbps_send_rate{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 50\n"+ + "srt_conns_mbps_receive_rate{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 48\n"+ + "srt_conns_mbps_link_capacity{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 100\n"+ + "srt_conns_bytes_avail_send_buf{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 65536\n"+ + "srt_conns_bytes_avail_receive_buf{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 65536\n"+ + "srt_conns_mbps_max_bw{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 100\n"+ + "srt_conns_bytes_mss{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 1500\n"+ + "srt_conns_packets_send_buf{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 10\n"+ + "srt_conns_bytes_send_buf{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 15000\n"+ + "srt_conns_ms_send_buf{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 120\n"+ + "srt_conns_ms_send_tsb_pd_delay{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 120\n"+ + "srt_conns_packets_receive_buf{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 15\n"+ + "srt_conns_bytes_receive_buf{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 22500\n"+ + "srt_conns_ms_receive_buf{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 120\n"+ + "srt_conns_ms_receive_tsb_pd_delay{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 120\n"+ + "srt_conns_packets_reorder_tolerance{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 3\n"+ + "srt_conns_packets_received_avg_belated_time{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 50\n"+ + "srt_conns_packets_send_loss_rate{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 0.01\n"+ + "srt_conns_packets_received_loss_rate{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 0.02\n"+ + "srt_conns_outbound_frames_discarded{id=\"a0b1c2d3-e4f5-6789-abcd-ef0123456789\",path=\"mypath\","+ + "remoteAddr=\"5.5.5.5:4321\",state=\"publish\"} 5\n"+ + "\n"+ + "# WebRTC sessions\n"+ + "webrtc_sessions{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ + "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 1\n"+ + "webrtc_sessions_inbound_bytes{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ + "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 123\n"+ + "webrtc_sessions_inbound_rtp_packets{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ + "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 789\n"+ + "webrtc_sessions_inbound_rtp_packets_lost{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ + "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 456\n"+ + "webrtc_sessions_inbound_rtp_packets_jitter{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ + "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 789\n"+ + "webrtc_sessions_inbound_rtcp_packets{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ + "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 123\n"+ + "webrtc_sessions_outbound_bytes{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ + "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 456\n"+ + "webrtc_sessions_outbound_rtp_packets{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ + "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 123\n"+ + "webrtc_sessions_outbound_rtcp_packets{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ + "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 456\n"+ + "webrtc_sessions_outbound_frames_discarded{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ + "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 12\n"+ + "\n"+ + "# WebRTC sessions (deprecated)\n"+ + "webrtc_sessions_bytes_received{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ + "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 123\n"+ + "webrtc_sessions_bytes_sent{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ + "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 456\n"+ + "webrtc_sessions_rtp_packets_received{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ + "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 789\n"+ + "webrtc_sessions_rtp_packets_sent{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ + "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 123\n"+ + "webrtc_sessions_rtp_packets_lost{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ + "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 456\n"+ + "webrtc_sessions_rtp_packets_jitter{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ + "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 789\n"+ + "webrtc_sessions_rtcp_packets_received{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ + "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 123\n"+ + "webrtc_sessions_rtcp_packets_sent{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ + "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 456\n"+ + "\n", string(byts)) require.True(t, checked) @@ -775,119 +813,141 @@ func TestZeroMetricsFallback(t *testing.T) { byts, err := io.ReadAll(res.Body) require.NoError(t, err) - require.Equal(t, ""+ //nolint:dupl - "paths 0\n"+ - "paths_inbound_bytes 0\n"+ - "paths_outbound_bytes 0\n"+ - "paths_inbound_frames_in_error 0\n"+ - "paths_bytes_received 0\n"+ - "paths_bytes_sent 0\n"+ - "paths_readers 0\n"+ - "hls_muxers 0\n"+ - "hls_muxers_outbound_bytes 0\n"+ - "hls_muxers_outbound_frames_discarded 0\n"+ - "hls_muxers_bytes_sent 0\n"+ - "rtsp_conns 0\n"+ - "rtsp_conns_inbound_bytes 0\n"+ - "rtsp_conns_outbound_bytes 0\n"+ - "rtsp_conns_bytes_received 0\n"+ - "rtsp_conns_bytes_sent 0\n"+ - "rtsp_sessions 0\n"+ - "rtsp_sessions_inbound_bytes 0\n"+ - "rtsp_sessions_inbound_rtp_packets 0\n"+ - "rtsp_sessions_inbound_rtp_packets_lost 0\n"+ - "rtsp_sessions_inbound_rtp_packets_in_error 0\n"+ - "rtsp_sessions_inbound_rtp_packets_jitter 0\n"+ - "rtsp_sessions_inbound_rtcp_packets 0\n"+ - "rtsp_sessions_inbound_rtcp_packets_in_error 0\n"+ - "rtsp_sessions_outbound_bytes 0\n"+ - "rtsp_sessions_outbound_rtp_packets 0\n"+ - "rtsp_sessions_outbound_rtp_packets_reported_lost 0\n"+ - "rtsp_sessions_outbound_rtp_packets_discarded 0\n"+ - "rtsp_sessions_outbound_rtcp_packets 0\n"+ - "rtsp_sessions_bytes_received 0\n"+ - "rtsp_sessions_bytes_sent 0\n"+ - "rtsp_sessions_rtp_packets_received 0\n"+ - "rtsp_sessions_rtp_packets_sent 0\n"+ - "rtsp_sessions_rtp_packets_lost 0\n"+ - "rtsp_sessions_rtp_packets_in_error 0\n"+ - "rtsp_sessions_rtp_packets_jitter 0\n"+ - "rtsp_sessions_rtcp_packets_received 0\n"+ - "rtsp_sessions_rtcp_packets_sent 0\n"+ - "rtsp_sessions_rtcp_packets_in_error 0\n"+ - "srt_conns 0\n"+ - "srt_conns_packets_sent 0\n"+ - "srt_conns_packets_received 0\n"+ - "srt_conns_packets_sent_unique 0\n"+ - "srt_conns_packets_received_unique 0\n"+ - "srt_conns_packets_send_loss 0\n"+ - "srt_conns_packets_received_loss 0\n"+ - "srt_conns_packets_retrans 0\n"+ - "srt_conns_packets_received_retrans 0\n"+ - "srt_conns_packets_sent_ack 0\n"+ - "srt_conns_packets_received_ack 0\n"+ - "srt_conns_packets_sent_nak 0\n"+ - "srt_conns_packets_received_nak 0\n"+ - "srt_conns_packets_sent_km 0\n"+ - "srt_conns_packets_received_km 0\n"+ - "srt_conns_us_snd_duration 0\n"+ - "srt_conns_packets_received_belated 0\n"+ - "srt_conns_packets_send_drop 0\n"+ - "srt_conns_packets_received_drop 0\n"+ - "srt_conns_packets_received_undecrypt 0\n"+ - "srt_conns_bytes_sent 0\n"+ - "srt_conns_bytes_received 0\n"+ - "srt_conns_bytes_sent_unique 0\n"+ - "srt_conns_bytes_received_unique 0\n"+ - "srt_conns_bytes_received_loss 0\n"+ - "srt_conns_bytes_retrans 0\n"+ - "srt_conns_bytes_received_retrans 0\n"+ - "srt_conns_bytes_received_belated 0\n"+ - "srt_conns_bytes_send_drop 0\n"+ - "srt_conns_bytes_received_drop 0\n"+ - "srt_conns_bytes_received_undecrypt 0\n"+ - "srt_conns_us_packets_send_period 0\n"+ - "srt_conns_packets_flow_window 0\n"+ - "srt_conns_packets_flight_size 0\n"+ - "srt_conns_ms_rtt 0\n"+ - "srt_conns_mbps_send_rate 0\n"+ - "srt_conns_mbps_receive_rate 0\n"+ - "srt_conns_mbps_link_capacity 0\n"+ - "srt_conns_bytes_avail_send_buf 0\n"+ - "srt_conns_bytes_avail_receive_buf 0\n"+ - "srt_conns_mbps_max_bw 0\n"+ - "srt_conns_bytes_mss 0\n"+ - "srt_conns_packets_send_buf 0\n"+ - "srt_conns_bytes_send_buf 0\n"+ - "srt_conns_ms_send_buf 0\n"+ - "srt_conns_ms_send_tsb_pd_delay 0\n"+ - "srt_conns_packets_receive_buf 0\n"+ - "srt_conns_bytes_receive_buf 0\n"+ - "srt_conns_ms_receive_buf 0\n"+ - "srt_conns_ms_receive_tsb_pd_delay 0\n"+ - "srt_conns_packets_reorder_tolerance 0\n"+ - "srt_conns_packets_received_avg_belated_time 0\n"+ - "srt_conns_packets_send_loss_rate 0\n"+ - "srt_conns_packets_received_loss_rate 0\n"+ - "srt_conns_outbound_frames_discarded 0\n"+ - "webrtc_sessions 0\n"+ - "webrtc_sessions_inbound_bytes 0\n"+ - "webrtc_sessions_inbound_rtp_packets 0\n"+ - "webrtc_sessions_inbound_rtp_packets_lost 0\n"+ - "webrtc_sessions_inbound_rtp_packets_jitter 0\n"+ - "webrtc_sessions_inbound_rtcp_packets 0\n"+ - "webrtc_sessions_outbound_bytes 0\n"+ - "webrtc_sessions_outbound_rtp_packets 0\n"+ - "webrtc_sessions_outbound_rtcp_packets 0\n"+ - "webrtc_sessions_outbound_frames_discarded 0\n"+ - "webrtc_sessions_bytes_received 0\n"+ - "webrtc_sessions_bytes_sent 0\n"+ - "webrtc_sessions_rtp_packets_received 0\n"+ - "webrtc_sessions_rtp_packets_sent 0\n"+ - "webrtc_sessions_rtp_packets_lost 0\n"+ - "webrtc_sessions_rtp_packets_jitter 0\n"+ - "webrtc_sessions_rtcp_packets_received 0\n"+ - "webrtc_sessions_rtcp_packets_sent 0\n", + require.Equal(t, + "# Paths\n"+ //nolint:dupl + "paths 0\n"+ + "paths_inbound_bytes 0\n"+ + "paths_outbound_bytes 0\n"+ + "paths_inbound_frames_in_error 0\n"+ + "\n"+ + "# Paths (deprecated)\n"+ + "paths_bytes_received 0\n"+ + "paths_bytes_sent 0\n"+ + "paths_readers 0\n"+ + "\n"+ + "# HLS muxers\n"+ + "hls_muxers 0\n"+ + "hls_muxers_outbound_bytes 0\n"+ + "hls_muxers_outbound_frames_discarded 0\n"+ + "\n"+ + "# HLS muxers (deprecated)\n"+ + "hls_muxers_bytes_sent 0\n"+ + "\n"+ + "# RTSP connections\n"+ + "rtsp_conns 0\n"+ + "rtsp_conns_inbound_bytes 0\n"+ + "rtsp_conns_outbound_bytes 0\n"+ + "\n"+ + "# RTSP connections (deprecated)\n"+ + "rtsp_conns_bytes_received 0\n"+ + "rtsp_conns_bytes_sent 0\n"+ + "\n"+ + "# RTSP sessions\n"+ + "rtsp_sessions 0\n"+ + "rtsp_sessions_inbound_bytes 0\n"+ + "rtsp_sessions_inbound_rtp_packets 0\n"+ + "rtsp_sessions_inbound_rtp_packets_lost 0\n"+ + "rtsp_sessions_inbound_rtp_packets_in_error 0\n"+ + "rtsp_sessions_inbound_rtp_packets_jitter 0\n"+ + "rtsp_sessions_inbound_rtcp_packets 0\n"+ + "rtsp_sessions_inbound_rtcp_packets_in_error 0\n"+ + "rtsp_sessions_outbound_bytes 0\n"+ + "rtsp_sessions_outbound_rtp_packets 0\n"+ + "rtsp_sessions_outbound_rtp_packets_reported_lost 0\n"+ + "rtsp_sessions_outbound_rtp_packets_discarded 0\n"+ + "rtsp_sessions_outbound_rtcp_packets 0\n"+ + "\n"+ + "# RTSP sessions (deprecated)\n"+ + "rtsp_sessions_bytes_received 0\n"+ + "rtsp_sessions_bytes_sent 0\n"+ + "rtsp_sessions_rtp_packets_received 0\n"+ + "rtsp_sessions_rtp_packets_sent 0\n"+ + "rtsp_sessions_rtp_packets_lost 0\n"+ + "rtsp_sessions_rtp_packets_in_error 0\n"+ + "rtsp_sessions_rtp_packets_jitter 0\n"+ + "rtsp_sessions_rtcp_packets_received 0\n"+ + "rtsp_sessions_rtcp_packets_sent 0\n"+ + "rtsp_sessions_rtcp_packets_in_error 0\n"+ + "\n"+ + "# SRT connections\n"+ + "srt_conns 0\n"+ + "srt_conns_packets_sent 0\n"+ + "srt_conns_packets_received 0\n"+ + "srt_conns_packets_sent_unique 0\n"+ + "srt_conns_packets_received_unique 0\n"+ + "srt_conns_packets_send_loss 0\n"+ + "srt_conns_packets_received_loss 0\n"+ + "srt_conns_packets_retrans 0\n"+ + "srt_conns_packets_received_retrans 0\n"+ + "srt_conns_packets_sent_ack 0\n"+ + "srt_conns_packets_received_ack 0\n"+ + "srt_conns_packets_sent_nak 0\n"+ + "srt_conns_packets_received_nak 0\n"+ + "srt_conns_packets_sent_km 0\n"+ + "srt_conns_packets_received_km 0\n"+ + "srt_conns_us_snd_duration 0\n"+ + "srt_conns_packets_received_belated 0\n"+ + "srt_conns_packets_send_drop 0\n"+ + "srt_conns_packets_received_drop 0\n"+ + "srt_conns_packets_received_undecrypt 0\n"+ + "srt_conns_bytes_sent 0\n"+ + "srt_conns_bytes_received 0\n"+ + "srt_conns_bytes_sent_unique 0\n"+ + "srt_conns_bytes_received_unique 0\n"+ + "srt_conns_bytes_received_loss 0\n"+ + "srt_conns_bytes_retrans 0\n"+ + "srt_conns_bytes_received_retrans 0\n"+ + "srt_conns_bytes_received_belated 0\n"+ + "srt_conns_bytes_send_drop 0\n"+ + "srt_conns_bytes_received_drop 0\n"+ + "srt_conns_bytes_received_undecrypt 0\n"+ + "srt_conns_us_packets_send_period 0\n"+ + "srt_conns_packets_flow_window 0\n"+ + "srt_conns_packets_flight_size 0\n"+ + "srt_conns_ms_rtt 0\n"+ + "srt_conns_mbps_send_rate 0\n"+ + "srt_conns_mbps_receive_rate 0\n"+ + "srt_conns_mbps_link_capacity 0\n"+ + "srt_conns_bytes_avail_send_buf 0\n"+ + "srt_conns_bytes_avail_receive_buf 0\n"+ + "srt_conns_mbps_max_bw 0\n"+ + "srt_conns_bytes_mss 0\n"+ + "srt_conns_packets_send_buf 0\n"+ + "srt_conns_bytes_send_buf 0\n"+ + "srt_conns_ms_send_buf 0\n"+ + "srt_conns_ms_send_tsb_pd_delay 0\n"+ + "srt_conns_packets_receive_buf 0\n"+ + "srt_conns_bytes_receive_buf 0\n"+ + "srt_conns_ms_receive_buf 0\n"+ + "srt_conns_ms_receive_tsb_pd_delay 0\n"+ + "srt_conns_packets_reorder_tolerance 0\n"+ + "srt_conns_packets_received_avg_belated_time 0\n"+ + "srt_conns_packets_send_loss_rate 0\n"+ + "srt_conns_packets_received_loss_rate 0\n"+ + "srt_conns_outbound_frames_discarded 0\n"+ + "\n"+ + "# WebRTC sessions\n"+ + "webrtc_sessions 0\n"+ + "webrtc_sessions_inbound_bytes 0\n"+ + "webrtc_sessions_inbound_rtp_packets 0\n"+ + "webrtc_sessions_inbound_rtp_packets_lost 0\n"+ + "webrtc_sessions_inbound_rtp_packets_jitter 0\n"+ + "webrtc_sessions_inbound_rtcp_packets 0\n"+ + "webrtc_sessions_outbound_bytes 0\n"+ + "webrtc_sessions_outbound_rtp_packets 0\n"+ + "webrtc_sessions_outbound_rtcp_packets 0\n"+ + "webrtc_sessions_outbound_frames_discarded 0\n"+ + "\n"+ + "# WebRTC sessions (deprecated)\n"+ + "webrtc_sessions_bytes_received 0\n"+ + "webrtc_sessions_bytes_sent 0\n"+ + "webrtc_sessions_rtp_packets_received 0\n"+ + "webrtc_sessions_rtp_packets_sent 0\n"+ + "webrtc_sessions_rtp_packets_lost 0\n"+ + "webrtc_sessions_rtp_packets_jitter 0\n"+ + "webrtc_sessions_rtcp_packets_received 0\n"+ + "webrtc_sessions_rtcp_packets_sent 0\n"+ + "\n", string(byts)) } @@ -965,35 +1025,45 @@ func TestFilter(t *testing.T) { switch ca { case "path": require.Equal(t, - `paths{name="mypath",state="ready"} 1`+"\n"+ + "# Paths\n"+ + `paths{name="mypath",state="ready"} 1`+"\n"+ `paths_inbound_bytes{name="mypath",state="ready"} 123`+"\n"+ `paths_outbound_bytes{name="mypath",state="ready"} 456`+"\n"+ `paths_inbound_frames_in_error{name="mypath",state="ready"} 7`+"\n"+ + "\n"+ + "# Paths (deprecated)\n"+ `paths_bytes_received{name="mypath",state="ready"} 123`+"\n"+ `paths_bytes_sent{name="mypath",state="ready"} 456`+"\n"+ - `paths_readers{name="mypath",state="ready"} 1`+"\n", + `paths_readers{name="mypath",state="ready"} 1`+"\n\n", string(byts)) case "hls_muxer": require.Equal(t, - `hls_muxers{name="mypath"} 1`+"\n"+ + "# HLS muxers\n"+ + `hls_muxers{name="mypath"} 1`+"\n"+ `hls_muxers_outbound_bytes{name="mypath"} 789`+"\n"+ `hls_muxers_outbound_frames_discarded{name="mypath"} 12`+"\n"+ - `hls_muxers_bytes_sent{name="mypath"} 789`+"\n", + "\n"+ + "# HLS muxers (deprecated)\n"+ + `hls_muxers_bytes_sent{name="mypath"} 789`+"\n\n", string(byts)) case "rtsp_conn": require.Equal(t, - `rtsp_conns{id="18294761-f9d1-4ea9-9a35-fe265b62eb41"} 1`+"\n"+ + "# RTSP connections\n"+ + `rtsp_conns{id="18294761-f9d1-4ea9-9a35-fe265b62eb41"} 1`+"\n"+ `rtsp_conns_inbound_bytes{id="18294761-f9d1-4ea9-9a35-fe265b62eb41"} 123`+"\n"+ `rtsp_conns_outbound_bytes{id="18294761-f9d1-4ea9-9a35-fe265b62eb41"} 456`+"\n"+ + "\n"+ + "# RTSP connections (deprecated)\n"+ `rtsp_conns_bytes_received{id="18294761-f9d1-4ea9-9a35-fe265b62eb41"} 123`+"\n"+ - `rtsp_conns_bytes_sent{id="18294761-f9d1-4ea9-9a35-fe265b62eb41"} 456`+"\n", + `rtsp_conns_bytes_sent{id="18294761-f9d1-4ea9-9a35-fe265b62eb41"} 456`+"\n\n", string(byts)) - case "rtsp_session": + case "rtsp_session": //nolint:dupl require.Equal(t, - `rtsp_sessions{id="124b22ce-9c34-4387-b045-44caf98049f7",`+ + "# RTSP sessions\n"+ + `rtsp_sessions{id="124b22ce-9c34-4387-b045-44caf98049f7",`+ `path="mypath",remoteAddr="124.5.5.5:34542",state="publish"} 1`+"\n"+ `rtsp_sessions_inbound_bytes{id="124b22ce-9c34-4387-b045-44caf98049f7",`+ `path="mypath",remoteAddr="124.5.5.5:34542",state="publish"} 123`+"\n"+ @@ -1019,6 +1089,8 @@ func TestFilter(t *testing.T) { `path="mypath",remoteAddr="124.5.5.5:34542",state="publish"} 111`+"\n"+ `rtsp_sessions_outbound_rtcp_packets{id="124b22ce-9c34-4387-b045-44caf98049f7",`+ `path="mypath",remoteAddr="124.5.5.5:34542",state="publish"} 789`+"\n"+ + "\n"+ + "# RTSP sessions (deprecated)\n"+ `rtsp_sessions_bytes_received{id="124b22ce-9c34-4387-b045-44caf98049f7",`+ `path="mypath",remoteAddr="124.5.5.5:34542",state="publish"} 123`+"\n"+ `rtsp_sessions_bytes_sent{id="124b22ce-9c34-4387-b045-44caf98049f7",`+ @@ -1038,21 +1110,25 @@ func TestFilter(t *testing.T) { `rtsp_sessions_rtcp_packets_sent{id="124b22ce-9c34-4387-b045-44caf98049f7",`+ `path="mypath",remoteAddr="124.5.5.5:34542",state="publish"} 789`+"\n"+ `rtsp_sessions_rtcp_packets_in_error{id="124b22ce-9c34-4387-b045-44caf98049f7",`+ - `path="mypath",remoteAddr="124.5.5.5:34542",state="publish"} 456`+"\n", + `path="mypath",remoteAddr="124.5.5.5:34542",state="publish"} 456`+"\n\n", string(byts)) case "rtsps_conn": require.Equal(t, - `rtsps_conns{id="18294761-f9d1-4ea9-9a35-fe265b62eb41"} 1`+"\n"+ + "# RTSPS connections\n"+ + `rtsps_conns{id="18294761-f9d1-4ea9-9a35-fe265b62eb41"} 1`+"\n"+ `rtsps_conns_inbound_bytes{id="18294761-f9d1-4ea9-9a35-fe265b62eb41"} 123`+"\n"+ `rtsps_conns_outbound_bytes{id="18294761-f9d1-4ea9-9a35-fe265b62eb41"} 456`+"\n"+ + "\n"+ + "# RTSPS connections (deprecated)\n"+ `rtsps_conns_bytes_received{id="18294761-f9d1-4ea9-9a35-fe265b62eb41"} 123`+"\n"+ - `rtsps_conns_bytes_sent{id="18294761-f9d1-4ea9-9a35-fe265b62eb41"} 456`+"\n", + `rtsps_conns_bytes_sent{id="18294761-f9d1-4ea9-9a35-fe265b62eb41"} 456`+"\n\n", string(byts)) - case "rtsps_session": + case "rtsps_session": //nolint:dupl require.Equal(t, - `rtsps_sessions{id="124b22ce-9c34-4387-b045-44caf98049f7",`+ + "# RTSPS sessions\n"+ + `rtsps_sessions{id="124b22ce-9c34-4387-b045-44caf98049f7",`+ `path="mypath",remoteAddr="124.5.5.5:34542",state="publish"} 1`+"\n"+ `rtsps_sessions_inbound_bytes{id="124b22ce-9c34-4387-b045-44caf98049f7",`+ `path="mypath",remoteAddr="124.5.5.5:34542",state="publish"} 123`+"\n"+ @@ -1078,6 +1154,8 @@ func TestFilter(t *testing.T) { `path="mypath",remoteAddr="124.5.5.5:34542",state="publish"} 111`+"\n"+ `rtsps_sessions_outbound_rtcp_packets{id="124b22ce-9c34-4387-b045-44caf98049f7",`+ `path="mypath",remoteAddr="124.5.5.5:34542",state="publish"} 789`+"\n"+ + "\n"+ + "# RTSPS sessions (deprecated)\n"+ `rtsps_sessions_bytes_received{id="124b22ce-9c34-4387-b045-44caf98049f7",`+ `path="mypath",remoteAddr="124.5.5.5:34542",state="publish"} 123`+"\n"+ `rtsps_sessions_bytes_sent{id="124b22ce-9c34-4387-b045-44caf98049f7",`+ @@ -1097,28 +1175,32 @@ func TestFilter(t *testing.T) { `rtsps_sessions_rtcp_packets_sent{id="124b22ce-9c34-4387-b045-44caf98049f7",`+ `path="mypath",remoteAddr="124.5.5.5:34542",state="publish"} 789`+"\n"+ `rtsps_sessions_rtcp_packets_in_error{id="124b22ce-9c34-4387-b045-44caf98049f7",`+ - `path="mypath",remoteAddr="124.5.5.5:34542",state="publish"} 456`+"\n", + `path="mypath",remoteAddr="124.5.5.5:34542",state="publish"} 456`+"\n\n", string(byts)) case "rtmp_conn": - require.Equal(t, ""+ - "rtmp_conns{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 1\n"+ - "rtmp_conns_inbound_bytes{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 123\n"+ - "rtmp_conns_outbound_bytes{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 456\n"+ - "rtmp_conns_outbound_frames_discarded{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 12\n"+ - "rtmp_conns_bytes_received{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 123\n"+ - "rtmp_conns_bytes_sent{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 456\n", + require.Equal(t, + "# RTMP connections\n"+ + "rtmp_conns{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 1\n"+ + "rtmp_conns_inbound_bytes{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 123\n"+ + "rtmp_conns_outbound_bytes{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 456\n"+ + "rtmp_conns_outbound_frames_discarded{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 12\n"+ + "\n"+ + "# RTMP connections (deprecated)\n"+ + "rtmp_conns_bytes_received{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 123\n"+ + "rtmp_conns_bytes_sent{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 456\n\n", string(byts)) case "rtmps_conn": require.Equal(t, - `rtmps_conns{id="9a07afe4-fc07-4c9b-be6e-6255720c36d0",`+ + "# RTMPS connections\n"+ + `rtmps_conns{id="9a07afe4-fc07-4c9b-be6e-6255720c36d0",`+ `path="mypath",remoteAddr="3.3.3.3:5678",state="read"} 1`+"\n"+ `rtmps_conns_inbound_bytes{id="9a07afe4-fc07-4c9b-be6e-6255720c36d0",`+ `path="mypath",remoteAddr="3.3.3.3:5678",state="read"} 123`+"\n"+ @@ -1126,15 +1208,18 @@ func TestFilter(t *testing.T) { `path="mypath",remoteAddr="3.3.3.3:5678",state="read"} 456`+"\n"+ `rtmps_conns_outbound_frames_discarded{id="9a07afe4-fc07-4c9b-be6e-6255720c36d0",`+ `path="mypath",remoteAddr="3.3.3.3:5678",state="read"} 12`+"\n"+ + "\n"+ + "# RTMPS connections (deprecated)\n"+ `rtmps_conns_bytes_received{id="9a07afe4-fc07-4c9b-be6e-6255720c36d0",`+ `path="mypath",remoteAddr="3.3.3.3:5678",state="read"} 123`+"\n"+ `rtmps_conns_bytes_sent{id="9a07afe4-fc07-4c9b-be6e-6255720c36d0",`+ - `path="mypath",remoteAddr="3.3.3.3:5678",state="read"} 456`+"\n", + `path="mypath",remoteAddr="3.3.3.3:5678",state="read"} 456`+"\n\n", string(byts)) case "srt_conn": require.Equal(t, - `srt_conns{id="a0b1c2d3-e4f5-6789-abcd-ef0123456789",`+ //nolint:dupl + "# SRT connections\n"+ //nolint:dupl + `srt_conns{id="a0b1c2d3-e4f5-6789-abcd-ef0123456789",`+ `path="mypath",remoteAddr="5.5.5.5:4321",state="publish"} 1`+"\n"+ `srt_conns_packets_sent{id="a0b1c2d3-e4f5-6789-abcd-ef0123456789",`+ `path="mypath",remoteAddr="5.5.5.5:4321",state="publish"} 100`+"\n"+ @@ -1243,12 +1328,13 @@ func TestFilter(t *testing.T) { `srt_conns_packets_received_loss_rate{id="a0b1c2d3-e4f5-6789-abcd-ef0123456789",`+ `path="mypath",remoteAddr="5.5.5.5:4321",state="publish"} 0.02`+"\n"+ `srt_conns_outbound_frames_discarded{id="a0b1c2d3-e4f5-6789-abcd-ef0123456789",`+ - `path="mypath",remoteAddr="5.5.5.5:4321",state="publish"} 5`+"\n", + `path="mypath",remoteAddr="5.5.5.5:4321",state="publish"} 5`+"\n\n", string(byts)) case "webrtc_session": require.Equal(t, - `webrtc_sessions{id="f47ac10b-58cc-4372-a567-0e02b2c3d479",`+ + "# WebRTC sessions\n"+ + `webrtc_sessions{id="f47ac10b-58cc-4372-a567-0e02b2c3d479",`+ `path="mypath",remoteAddr="127.0.0.1:3455",state="read"} 1`+"\n"+ `webrtc_sessions_inbound_bytes{id="f47ac10b-58cc-4372-a567-0e02b2c3d479",`+ `path="mypath",remoteAddr="127.0.0.1:3455",state="read"} 123`+"\n"+ @@ -1268,6 +1354,8 @@ func TestFilter(t *testing.T) { `path="mypath",remoteAddr="127.0.0.1:3455",state="read"} 456`+"\n"+ `webrtc_sessions_outbound_frames_discarded{id="f47ac10b-58cc-4372-a567-0e02b2c3d479",`+ `path="mypath",remoteAddr="127.0.0.1:3455",state="read"} 12`+"\n"+ + "\n"+ + "# WebRTC sessions (deprecated)\n"+ `webrtc_sessions_bytes_received{id="f47ac10b-58cc-4372-a567-0e02b2c3d479",`+ `path="mypath",remoteAddr="127.0.0.1:3455",state="read"} 123`+"\n"+ `webrtc_sessions_bytes_sent{id="f47ac10b-58cc-4372-a567-0e02b2c3d479",`+ @@ -1283,7 +1371,7 @@ func TestFilter(t *testing.T) { `webrtc_sessions_rtcp_packets_received{id="f47ac10b-58cc-4372-a567-0e02b2c3d479",`+ `path="mypath",remoteAddr="127.0.0.1:3455",state="read"} 123`+"\n"+ `webrtc_sessions_rtcp_packets_sent{id="f47ac10b-58cc-4372-a567-0e02b2c3d479",`+ - `path="mypath",remoteAddr="127.0.0.1:3455",state="read"} 456`+"\n", + `path="mypath",remoteAddr="127.0.0.1:3455",state="read"} 456`+"\n\n", string(byts)) } }) @@ -1340,45 +1428,57 @@ func TestFilterByType(t *testing.T) { switch ca { case "paths": require.Equal(t, - "paths{name=\"mypath\",state=\"ready\"} 1\n"+ + "# Paths\n"+ + "paths{name=\"mypath\",state=\"ready\"} 1\n"+ "paths_inbound_bytes{name=\"mypath\",state=\"ready\"} 123\n"+ "paths_outbound_bytes{name=\"mypath\",state=\"ready\"} 456\n"+ "paths_inbound_frames_in_error{name=\"mypath\",state=\"ready\"} 7\n"+ + "\n"+ + "# Paths (deprecated)\n"+ "paths_bytes_received{name=\"mypath\",state=\"ready\"} 123\n"+ "paths_bytes_sent{name=\"mypath\",state=\"ready\"} 456\n"+ - "paths_readers{name=\"mypath\",state=\"ready\"} 1\n", + "paths_readers{name=\"mypath\",state=\"ready\"} 1\n\n", string(byts)) case "rtmp_conns": - require.Equal(t, "rtmp_conns{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 1\n"+ - "rtmp_conns_inbound_bytes{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 123\n"+ - "rtmp_conns_outbound_bytes{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 456\n"+ - "rtmp_conns_outbound_frames_discarded{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 12\n"+ - "rtmp_conns_bytes_received{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 123\n"+ - "rtmp_conns_bytes_sent{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 456\n"+ - "rtmps_conns{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 1\n"+ - "rtmps_conns_inbound_bytes{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 123\n"+ - "rtmps_conns_outbound_bytes{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 456\n"+ - "rtmps_conns_outbound_frames_discarded{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 12\n"+ - "rtmps_conns_bytes_received{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 123\n"+ - "rtmps_conns_bytes_sent{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ - "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 456\n", + require.Equal(t, + "# RTMP connections\n"+ + "rtmp_conns{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 1\n"+ + "rtmp_conns_inbound_bytes{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 123\n"+ + "rtmp_conns_outbound_bytes{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 456\n"+ + "rtmp_conns_outbound_frames_discarded{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 12\n"+ + "\n"+ + "# RTMP connections (deprecated)\n"+ + "rtmp_conns_bytes_received{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 123\n"+ + "rtmp_conns_bytes_sent{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 456\n"+ + "\n"+ + "# RTMPS connections\n"+ + "rtmps_conns{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 1\n"+ + "rtmps_conns_inbound_bytes{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 123\n"+ + "rtmps_conns_outbound_bytes{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 456\n"+ + "rtmps_conns_outbound_frames_discarded{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 12\n"+ + "\n"+ + "# RTMPS connections (deprecated)\n"+ + "rtmps_conns_bytes_received{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 123\n"+ + "rtmps_conns_bytes_sent{id=\"9a07afe4-fc07-4c9b-be6e-6255720c36d0\",path=\"mypath\","+ + "remoteAddr=\"3.3.3.3:5678\",state=\"read\"} 456\n\n", string(byts)) case "webrtc_sessions": require.Equal(t, - "webrtc_sessions{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ + "# WebRTC sessions\n"+ + "webrtc_sessions{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 1\n"+ "webrtc_sessions_inbound_bytes{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 123\n"+ @@ -1398,6 +1498,8 @@ func TestFilterByType(t *testing.T) { "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 456\n"+ "webrtc_sessions_outbound_frames_discarded{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 12\n"+ + "\n"+ + "# WebRTC sessions (deprecated)\n"+ "webrtc_sessions_bytes_received{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 123\n"+ "webrtc_sessions_bytes_sent{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ @@ -1413,7 +1515,7 @@ func TestFilterByType(t *testing.T) { "webrtc_sessions_rtcp_packets_received{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 123\n"+ "webrtc_sessions_rtcp_packets_sent{id=\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",path=\"mypath\","+ - "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 456\n", + "remoteAddr=\"127.0.0.1:3455\",state=\"read\"} 456\n\n", string(byts)) } })