openvibers/openvibe.community Commits
Community: telemetry flushes each minute and keeps 14 days (#85)
Changes
@@@ -31,9 +31,9 @@ const { createPgTelemetrySink, startTelemetryRetention } = require('openvibe-sdk});server.keepAliveTimeout = 65_000;// Request telemetry (openvibe-sdk/service, plan T1): one aggregated sample per route template, method and status-- // class each 15 s, stored in this service's telemetry_samples table; rows older than 30 days go daily.-- telemetry.init({ service: 'community', sink: createPgTelemetrySink({ db: require('./db').getDb(), log: console }), skipPrefixes: ['/shared'] });-- const telemetryRetention = startTelemetryRetention({ db: require('./db').getDb(), log: console });++ // class each minute, stored in this service's telemetry_samples table; rows older than 14 days go daily.++ telemetry.init({ service: 'community', sink: createPgTelemetrySink({ db: require('./db').getDb(), log: console }), skipPrefixes: ['/shared'], intervalMs: 60_000 });++ const telemetryRetention = startTelemetryRetention({ db: require('./db').getDb(), log: console, olderThanDays: 14 });// Subscribe Pulse to public activity at Events (idempotent; off without EVENTS_URL / COMMUNITY_EVENTS_SECRET).let subscriptions = null;try {@@@ -3,7 +3,7 @@* Request telemetry (openvibe-sdk/service, plan T1 step 10): app.js mounts the process-wide telemetryMiddleware (a no-op* until init), server/index.js calls telemetry.init() for service 'community' with a PostgreSQL sink, starts the 30-day* retention and flushes on stop. Five hits on one route flush as ONE aggregated http.request sample; /metrics and-- * /shared make none; the retention deletes only rows older than 30 days.++ * /shared make none; the retention deletes only rows older than 14 days.*/const assert = require('assert');const fs = require('fs');@@@ -38,9 +38,9 @@ const { boot } = require('./helpers/app');const db = t.db;await db.query('DELETE FROM telemetry_samples');const insert = (days) => db.query("INSERT INTO telemetry_samples (at, service, operation) VALUES (now() - make_interval(days => $1), 'community', 'http.request')", [days]);-- await insert(45);++ await insert(20);await insert(1);-- assert.strictEqual(await pruneTelemetry({ db }), 1);++ assert.strictEqual(await pruneTelemetry({ db, olderThanDays: 14 }), 1);assert.strictEqual((await db.query('SELECT count(*)::int AS n FROM telemetry_samples')).rows[0].n, 1);console.log('telemetry ok');} finally {
@@ -31,9 +31,9 @@ const { createPgTelemetrySink, startTelemetryRetention } = require('openvibe-sdk
@@ -31,9 +31,9 @@ const { createPgTelemetrySink, startTelemetryRetention } = require('openvibe-sdk
});
});
server.keepAliveTimeout = 65_000;
server.keepAliveTimeout = 65_000;
// Request telemetry (openvibe-sdk/service, plan T1): one aggregated sample per route template, method and status
// Request telemetry (openvibe-sdk/service, plan T1): one aggregated sample per route template, method and status
- // class each 15 s, stored in this service's telemetry_samples table; rows older than 30 days go daily.
- telemetry.init({ service: 'community', sink: createPgTelemetrySink({ db: require('./db').getDb(), log: console }), skipPrefixes: ['/shared'] });
- const telemetryRetention = startTelemetryRetention({ db: require('./db').getDb(), log: console });
+ // class each minute, stored in this service's telemetry_samples table; rows older than 14 days go daily.
+ telemetry.init({ service: 'community', sink: createPgTelemetrySink({ db: require('./db').getDb(), log: console }), skipPrefixes: ['/shared'], intervalMs: 60_000 });
+ const telemetryRetention = startTelemetryRetention({ db: require('./db').getDb(), log: console, olderThanDays: 14 });
// Subscribe Pulse to public activity at Events (idempotent; off without EVENTS_URL / COMMUNITY_EVENTS_SECRET).
// Subscribe Pulse to public activity at Events (idempotent; off without EVENTS_URL / COMMUNITY_EVENTS_SECRET).
let subscriptions = null;
let subscriptions = null;
try {
try {
@@ -3,7 +3,7 @@
@@ -3,7 +3,7 @@
* Request telemetry (openvibe-sdk/service, plan T1 step 10): app.js mounts the process-wide telemetryMiddleware (a no-op
* Request telemetry (openvibe-sdk/service, plan T1 step 10): app.js mounts the process-wide telemetryMiddleware (a no-op
* until init), server/index.js calls telemetry.init() for service 'community' with a PostgreSQL sink, starts the 30-day
* until init), server/index.js calls telemetry.init() for service 'community' with a PostgreSQL sink, starts the 30-day
* retention and flushes on stop. Five hits on one route flush as ONE aggregated http.request sample; /metrics and
* retention and flushes on stop. Five hits on one route flush as ONE aggregated http.request sample; /metrics and
- * /shared make none; the retention deletes only rows older than 30 days.
+ * /shared make none; the retention deletes only rows older than 14 days.
*/
*/
const assert = require('assert');
const assert = require('assert');
const fs = require('fs');
const fs = require('fs');
@@ -38,9 +38,9 @@ const { boot } = require('./helpers/app');
@@ -38,9 +38,9 @@ const { boot } = require('./helpers/app');
const db = t.db;
const db = t.db;
await db.query('DELETE FROM telemetry_samples');
await db.query('DELETE FROM telemetry_samples');
const insert = (days) => db.query("INSERT INTO telemetry_samples (at, service, operation) VALUES (now() - make_interval(days => $1), 'community', 'http.request')", [days]);
const insert = (days) => db.query("INSERT INTO telemetry_samples (at, service, operation) VALUES (now() - make_interval(days => $1), 'community', 'http.request')", [days]);
- await insert(45);
+ await insert(20);
await insert(1);
await insert(1);
- assert.strictEqual(await pruneTelemetry({ db }), 1);
+ assert.strictEqual(await pruneTelemetry({ db, olderThanDays: 14 }), 1);
assert.strictEqual((await db.query('SELECT count(*)::int AS n FROM telemetry_samples')).rows[0].n, 1);
assert.strictEqual((await db.query('SELECT count(*)::int AS n FROM telemetry_samples')).rows[0].n, 1);
console.log('telemetry ok');
console.log('telemetry ok');
} finally {
} finally {