System Health Monitoring
Track system issues, service statuses, and metric trends with MongoDB aggregation.
Source: src/system-health/
Permission: MANAGE_SYSTEM (mutations), VIEW_SYSTEM_HEALTH (reads)
API Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /system-health/overview | System health summary |
GET | /system-health/issues | List system issues |
POST | /system-health/issues | Create issue record |
PATCH | /system-health/issues/:id/status | Update issue status |
POST | /system-health/metrics | Record metric sample |
GET | /system-health/metrics/trend | Metric trend (aggregation) |
GET | /system-health/services | List service statuses |
POST | /system-health/services | Save service status |
Service Methods
SystemHealthService
| Method | Description |
|---|---|
getOverview() | Aggregated health summary |
listIssues() | Query SystemIssue records |
createIssue(data) | Create new issue |
updateIssueStatus(id, status) | Update issue status |
recordMetric(data) | Store SystemMetricSample |
getMetricTrend(metric, range) | MongoDB aggregation pipeline for trends |
listServices() | Query SystemServiceStatus records |
saveServiceStatus(data) | Upsert service status |
Metric Trend Aggregation
Uses MongoDB $match → $group → $sort pipeline to compute time-bucketed averages:
await this.prisma.systemMetricSample.aggregateRaw({
pipeline: [
{ $match: { metricName, createdAt: { $gte: startDate } } },
{ $group: { _id: { $dateToString: { format, date: "$createdAt" } }, avg: { $avg: "$value" } } },
{ $sort: { _id: 1 } },
],
});
Related Models
SystemIssue— Issue tracking recordsSystemMetricSample— Time-series metric data pointsSystemServiceStatus— Service health status records
Related Modules
MaintenanceModule— Scheduled maintenance checksDashboardModule— Consumes health data for display