Skip to content

Dashboard processing server

Stian Håklev edited this page Apr 25, 2018 · 1 revision

With the new approach to dashboards, nothing has changed for a single-server setup of FROG, whether in production or development mode. However, for multi-server deployments, it is imperative that one server is designated the dashboard processor, and all the other servers are told about the processing server.

The processing server should have the following setting in its setting.json:

{
  "dashboardServer": true
}

The other servers should have the following parameters in their setting.json file:

  "sendLogsToExternalDashboardServer": true,
  "public": {
    "dashboard_server_url": "ws://localhost:5000"
  }

The dashboard_server_url should be the public address of the log processor. If the Meteor nodes are behind SSL, the log processor also needs to be proxied (ie. wss).

All the servers will already be connected to the same Mongo and Redis databases, so no change is necessary in the case of the setup. If the Redis server is colocated with one of the Meteor servers, it should be with the log processor.

In a distributed fashion, a new log entry is sent to the Meteor server connected to a given client. That server writes the log message to Mongo, and then adds them to a Redis queue.

The log processor continuously listens to the Redis queue and processes all incoming log messages.

Clients (teacher or student with ac-dash) automatically open a websocket to the dashboard_server_url whenever a dashboard is required (if one is not open already), logs in using the same credentials as are used with the main server, and subscribe to the dashboard data.