rum-diary-endpoint

0.0.3 • Public • Published

rum-diary-endpoint

Build Status

NodeJS endpoint to listen for rum-diary-js-client statistics and send them to one or more collectors

Installation

  1. Install via npm: npm install rum-diary-endpoint
  2. Install via github: git clone https://github.com/shane-tomlinson/rum-diary-endpoint.git

Connect/Express middleware

  1. Include rum-diary-endpoint.
  2. Initialize one or more collectors.
  3. Create a middleware, configuring it with the endpoint path and a list of collectors.
  4. Register the middleware with the application.
const rumDiaryEndpoint = require('rum-diary-endpoint');
 
const consoleCollector = new rumDiaryEndpoint.collectors.Console();
 
const middleware = rumDiaryEndpoint.setup({
  endpoint: '/metrics',
  collectors: [ consoleCollector ]
});
 
app.use(middleware);

Advanced Use

Custom collectors

A collector is an object that must expose three functions:

  • write - write results to the collector.
  • flush - flush any cached data to the collector.
  • destroy - the collector is about to be destroyed.
const metricsDatabase = setupMetricsDatabase();
 
const metricsDatabaseCollector = {
  write: function (result) {
    return metricsDatabase.create(result);
  },
 
  flush: function () {
    return metricsDatabase.persist();
  },
 
  destroy: function () {
    return metricsDatabase.close();
  }
};
 
const middleware = rumDiaryEndpoint.setup({
  endpoint: '/metrics',
  collectors: [ metricsDatabaseCollector ]
});
 
app.use(middleware);

Send results to rum-diary.org

const rumDiaryEndpoint = require('rum-diary-endpoint');
 
const httpCollector = new rumDiaryEndpoint.collectors.Http({
  collectorUrl: 'https://rum-diary.org/metrics'
});
 
const middleware = rumDiaryEndpoint.setup({
  endpoint: '/metrics',
  collectors: [ httpCollector ]
});
 
app.use(middleware);

Direct use

Composite

The Composite can be used directly.

const rumDiaryEndpoint = require('rum-diary-endpoint');
const RumDiaryComposite = rumDiaryEndpoint.Composite;
const consoleCollector = new rumDiaryEndpoint.collectors.Console();
 
 
const metricsCollectors = new RumDiaryComposite({
  collectors: [ consoleCollector ]
});
 
...
 
app.post('/metrics', function (req, next) {
  var cleanMetrics = scrubMetrics(req.body);
  metricsCollectors.write(cleanMetrics);
});

Handler

If custom route handling is needed, the Handler object can be instantiated and initialized independently.

const rumDiaryEndpoint = require('rum-diary-endpoint');
const RumDiaryHandler = rumDiaryEndpoint.Handler;
const consoleCollector = new rumDiaryEndpoint.collectors.Console();
 
 
const handler = new RumDiaryHandler({
  collectors: [ consoleCollector ]
});
 
...
 
app.post('/metrics', handler);

Prerequisites:

Get Involved:

Author:

License:

This software is available under version 2.0 of the MPL:

https://www.mozilla.org/MPL/

Package Sidebar

Install

npm i rum-diary-endpoint

Weekly Downloads

0

Version

0.0.3

License

MPL2.0

Last publish

Collaborators

  • stomlinson