@hadesz/monitor
Version:
A complete server monitoring system with agents, server and dashboard
94 lines (84 loc) • 2.35 kB
JavaScript
const config = require("config");
class ConfigManager {
static getAgentConfig(customConfig = {}) {
try {
const defaults = config.has("agent") ? config.get("agent") : {};
return { ...defaults, ...customConfig };
} catch (error) {
console.warn("Using default agent config due to error:", error.message);
return {
defaultInterval: 10000,
maxRetries: 3,
retryDelay: 2000,
...customConfig
};
}
}
static getServerConfig(customConfig = {}) {
try {
const defaults = config.has("server") ? config.get("server") : {};
return { ...defaults, ...customConfig };
} catch (error) {
console.warn("Using default server config due to error:", error.message);
return {
httpPort: 3100,
udpPort: 41234,
dashboardPort: 4000,
...customConfig
};
}
}
static getDatabaseConfig(customConfig = {}) {
try {
const defaults = config.has("database") ? config.get("database") : {};
return { ...defaults, ...customConfig };
} catch (error) {
console.warn(
"Using default database config due to error:",
error.message
);
return {
mongoUri: "mongodb://localhost:27017/monitoring",
collection: "metrics",
dataRetentionDays: 30,
...customConfig
};
}
}
static getDashboardConfig(customConfig = {}) {
try {
const defaults = config.has("dashboard") ? config.get("dashboard") : {};
return { ...defaults, ...customConfig };
} catch (error) {
console.warn(
"Using default dashboard config due to error:",
error.message
);
return {
port: 4000,
refreshInterval: 10000,
...customConfig
};
}
}
// 检查配置是否完整
static validateConfig() {
const requiredSections = ["agent", "server", "database", "dashboard"];
const missingSections = [];
for (const section of requiredSections) {
if (!config.has(section)) {
missingSections.push(section);
}
}
if (missingSections.length > 0) {
console.warn(
`Missing config sections: ${missingSections.join(
", "
)}. Using defaults.`
);
return false;
}
return true;
}
}
module.exports = ConfigManager;