mirror of
https://github.com/ZeroCatDev/ClassworksKV.git
synced 2025-12-07 13:03:09 +00:00
49 lines
1.5 KiB
JavaScript
49 lines
1.5 KiB
JavaScript
import client from 'prom-client';
|
|
|
|
// 创建自定义注册表(不包含默认指标)
|
|
const register = new client.Registry();
|
|
|
|
// 当前在线设备数(连接了 SocketIO 的设备)
|
|
export const onlineDevicesGauge = new client.Gauge({
|
|
name: 'classworks_online_devices_total',
|
|
help: 'Total number of online devices (connected via SocketIO)',
|
|
registers: [register],
|
|
});
|
|
|
|
// 已注册设备总数
|
|
export const registeredDevicesTotal = new client.Gauge({
|
|
name: 'classworks_registered_devices_total',
|
|
help: 'Total number of registered devices',
|
|
registers: [register],
|
|
});
|
|
|
|
// 已创建键总数(不区分设备)
|
|
export const keysTotal = new client.Gauge({
|
|
name: 'classworks_keys_total',
|
|
help: 'Total number of keys across all devices',
|
|
registers: [register],
|
|
});
|
|
|
|
// 初始化指标数据
|
|
export async function initializeMetrics() {
|
|
try {
|
|
const {PrismaClient} = await import('@prisma/client');
|
|
const prisma = new PrismaClient();
|
|
|
|
// 获取已注册设备总数
|
|
const deviceCount = await prisma.device.count();
|
|
registeredDevicesTotal.set(deviceCount);
|
|
|
|
// 获取已创建键总数
|
|
const keyCount = await prisma.kVStore.count();
|
|
keysTotal.set(keyCount);
|
|
|
|
await prisma.$disconnect();
|
|
console.log('Prometheus metrics initialized - Devices:', deviceCount, 'Keys:', keyCount);
|
|
} catch (error) {
|
|
console.error('Failed to initialize metrics:', error);
|
|
}
|
|
}
|
|
|
|
// 导出注册表用于 /metrics 端点
|
|
export {register}; |