We collect metrics from each endpoint in three phases
- before the conference (pre-call)
- during the conference (in-call)
- after the conference (post-call)
Before the call, we may run pre-call tests also known as smart connectivity tests. Basically it runs a speed test against our TURN servers or your TURN servers. You can read more about the tests at: [1,2].
During the call, we collect conference metrics, the following metrics are collected automatically:
- WebRTC-Stats API
- Session Description Protocol
- MediaStreamExtensions API
- Battery API
- User Timing API
- Performance Timeline API
- Wifi stats on electron if the appropriate npm package is used
- also rely heavily on DomHiResTimestamps and WebCrypto APIs
callstats also collects browser console logs, i.e., if the developer sends these logs via appErrorLog API.
At the end of the call, you can ask the enduser to provide feedback this can be a thumbs up or down, a three star or 5 star raring. We have a flexible API that lets you captures the information for audio, video, overall rating in addition to textual feedback comment.
When the call ends, we summarise the conference metrics at several levels, namely, for each connection, for each user, and then finally at the conference level. We aggregate the metrics across all conferences to provide meaningful service level statistics. The summary metrics visualise:
- Start and stop time for the conference
- Participants and connection information
- Events timeline for each participant (joining, leaving, muting, pausing, disruptions)
- Plots of transport metrics (variation over time)
- Media quality metric per participant
Further, you can run aggregation queries on the summary data, which results in Service Level Statistics. The common aggregations are:
- Number of calls (successful, failed, relayed)
- Duration of calls
- Average setup time, churn
- Quality of multimedia experience based on transport and multimedia metrics
- User-reported feedback
You can read more about the importance of end-to-end monitoring on our blog: Why End-to-end Monitoring For WebRTC Is Critical.