mirror of
https://github.com/livekit/livekit.git
synced 2026-05-14 18:25:24 +00:00
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:
@@ -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)
|
||||
}()
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user