Exot Measurements is an in-memory time series database with optional persistent storage. It serves as a core component of the Exot Inspector for storing metrics. This module is compatible with any JavaScript runtime, including Node.js, Bun, Deno, and web browsers.
- Fast, in-memory time-series aggregations
- Low memory footprint
- Optional persistance
import { Measurements } from '@exotjs/measurements';
import { MemoryStore } from '@exotjs/measurements/store';
const measurements = new Measurements({
measurements: [{
interval: 5000,
key: 'temperature',
type: 'aggregate',
}],
store: new MemoryStore(),
});
const aggregate = measurements.aggregate('temperature');
aggregate.push([51.7, 53.6, 49.2]);
const { avg, count, first, last, max, min, sum } = aggregate.value;
Instantiate a new Measurements instance.
new Measurements({
measurements: [{
interval: 5000,
key: 'temperature',
type: 'aggregate',
}],
store: new MemoryStore(),
})
Available options:
measurements: MeasurementConfig[]
-
store: Store
(required)
Return an instance of the AggregateMeasurement for the given key, time, and label.
Returns an exported measurements with configurations and measurements.
Available options:
downsample: number
endTime: number
fill: boolean
keys: string[]
startTime: number
Import data returned from the .export()
method.
Push new values to multiple measurements.
measurements.push({
temperature: [{
label: 'hdd1',
values: [43.2, 48.9],
}],
});
Clear in-memory measurements and the underlying store.
Return an instance of the SumMeasurement for the given key, time, and label.
Return an instance of the ValueMeasurement for the given key, time, and label.
Available measurement types:
aggregate
sum
value
Stores an aggregate object.
interface AggregateMeasurement {
value: {
avg: null | number;
count: number;
first: null | number;
last: null | number;
min: null | number;
max: null | number;
sum: number;
};
}
Stores a single numeric value representing the sum of the values.
interface SumMeasurement {
value: number;
}
Stores the last pushed value.
interface ValueMeasurement {
value: number;
}
MIT