/* SQLI-WIN-005 – Lidt ledig plads på et drev =========================================== Hvad og hvorfor Når et drev løber fuldt, stopper alt, der skriver til det: SQL Server kan ikke vokse data- og logfiler, backup fejler, AOS og Windows kan ikke skrive logfiler og midlertidige filer, og brugere kan ikke gemme. Tærskler (agentens appsettings.json) SQLInsight:Servers:Disks:FreePercent standard 10 (ledig andel, under: Middel) SQLInsight:Servers:Disks:CriticalFreePercent standard 5 (under: Høj) SQLInsight:Servers:Disks:EnoughFreeGigabytes standard 50 (er der mindst så mange GB ledige, er der intet fund, uanset andelen: store drev med lille andel ledig kan være fine) Alvor Middel under FreePercent, Høj under CriticalFreePercent, Kritisk under 1 GB eller 1 %. Rettigheder på den overvågede server (db/permissions/grant-windows-server.ps1, aldrig lokal administrator) WMI Enable Account/Remote Enable på root\cimv2 WS-Man: Remote Management Users · DCOM: Distributed COM Users Understøttede versioner Windows Server 2008 R2 og nyere. Collector src/SQLInsight.Servers/CimWindowsServerSource.cs – Session.GetDisksAsync (CimQueries.VolumeQuery, ellers CimQueries.LogicalDiskQuery), hvert 15. minut (SQLInsight:Servers:Intervals:disks) fra src/SQLInsight.Agent/Servers/ServerMonitor.cs – CollectDisksAsync. Regel src/SQLInsight.Rules/Servers/WindowsServerRules.cs – DiskFreeSpaceRule Evaluering Lokale diske (DriveType 3) med drevbogstav eller monteringssti; partitioner uden (system/recovery, navn \\?\Volume{…}) springes over. Ledig andel = FreeSpace / Capacity. Et fund pr. drev, der er under FreePercent og samtidig har mindre end EnoughFreeGigabytes ledig. Reglen bruger ikke SQL. Forespørgslerne mod Windows står herunder; filen indeholder kun kommentarer og ændrer intet. CIM/WQL (namespace root\cimv2): SELECT Name, Label, FileSystem, Capacity, FreeSpace FROM Win32_Volume WHERE DriveType = 3 SELECT DeviceID, VolumeName, FileSystem, Size, FreeSpace FROM Win32_LogicalDisk WHERE DriveType = 3 (fallback) Efterprøv med PowerShell (skrivebeskyttet; kør på agentens server som agentens konto): $s = New-CimSession -ComputerName SERVER Get-CimInstance -CimSession $s -Query "SELECT Name, Label, FileSystem, Capacity, FreeSpace FROM Win32_Volume WHERE DriveType = 3" | Where-Object { $_.Name -notlike '\\?\*' } | Select-Object Name, Label, @{n='LedigGB';e={[math]::Round($_.FreeSpace / 1GB, 1)}}, @{n='Ledig%';e={[math]::Round(100 * $_.FreeSpace / $_.Capacity, 1)}} */