NodeJS endpoint to listen for rum-diary-js-client statistics and send them to one or more collectors
- Install via npm:
npm install rum-diary-endpoint
- Install via github:
git clone https://github.com/shane-tomlinson/rum-diary-endpoint.git
- Include
rum-diary-endpoint
. - Initialize one or more collectors.
- Create a middleware, configuring it with the endpoint path and a list of collectors.
- 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);
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);
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);
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);
});
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);
- nodejs >= 0.10.0
- Shane Tomlinson
- shane@shanetomlinson.com
- stomlinson@mozilla.com
- set117@yahoo.com
- https://shanetomlinson.com
- https://github.com/shane-tomlinson
- @shane_tomlinson
This software is available under version 2.0 of the MPL: