101 lines
2.3 KiB
TypeScript
101 lines
2.3 KiB
TypeScript
import client from 'prom-client';
|
|
|
|
import { botBuffer, db, eventBuffer, profileBuffer } from '@openpanel/db';
|
|
import { cronQueue, eventsQueue, sessionsQueue } from '@openpanel/queue';
|
|
|
|
const Registry = client.Registry;
|
|
|
|
export const register = new Registry();
|
|
|
|
const queues = [eventsQueue, sessionsQueue, cronQueue];
|
|
|
|
queues.forEach((queue) => {
|
|
register.registerMetric(
|
|
new client.Gauge({
|
|
name: `${queue.name}_active_count`,
|
|
help: 'Active count',
|
|
async collect() {
|
|
const metric = await queue.getActiveCount();
|
|
this.set(metric);
|
|
},
|
|
}),
|
|
);
|
|
|
|
register.registerMetric(
|
|
new client.Gauge({
|
|
name: `${queue.name}_delayed_count`,
|
|
help: 'Delayed count',
|
|
async collect() {
|
|
const metric = await queue.getDelayedCount();
|
|
this.set(metric);
|
|
},
|
|
}),
|
|
);
|
|
|
|
register.registerMetric(
|
|
new client.Gauge({
|
|
name: `${queue.name}_failed_count`,
|
|
help: 'Failed count',
|
|
async collect() {
|
|
const metric = await queue.getFailedCount();
|
|
this.set(metric);
|
|
},
|
|
}),
|
|
);
|
|
|
|
register.registerMetric(
|
|
new client.Gauge({
|
|
name: `${queue.name}_completed_count`,
|
|
help: 'Completed count',
|
|
async collect() {
|
|
const metric = await queue.getCompletedCount();
|
|
this.set(metric);
|
|
},
|
|
}),
|
|
);
|
|
|
|
register.registerMetric(
|
|
new client.Gauge({
|
|
name: `${queue.name}_waiting_count`,
|
|
help: 'Waiting count',
|
|
async collect() {
|
|
const metric = await queue.getWaitingCount();
|
|
this.set(metric);
|
|
},
|
|
}),
|
|
);
|
|
});
|
|
|
|
register.registerMetric(
|
|
new client.Gauge({
|
|
name: `buffer_${eventBuffer.name}_count`,
|
|
help: 'Number of unprocessed events',
|
|
async collect() {
|
|
const metric = await eventBuffer.getBufferSize();
|
|
this.set(metric);
|
|
},
|
|
}),
|
|
);
|
|
|
|
register.registerMetric(
|
|
new client.Gauge({
|
|
name: `buffer_${profileBuffer.name}_count`,
|
|
help: 'Number of unprocessed profiles',
|
|
async collect() {
|
|
const metric = await profileBuffer.getBufferSize();
|
|
this.set(metric);
|
|
},
|
|
}),
|
|
);
|
|
|
|
register.registerMetric(
|
|
new client.Gauge({
|
|
name: `buffer_${botBuffer.name}_count`,
|
|
help: 'Number of unprocessed bot events',
|
|
async collect() {
|
|
const metric = await botBuffer.getBufferSize();
|
|
this.set(metric);
|
|
},
|
|
}),
|
|
);
|