Telemetry Producers Examples
These examples show how to register runtime and host metrics with a telemetry component and emit values during a polling cycle. Each snippet uses a small in-memory component so you can see how metric registration and collection fit together.
ProcessMetricsProducer
import { ProcessMetricsProducer } from '@twin.org/telemetry-producers';
const producer = new ProcessMetricsProducer({
telemetryComponentType: 'telemetry',
maxHistory: 120
});
console.log(producer.className()); // ProcessMetricsProducer
await producer.register();
const registeredMetrics = await telemetryComponent.query(MetricType.Gauge);
console.log(registeredMetrics.entities.map(metric => metric.id)); // ["process_memory_rss_bytes", "process_memory_heap_used_bytes", "process_memory_heap_total_bytes", "process_uptime_seconds"]
await producer.collect();
const uptimeValues = await telemetryComponent.queryValues('process_uptime_seconds');
console.log(uptimeValues.entities.length); // 1
SystemMetricsProducer
import { SystemMetricsProducer } from '@twin.org/telemetry-producers';
const producer = new SystemMetricsProducer({
telemetryComponentType: 'telemetry',
maxHistory: 288
});
console.log(producer.className()); // SystemMetricsProducer
await producer.register();
const registeredMetrics = await telemetryComponent.query(MetricType.Gauge);
console.log(registeredMetrics.entities.map(metric => metric.id)); // ["system_cpu_usage_percent", "system_memory_total_bytes", "system_memory_used_bytes", "system_memory_free_bytes", "system_memory_usage_percent", "system_uptime_seconds"]
await producer.collect();
const cpuValues = await telemetryComponent.queryValues('system_cpu_usage_percent');
console.log(cpuValues.entities.length); // 1