Telemetry
Source:
packages/core/src/core/monitoring/telemetry.ts
Telemetry provides per-second performance snapshots during generation runs. Enabled via RunOptions.debug: true.
TelemetryCollector
Internal class that captures timing, throughput, and user progress data. Created automatically when debug: true is set in RunOptions.
typescript
class TelemetryCollector {
constructor(lanes: number);
start(): void;
stop(): void;
recordEvent(): void;
recordUserStarted(): void;
recordUserCompleted(): void;
recordValidationSummary(summary: ValidationSummary): void;
getReport(): TelemetryReport;
async saveReport(filePath: string): Promise<void>;
}start()begins a 1-second interval timer for snapshot capturestop()clears the timer and captures a final snapshotsaveReport()writes the report as pretty-printed JSON to disk
typescript
import { generate, InMemoryAdapter } from '@synode/core';
await generate(journey, {
users: 5000,
lanes: 4,
adapter: new InMemoryAdapter(),
debug: true,
telemetryPath: './perf-report.json',
});
// Telemetry saved automatically to ./perf-report.jsonTelemetryReport
Complete report for a generation run.
typescript
interface TelemetryReport {
startTime: string; // ISO 8601
endTime: string; // ISO 8601
durationMs: number;
totalUsers: number;
totalEvents: number;
lanes: number;
averageEventsPerSecond: number;
activeUsers: number;
completedUsers: number;
eventsValidated: number;
eventsValid: number;
eventsInvalid: number;
validationErrors: TelemetryValidationError[];
snapshots: TelemetrySnapshot[];
}TelemetrySnapshot
Per-second data point captured during generation.
typescript
interface TelemetrySnapshot {
timestamp: string; // ISO 8601
elapsedMs: number;
eventsPerSecond: number;
totalEvents: number;
activeUsers: number;
completedUsers: number;
lanes: number;
}TelemetryValidationError
A single validation error entry recorded in the telemetry report.
typescript
interface TelemetryValidationError {
eventName: string;
path: string;
message: string;
}Validation errors are capped at 50 entries per report. Errors are merged from ValidationSummary via recordValidationSummary().
