Refactor MonitorInfrastructure class and extract monitorServerMetrics method

This commit is contained in:
Simon Larsen
2024-04-08 14:06:54 +01:00
parent 1401daab06
commit 3c022e30ea
2 changed files with 48 additions and 32 deletions

View File

@@ -59,11 +59,13 @@ yargs
startArguments.push('--oneuptime-url=https://oneuptime.com');
}
// before we run as daemon, we need to verify if the credentials are correc
daemon = spawn('tsx', startArguments, {
detached: true,
stdio: 'ignore'
});
daemon.unref();
Logger.info('OneUptime Infrastructure Agent started as daemon');
})

View File

@@ -16,38 +16,52 @@ export default class MonitorInfrastructure {
runOnStartup: true,
},
runFunction: async () => {
try {
if (!secretKey) {
throw new Error(
'No SECRET_KEY environment variable found. You can find secret key for this monitor on OneUptime Dashboard'
);
}
const serverMonitorResponse: ServerMonitorResponse = {
secretKey: secretKey,
requestReceivedAt: new Date(),
basicInfrastructureMetrics:
await BasicMetircs.getBasicMetrics(),
processes: await ServerProcessUtil.getServerProcesses(),
onlyCheckRequestReceivedAt: false,
};
Logger.info('Server Monitor Response');
Logger.info(JSON.stringify(serverMonitorResponse));
// now we send this data back to server.
await axios.post(
`${oneuptimeHost}/server-monitor/response/ingest/${secretKey}`,
{
serverMonitorResponse: serverMonitorResponse,
},
{}
);
} catch (err) {
Logger.error(err);
}
},
await MonitorInfrastructure.monitorServerMetrics({
oneuptimeHost: oneuptimeHost,
secretKey: secretKey,
});
}
});
}
public static async monitorServerMetrics(data: {
oneuptimeHost: string,
secretKey: string
}) {
try {
const { oneuptimeHost, secretKey } = data;
if (!secretKey) {
throw new Error(
'No SECRET_KEY environment variable found. You can find secret key for this monitor on OneUptime Dashboard'
);
}
const serverMonitorResponse: ServerMonitorResponse = {
secretKey: secretKey,
requestReceivedAt: new Date(),
basicInfrastructureMetrics:
await BasicMetircs.getBasicMetrics(),
processes: await ServerProcessUtil.getServerProcesses(),
onlyCheckRequestReceivedAt: false,
};
Logger.info('Server Monitor Response');
Logger.info(JSON.stringify(serverMonitorResponse));
// now we send this data back to server.
await axios.post(
`${oneuptimeHost}/server-monitor/response/ingest/${secretKey}`,
{
serverMonitorResponse: serverMonitorResponse,
},
{}
);
} catch (err) {
Logger.error(err);
}
}
}