Skip to content

DISIC/jitsi-meet-metrics-collector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

What is jitsi-meet-metrics-collector ?

jitsi-meet-metrics-collector is a Node.js module that serves as a middleware for Express.js. It collects browser metrics and stores them in MongoDB database.

How does it work ?

once the user opens a web conference the jmmc_client.js file is uploaded and appended to the client script,the first post request send user's meta-data, the second sends metrics data (connectionquality,bandwidth...),and each 30 seconds after that it sends just the updated (changed)metrics.

sequenceDiagram
Browser->>jitsi-meet-metrics-collector: Get the JS file that sends metrics from /getClient
jitsi-meet-metrics-collector->>Browser: Send client JS file
loop Sending requests every X seconds (Default: 30s)
    Browser->>jitsi-meet-metrics-collector: Send metrics
    jitsi-meet-metrics-collector->>jitsi-meet-metrics-collector: Verify and Validate metrics
    jitsi-meet-metrics-collector->>MongoDB: Store metrics
    MongoDB->>jitsi-meet-metrics-collector: Send confirmation
    jitsi-meet-metrics-collector->>Browser: Send confirmation
        
end
Loading

example :

  • the fist request. the script sends the browser, the operating system and pid
  • the second request it sends metrics data containing for exemple cq (stands for connexion quality)
  • after that if the connexion quality change it sends metrics with the changed data if not it sends just the updated data without cq.

Using jitsi-meet-metrics-collector

Requirements

- Node > v16.14.2
- Jitsi > v1.0.5913

Express.js implementation

In order to use jitsi-meet-metrics-collector, it needs to be imported into Express.js as follows :

var express = require('express');
var app = express();
var mongoose = require("mongoose")
var jitsiMeetMetricsCollector = require("@apitech/jitsi-meet-metrics-collector");

var config = {
    authorizedRegions : ["REGION1", "REGION2"]
}

app.use('/jitsi-meet-metrics-collector',jitsiMeetMetricsCollector({
    confPattern: new RegExp('^(?=(?:[a-zA-Z0-9]*[a-zA-Z]))(?=(?:[a-zA-Z0-9]*[0-9]){3})[a-zA-Z0-9]{10,}$'),
    mongoose : mongoose,
    authorizedRegions: config.authorizedRegions,
    jmmcCollection: 'metrics-collector'
}));

module.exports = app;

lookup ./test/app/appTest.js for a real example