Monitorowanie wykorzystania łącza w PowerShell


W codziennej pracy bywa, że musimy sprawdzić jak wygląda wykorzystanie łącza sieciowego, a konkretnie z jakiej obecnie przepustowości korzysta nasz serwer. Jeśli z jakiegoś powodu (np. dość ostrej polityce firmy zabraniającej instalowania ‚zbędnego’ oprogramowania) nie możemy skorzystać z żadnego „third-party” ułatwiającego monitorowanie wykorzystania łącza, z pomocą przychodzi nam PowerShell 🙂 (pamiętacie? – już mierzyliśmy za jego pomocą moc sygnału Wi-Fi)
PowerShell jak wiecie z wcześniejszych wpisów, to doskonałe remedium na wszelakie trudne sytuacje, więc nauka skryptowania w tym języku jest bardzo uzasadniona.
Kiedy zarzucono mi na głowę problem zmierzenia w jaki sposób dwa serwery utylizują łącze sieciowe, postanowiłem użyć nieco połączonych mocy WMI i PSH. I tak po krótkiej, acz wytężonej pracy powstał taki oto sympatyczny skrypt:

while ($true)
{
 Clear
 Get-WmiObject -class Win32_PerfFormattedData_Tcpip_NetworkInterface -ComputerName $args[0] | Select Name, CurrentBandWidth, BytesTotalPersec  | Format-Table @{Expression={$_.Name}; Label="NIC" }, @{Expression={$_.CurrentBandWidth/ 1000000 }; Label="MBit/s"}, @{Expression={$_.BytesTotalPersec/ 1000000 }; Label="MBit/s"}
 Get-WmiObject -class Win32_PerfFormattedData_Tcpip_NetworkInterface -ComputerName $args[1] | Select Name, CurrentBandWidth, BytesTotalPersec  | Format-Table @{Expression={$_.Name}; Label="NIC" }, @{Expression={$_.CurrentBandWidth/ 1000000 }; Label="MBit/s"}, @{Expression={$_.BytesTotalPersec/ 1000000 }; Label="MBit/s"}
 Start-Sleep -Seconds 2
}

Używamy go na własnym komputerze podając jako parametrów nazw serwerów:

NetworkUsage.ps1 nazwa1 nazwa2

jeśli chcemy tylko jeden serwer, kasujemy „powtórzoną” linię. Jeśli chcemy manipulować częstotliwością „próbkowania” modyfikujemy linijkę z Start-Sleep.
Znacie jakiś prostszy sposób na monitorowanie wykorzystania łącza na zdalnych serwerach?

Piotr Berent

Piotr Berent od 2002 w pocie czoła pracujący w środowisku IT, obecnie freelancer - Inżynier Systemowy. Entuzjasta wirtualizacji, automatyzacji i rozwiązań opartych o narzędzia open-source.

Przeczytaj także...

Dodaj komentarz