@page "/syntetiske-tjek" @using SQLInsight.Core.SyntheticChecks @inject InsightRepository Repository @inject Display Display @inject Microsoft.Extensions.Options.IOptions Options Syntetiske tjek · SQLInsight Pro

Syntetiske tjek

Agenten gør det, en bruger eller en applikation gør – forbinder til AOS-porten, henter en side, logger på SQL Server, slår et navn op, logger på Dynamics AX – med jævne mellemrum og med sin egen konto. Så opdages det, når en applikationsserver ikke svarer, selv om tjenesten kører.

@if (Fjernet == 1) {

Tjekket er fjernet. Resultaterne er bevaret, indtil de udløber.

} @if (!string.IsNullOrEmpty(Fejl)) { } @if (!_mayChange) {

Du kan se tjekkene, men kun administratorer kan tilføje og ændre dem. @InstanceSetup.WhoMayChangeText(Options.Value)

}

Tjek

@_checks.Count(c => !c.Paused) aktive · Windows-servere
@if (_checks.Count == 0) {

Der er ingen syntetiske tjek endnu.@(_mayChange ? " Tilføj det første nedenfor." : string.Empty)

} else { @foreach (var c in _checks) { var counts = _counts.GetValueOrDefault((FindingScope.Check, c.CheckId)); }
TjekTypeMålStatusSvartidSenesteFund
@c.Name@if (c.ServerName is { } server) {
@server@(c.Settings.ServiceName is { } svc ? " · " + svc : string.Empty)
}
@SyntheticCheckKind.Display(c.Kind) @c.Settings.Target(c.Kind) @(c.LastDurationMs is { } ms ? Display.Number(ms) + " ms" : "–") @Display.Ago(c.LastRunAt) @if (counts is null || counts.Count == 0) { } else { @foreach (var (severity, count) in counts.OrderByDescending(x => x.Key)) { } }
}
@if (_mayChange) {

Tilføj tjek

Udfyld felterne for den valgte type; de andre ignoreres. Efter tilføjelsen kører agenten tjekket med det samme.

} @code { [CascadingParameter] private HttpContext? Http { get; set; } [SupplyParameterFromQuery(Name = "fejl")] public string? Fejl { get; set; } [SupplyParameterFromQuery(Name = "fjernet")] public int? Fjernet { get; set; } private IReadOnlyList _checks = []; private IReadOnlyList _servers = []; private IReadOnlyDictionary<(string, int), IReadOnlyDictionary> _counts = new Dictionary<(string, int), IReadOnlyDictionary>(); private bool _mayChange; protected override async Task OnInitializedAsync() { _checks = await Repository.GetSyntheticChecksAsync(); _servers = await Repository.GetWindowsServersAsync(); _counts = await Repository.GetServerFindingCountsAsync(); _mayChange = Http is not null && InstanceSetup.MayChange(Http.User, Options.Value); } }