@page @model Status.Pages.MonitorsModel @{ ViewData["Title"] = "Monitors"; ViewData["Page"] = "monitors"; var groups = Model.Monitors.GroupBy(m => m.GroupName ?? "General"); }
All Monitors @Model.Monitors.Count services
@foreach (var group in groups) {
@group.Key @group.Count(m => m.LastStatus == MonitorStatus.Up) / @group.Count() up
@foreach (var monitor in group) { var badgeClass = monitor.LastStatus switch { MonitorStatus.Up => "badge-up", MonitorStatus.Down => "badge-down", MonitorStatus.Warning or MonitorStatus.Degraded => "badge-warn", _ => "badge-unknown" }; var uptime = Model.UptimePercent.ContainsKey(monitor.Id) ? Model.UptimePercent[monitor.Id] : 0; var uptimeColor = uptime >= 99 ? "var(--up)" : uptime >= 95 ? "var(--warn)" : "var(--down)"; }
Monitor Type Endpoint Response 30d Uptime Last Checked Status
@monitor.Name
@if (!string.IsNullOrEmpty(monitor.Description)) {
@monitor.Description
}
@monitor.Type @(monitor.Type is MonitorType.HTTP or MonitorType.HTTPS ? monitor.Url : $"{monitor.Host}{(monitor.Port.HasValue ? ":" + monitor.Port : "")}") @if (monitor.LastResponseMs.HasValue) { @((int)monitor.LastResponseMs.Value)ms } else { } @uptime.ToString("F1")% @(monitor.LastChecked.HasValue ? monitor.LastChecked.Value.ToString("HH:mm:ss") + " UTC" : "Never") @monitor.LastStatus
} @if (!Model.Monitors.Any()) {
No monitors configured
}