@hadesz/monitor
Version:
A complete server monitoring system with agents, server and dashboard
81 lines (77 loc) • 1.67 kB
JavaScript
/*
* @Author: HadesZ
* @Date: 2025-11-03 12:11:12
* @LastEditors: HadesZ
* @LastEditTime: 2025-11-03 12:11:18
* @Description:
*/
const mongoose = require("mongoose");
const metricSchema = new mongoose.Schema(
{
agentId: {
type: String,
required: true,
index: true
},
timestamp: {
type: Date,
required: true,
index: true
},
// CPU 相关
cpu: {
usage: Number,
user: Number,
system: Number,
idle: Number,
load1: Number,
load5: Number,
load15: Number
},
// 内存相关
memory: {
total: Number,
free: Number,
used: Number,
usage: Number,
cached: Number,
buffered: Number
},
// 磁盘相关
disk: {
total: Number,
free: Number,
used: Number,
usage: Number,
read: Number, // 读取速率 KB/s
write: Number // 写入速率 KB/s
},
// 网络相关
network: {
in: Number, // 接收速率 KB/s
out: Number // 发送速率 KB/s
},
// 进程相关
processes: {
total: Number,
running: Number,
sleeping: Number
},
// 系统状态
uptime: Number,
// Docker 容器统计(如果运行在容器中)
docker: {
containers: Number,
running: Number,
paused: Number,
stopped: Number
}
},
{
timestamps: true
}
);
// 创建复合索引提高查询性能
metricSchema.index({ agentId: 1, timestamp: -1 });
metricSchema.index({ timestamp: 1 }, { expireAfterSeconds: 30 * 24 * 60 * 60 }); // 30天自动过期
module.exports = mongoose.model("Metric", metricSchema);