-- =================================================================================================================== -- SQLI-WIN-010: Serveren er genstartet -- =================================================================================================================== -- Regel-id: SQLI-WIN-010 -- Titel: Serveren er genstartet -- Alvor: High ved uventet genstart; Info ved genstart uden tegn på at den var uventet; Low når hændelsesloggen ikke kan læses. -- Versioner: Windows Server 2008 R2 og nyere. -- -- Hvad tjekkes, og hvorfor: -- Serveren er genstartet det seneste døgn. Uventet (strøm, blå skærm, hård nulstilling) afbryder alt midt i det, og -- databaser og AX skal gendanne sig selv; en planlagt genstart (fx Windows-opdateringer) er kun til orientering. -- -- Vurdering (sker i C# ud fra de indsamlede data, ikke på den overvågede server): -- Er LastBootUpTime inden for 24 timer, er serveren genstartet. Er der i hændelsesloggen (seneste 24 timer) en hændelse i -- kategorien "uventet nedlukning" – Microsoft-Windows-Kernel-Power 41, EventLog 6008, BugCheck/WER-SystemErrorReporting 1001 – -- senest set tidligst en time før starttidspunktet, er genstarten uventet (Høj), ellers Info. "Planlagt" siges kun, når -- hændelsesloggen er læst efter starttidspunktet: er den læst sidst før genstarten, er reglen "ikke målbar", indtil den -- er indsamlet igen; kan den slet ikke læses, er fundet Low og siger, at årsagen ikke kan ses. -- -- Grænseværdier (fast i koden): -- Fast: 24 timer efter LastBootUpTime (ServerEventAnalysis.RecentWindow), derefter forsvinder fundet af sig selv. -- -- Rettigheder på den overvågede server (db/permissions/grant-windows-server.ps1, aldrig lokal administrator): -- WMI Enable Account/Remote Enable på root\cimv2 (starttidspunkt); Event Log Readers (hvorfor). -- -- Data kommer fra (collector, fil – medlemmer, interval): -- src/SQLInsight.Servers/CimWindowsServerSource.cs – Session.GetOperatingSystemAsync (CimQueries.OperatingSystemQuery) og -- Session.GetEventsAsync, fra src/SQLInsight.Agent/Servers/ServerMonitor.cs – CollectPerformanceAsync og CollectEventsAsync. -- Regelkode: src/SQLInsight.Rules/Servers/WindowsServerRules.cs : ServerRestartRule -- -- Read-only: Ja. Reglen sender ingen SQL. Agenten læser kun fra Windows: CIM/WQL-forespørgsler (SELECT), -- hændelsesloggen og for planlagte opgaver Task Schedulers skrivebeskyttede GetInfo. Den starter, stopper -- eller ændrer intet på serveren. Filen indeholder kun kommentarer; forespørgslerne mod Windows står herunder. -- =================================================================================================================== -- Reglen bruger ikke SQL. Forespørgslerne mod Windows står herunder; filen indeholder kun kommentarer og ændrer intet. -- -- CIM/WQL (namespace root\cimv2): -- SELECT Caption, Version, BuildNumber, LastBootUpTime, TotalVisibleMemorySize, CSName FROM Win32_OperatingSystem -- Event Log (MS-EVEN6), XPath for System: -- *[System[(Level=1 or Level=2) and TimeCreated[@SystemTime>'2026-10-02T12:00:00.000Z']]] -- -- Efterprøv med PowerShell (skrivebeskyttet; kør på agentens server som agentens konto): -- (Get-CimInstance -ComputerName SERVER -Query "SELECT LastBootUpTime FROM Win32_OperatingSystem").LastBootUpTime -- Get-WinEvent -ComputerName SERVER -FilterHashtable @{ LogName = 'System'; Id = 41, 6008, 1001, 1074; StartTime = (Get-Date).AddDays(-1) }