40 lines
1.0 KiB
JavaScript
40 lines
1.0 KiB
JavaScript
'use strict';
|
|
|
|
const { MeterProvider } = require('@opentelemetry/metrics');
|
|
const { PrometheusExporter } = require('@opentelemetry/exporter-prometheus');
|
|
|
|
const exporter = new PrometheusExporter(
|
|
{
|
|
startServer: true,
|
|
},
|
|
() => {
|
|
console.log('prometheus scrape endpoint: http://localhost:9464/metrics');
|
|
},
|
|
);
|
|
|
|
const meter = new MeterProvider({
|
|
exporter,
|
|
interval: 1000,
|
|
}).getMeter('example-prometheus');
|
|
|
|
// Monotonic counters can only be increased.
|
|
const monotonicCounter = meter.createCounter('monotonic_counter', {
|
|
monotonic: true,
|
|
labelKeys: ['pid'],
|
|
description: 'Example of a monotonic counter',
|
|
});
|
|
|
|
// Non-monotonic counters can be increased or decreased.
|
|
const nonMonotonicCounter = meter.createCounter('non_monotonic_counter', {
|
|
monotonic: false,
|
|
labelKeys: ['pid'],
|
|
description: 'Example of a non-monotonic counter',
|
|
});
|
|
|
|
setInterval(() => {
|
|
const labels = meter.labels({ pid: process.pid });
|
|
|
|
monotonicCounter.bind(labels).add(1);
|
|
nonMonotonicCounter.bind(labels).add(Math.random() > 0.5 ? 1 : -1);
|
|
}, 1000);
|