Add sdk, participant_kind to pub sub metrics (#3023)

* exclude go client from track publication metric

* add sdk,participant_kind lables

* fix test
This commit is contained in:
cnderrauber
2024-09-19 02:42:47 +00:00
committed by GitHub
parent 3ecd03fa31
commit 978db00034
4 changed files with 21 additions and 13 deletions
+1 -6
View File
@@ -2131,12 +2131,7 @@ func (p *ParticipantImpl) mediaTrackReceived(track *webrtc.TrackRemote, rtpRecei
"cost", pubTime.Milliseconds(),
)
// SIP client relies on the remote peer's media packet to publish the track and
// sometimes it costs 10s to arrive after handshake.
// So we ignore the publish time for SIP client to avoid the high value in the metrics.
if p.Kind() != livekit.ParticipantInfo_SIP {
prometheus.RecordPublishTime(mt.Source(), mt.Kind(), pubTime)
}
prometheus.RecordPublishTime(mt.Source(), mt.Kind(), pubTime, p.GetClientInfo().GetSdk(), p.Kind())
p.handleTrackPublished(mt)
}()
}
+2 -1
View File
@@ -996,7 +996,8 @@ func (s *trackSubscription) maybeRecordSuccess(ts telemetry.TelemetryService, pI
d := time.Since(s.createAt)
s.logger.Debugw("track subscribed", "cost", d.Milliseconds())
prometheus.RecordSubscribeTime(mediaTrack.Source(), mediaTrack.Kind(), d)
subscriber := subTrack.Subscriber()
prometheus.RecordSubscribeTime(mediaTrack.Source(), mediaTrack.Kind(), d, subscriber.GetClientInfo().GetSdk(), subscriber.Kind())
eventSent := s.eventSent.Swap(true)
+5 -1
View File
@@ -461,6 +461,7 @@ func newTestSubscriptionManagerWithParams(t *testing.T, params testSubscriptionP
p.CanSubscribeReturns(true)
p.IDReturns("subID")
p.IdentityReturns("sub")
p.KindReturns(livekit.ParticipantInfo_STANDARD)
return NewSubscriptionManager(SubscriptionManagerParams{
Participant: p,
Logger: logger.GetLogger(),
@@ -517,7 +518,10 @@ func (t *testResolver) Resolve(identity livekit.ParticipantIdentity, trackID liv
st.IDReturns(trackID)
st.PublisherIDReturns(t.pubID)
st.PublisherIdentityReturns(t.pubIdentity)
mt.AddSubscriberReturns(st, nil)
mt.AddSubscriberCalls(func(sub types.LocalParticipant) (types.SubscribedTrack, error) {
st.SubscriberReturns(sub)
return st, nil
})
st.MediaTrackReturns(mt)
res.Track = mt
}
+13 -5
View File
@@ -115,7 +115,7 @@ func initRoomStats(nodeID string, nodeType livekit.NodeType) {
Name: "ms",
ConstLabels: prometheus.Labels{"node_id": nodeID, "node_type": nodeType.String()},
Buckets: []float64{100, 200, 500, 700, 1000, 5000, 10000},
}, promStreamLabels)
}, append(promStreamLabels, "sdk", "kind"))
prometheus.MustRegister(promRoomCurrent)
prometheus.MustRegister(promRoomDuration)
@@ -172,12 +172,20 @@ func AddPublishSuccess(kind string) {
promTrackPublishCounter.WithLabelValues(kind, "success").Inc()
}
func RecordPublishTime(source livekit.TrackSource, trackType livekit.TrackType, d time.Duration) {
promPubSubTime.WithLabelValues("publish", source.String(), trackType.String()).Observe(float64(d.Milliseconds()))
func RecordPublishTime(source livekit.TrackSource, trackType livekit.TrackType, d time.Duration, sdk livekit.ClientInfo_SDK, kind livekit.ParticipantInfo_Kind) {
recordPubSubTime(true, source, trackType, d, sdk, kind)
}
func RecordSubscribeTime(source livekit.TrackSource, trackType livekit.TrackType, d time.Duration) {
promPubSubTime.WithLabelValues("subscribe", source.String(), trackType.String()).Observe(float64(d.Milliseconds()))
func RecordSubscribeTime(source livekit.TrackSource, trackType livekit.TrackType, d time.Duration, sdk livekit.ClientInfo_SDK, kind livekit.ParticipantInfo_Kind) {
recordPubSubTime(false, source, trackType, d, sdk, kind)
}
func recordPubSubTime(isPublish bool, source livekit.TrackSource, trackType livekit.TrackType, d time.Duration, sdk livekit.ClientInfo_SDK, kind livekit.ParticipantInfo_Kind) {
direction := "subscribe"
if isPublish {
direction = "publish"
}
promPubSubTime.WithLabelValues(direction, source.String(), trackType.String(), sdk.String(), kind.String()).Observe(float64(d.Milliseconds()))
}
func RecordTrackSubscribeSuccess(kind string) {