diff --git a/client/src/Pages/Infrastructure/Create/index.jsx b/client/src/Pages/Infrastructure/Create/index.jsx
index 0a09105b8..936d87ab0 100644
--- a/client/src/Pages/Infrastructure/Create/index.jsx
+++ b/client/src/Pages/Infrastructure/Create/index.jsx
@@ -92,9 +92,7 @@ const CreateInfrastructureMonitor = () => {
initializeInfrastructureMonitorForUpdate(monitor);
const fetchLastCheck = async () => {
try {
- const { stats } = monitor ?? {};
- let latestCheck = stats?.aggregateData?.latestCheck;
- let disks = latestCheck?.disk || [];
+ let disks = monitor?.recentChecks?.[0]?.disk || [];
if (disks.length > 0) {
setAvailableDisks(disks);
diff --git a/client/src/Pages/Infrastructure/Details/Components/GaugeBoxes/index.jsx b/client/src/Pages/Infrastructure/Details/Components/GaugeBoxes/index.jsx
index 7693fd32e..3859fe040 100644
--- a/client/src/Pages/Infrastructure/Details/Components/GaugeBoxes/index.jsx
+++ b/client/src/Pages/Infrastructure/Details/Components/GaugeBoxes/index.jsx
@@ -19,8 +19,7 @@ const Gauges = ({ isLoading = false, monitor }) => {
return ;
}
- const { stats } = monitor ?? {};
- let latestCheck = stats?.aggregateData?.latestCheck;
+ const latestCheck = monitor?.recentChecks?.[0];
const memoryUsagePercent = latestCheck?.memory?.usage_percent ?? 0;
const memoryUsedBytes = latestCheck?.memory?.used_bytes ?? 0;
const memoryTotalBytes = latestCheck?.memory?.total_bytes ?? 0;
diff --git a/client/src/Pages/Infrastructure/Details/Components/StatusBoxes/index.jsx b/client/src/Pages/Infrastructure/Details/Components/StatusBoxes/index.jsx
index ef91709cf..d411886c7 100644
--- a/client/src/Pages/Infrastructure/Details/Components/StatusBoxes/index.jsx
+++ b/client/src/Pages/Infrastructure/Details/Components/StatusBoxes/index.jsx
@@ -14,8 +14,7 @@ const InfraStatBoxes = ({ shouldRender, monitor }) => {
const { determineState } = useMonitorUtils();
const { t } = useTranslation();
- const { stats } = monitor ?? {};
- const latestCheck = stats?.aggregateData?.latestCheck;
+ const latestCheck = monitor?.recentChecks?.[0];
// Get data from latest check
const physicalCores = latestCheck?.cpu?.physical_core ?? 0;
diff --git a/client/src/Pages/Infrastructure/Details/index.jsx b/client/src/Pages/Infrastructure/Details/index.jsx
index 62a5c2642..6ae630822 100644
--- a/client/src/Pages/Infrastructure/Details/index.jsx
+++ b/client/src/Pages/Infrastructure/Details/index.jsx
@@ -127,7 +127,7 @@ const InfrastructureDetails = () => {
)}
{tab === "network" && (
{
const processor =
- ((monitor.checks[0]?.cpu?.frequency ?? 0) / 1000).toFixed(2) + " GHz";
- const cpu = (monitor?.checks[0]?.cpu.usage_percent ?? 0) * 100;
- const mem = (monitor?.checks[0]?.memory.usage_percent ?? 0) * 100;
- const disk = (monitor?.checks[0]?.disk[0]?.usage_percent ?? 0) * 100;
+ ((monitor.recentChecks?.[0]?.cpu?.frequency ?? 0) / 1000).toFixed(2) + " GHz";
+ const cpu = (monitor?.recentChecks?.[0]?.cpu?.usage_percent ?? 0) * 100;
+ const mem = (monitor?.recentChecks?.[0]?.memory?.usage_percent ?? 0) * 100;
+ const disk = (monitor?.recentChecks?.[0]?.disk?.[0]?.usage_percent ?? 0) * 100;
const status = determineState(monitor);
const percentageColor =
monitor.uptimePercentage < 0.25
diff --git a/server/src/repositories/checks/MongoChecksRepistory.ts b/server/src/repositories/checks/MongoChecksRepistory.ts
index 5c792a01c..16f00778a 100644
--- a/server/src/repositories/checks/MongoChecksRepistory.ts
+++ b/server/src/repositories/checks/MongoChecksRepistory.ts
@@ -29,7 +29,6 @@ const dateRangeLookup: Record = {
export type LatestChecksMap = Record;
type DateRange = { start: Date; end: Date };
-type HardwareAggregateData = { latestCheck: CheckDocument | null; totalChecks: number };
type HardwareUpChecks = { totalChecks: number };
class MongoChecksRepository implements IChecksRepository {
@@ -526,14 +525,13 @@ class MongoChecksRepository implements IChecksRepository {
const monitorId = monitorObjectId.toHexString();
const dates = { start: startDate, end: endDate };
const [aggregateDataDoc, upChecksDoc, hardwareMetrics] = await Promise.all([
- this.getHardwareAggregateData(monitorId, dates),
+ this.getHardwareTotalChecks(monitorId, dates),
this.getHardwareUpChecks(monitorId, dates),
this.getHardwareStats(monitorId, dates, dateString),
]);
const aggregateData = {
- latestCheck: aggregateDataDoc?.latestCheck ? this.toEntity(aggregateDataDoc.latestCheck as CheckDocument) : null,
- totalChecks: aggregateDataDoc?.totalChecks ?? 0,
+ totalChecks: aggregateDataDoc ?? 0,
};
const upChecks = {
@@ -589,25 +587,12 @@ class MongoChecksRepository implements IChecksRepository {
};
};
- private getHardwareAggregateData = async (monitorId: string, dates: DateRange): Promise => {
- const result = await CheckModel.aggregate([
- {
- $match: {
- "metadata.monitorId": new mongoose.Types.ObjectId(monitorId),
- "metadata.type": "hardware",
- createdAt: { $gte: dates.start, $lte: dates.end },
- },
- },
- { $sort: { createdAt: -1 } },
- {
- $group: {
- _id: null,
- latestCheck: { $first: "$$ROOT" },
- totalChecks: { $sum: 1 },
- },
- },
- ]);
- return result[0] || { totalChecks: 0, latestCheck: null };
+ private getHardwareTotalChecks = async (monitorId: string, dates: DateRange): Promise => {
+ return await CheckModel.countDocuments({
+ "metadata.monitorId": new mongoose.Types.ObjectId(monitorId),
+ "metadata.type": "hardware",
+ createdAt: { $gte: dates.start, $lte: dates.end },
+ });
};
private getHardwareUpChecks = async (monitorId: string, dates: DateRange): Promise => {
diff --git a/server/src/types/check.ts b/server/src/types/check.ts
index a2c377f54..ce932d79d 100644
--- a/server/src/types/check.ts
+++ b/server/src/types/check.ts
@@ -121,7 +121,6 @@ export interface PageSpeedChecksResult {
export interface HardwareChecksResult {
monitorType: "hardware";
aggregateData: {
- latestCheck: Check | null;
totalChecks: number;
};
upChecks: {
diff --git a/server/src/types/monitor.ts b/server/src/types/monitor.ts
index cdbdb7c83..b2bf360dc 100644
--- a/server/src/types/monitor.ts
+++ b/server/src/types/monitor.ts
@@ -78,7 +78,6 @@ export interface UptimeDetailsResult {
export interface HardwareDetailsResult extends Monitor {
stats: {
aggregateData: {
- latestCheck: import("./check.js").Check | null;
totalChecks: number;
};
upChecks: {