Na początek dodajemy funkcję SNMP do systemu Windows. Można to zrobić za pomocą polecenia Windows PowerShell. Uruchamiamy PowerShell jako Administrator i wypisujemy polecenie:
Add-WindowsCapability -Online -Name "SNMP.Client~~~~0.0.1.0"
Proces instalacji wygląda w ten sposób:
Zakończona instalacja nie wymaga restartu komputera i jest potwierdzona komunikatem:
Zauważyłem (pomimo informacji „RestartNeeded:False”), że w konfiguracji usługi brakuje odpowiednich zakładek. Dlatego po tej operacji zalecam restart komputera.
Następnie dodajemy reguły Firewall, króre odblokują porty konieczne do korzystania z SNMP:
netsh advFirewall Firewall add rule name="SNMP UDP 161,162" protocol=udp localport=161,162 dir=in action=allow profile=private,public,domain
netsh advFirewall Firewall add rule name="SNMP TCP 161,162" protocol=tcp localport=161,162 dir=in action=allow profile=private,public,domain
Prawidłowe dodanie reguł jest potwierdzone komunikatem Ok:
Przystępujemy teraz do konfiguracji usługi SNMP. Listę usług systemu Windows można wyświetlić poprzez wciśnięcie kombinacji klawiszy Win+R (Uruchom) i wpisanie w pole „Otwórz:” frazy services.msc:
Po kliknięciu OK wyświetli nam się okno Usługi. Odnajdujemy na liście usługę o nazwie „Usługa SNMP” i otwieramy ją do edycji. Na zakładce „Pułapki” wpisujemy nazwę społeczności „public” i klikamy przycisk „Dodaj do listy”. Zalecam używanie własnych nazw społeczności/wspólnoty, jednak na potrzeby tego wpisu zostanę przy public:
Przechodzimy teraz na zakładkę zabezpieczenia i odznaczamy check „Wyślij pułapkę uwierzytelniania”. Pod sekcją „Zaakceptowane nazwy społeczności” klikamy przycisk „Dodaj…” i w nowo otwartym okienku wybieramy „Prawa wspólnoty” – „TYLKO DO ODCZYTU” oraz „Nazwa społeczności” – „public”. Potwierdzamy przyciskiem „Dodaj”. Na potrzeby tego wpisu zaznaczę jeszcze opcję „Zaakceptuj pakiety SNMP od dowolnego hosta”. Jednak w środowisku produkcyjnym zalecam zawęzić listę tylko do wybranych hostów oraz ustawić niestandardową nazwę wspólnoty:
Zmiany potwierdzamy klawiszem OK i restartujemy usługę poprzez kliknięcie na nią prawym klawiszem myszy i wybranie opcji „Uruchom ponownie”:
Przejdźmy teraz do The Dude. Dodajemy urządzenie przez opcję „Add Device”
W nowo otwartym oknie wpisujemy adres IP komputera, na krórym konfigurowaliśmy usługę SNMP, w moim przypadku będzie to 192.168.3.52. Odznaczamy też „Secure Mode” i klikamy „Next”
W kolejnym kroku klikamy przycisk „Discover”. Jeżeli prawidłowo skonfigurowaliśmy usługę SNMP i reguły Firewall, to na liście powinny się pojawić usługi takie jak cpu, disk czy memory. Potwierdzamy klawiszem „Finish”
Widać, że nowo dodany host ma zajętość dysku na poziomie 58%. Ale którego dysku? Zapewne systemowego. Co jeśli chcemy monitorować inny dysk?
W tym celu wykorzystamy Snmpwalk wbudowanego w The Dude. Klikamy na hosta prawym klawiszem myszy i z menu kontekstowego wybieramy Tools/Snmpwalk:
W nowo otwartym oknie wybieram „Type: subtree” oraz „Oid: iso.org.dod.internet.mgmt.mib-2.host.hrStorage” jak na zdjęciu poniżej. Pozwoli to zawęzić listę wyników. Następnie klikam „Start”.
Odnajduję w sekcji „hrStorageDescr -3” interesujący mnie dysk. W moim przypadku będzie to dysk I:\. Klikam na niego prawym klawiszem i wybieram „Copy Oid”
Skopiowany Oid to: .3.6.1.2.1.25.2.3.1.3.7
Cyfra 7 na końcu Oid, to numer kolejny dysku w systemie operacyjnym, będzie ona występowała na końcu każdego Oid. Teraz musimy dla tego dysku odszukać odpowiednie Oid odpowiedzialne za wartości:
hrStorageAllocationUnits – jednostka alokacji
hrStorageSize – rozmiar dysku
hrStorageUsed – ilość zajętej przestrzeni
W moim przypadku będzie to odpowiednio:
.3.6.1.2.1.25.2.3.1.4.7
.3.6.1.2.1.25.2.3.1.5.7
.3.6.1.2.1.25.2.3.1.6.7
Żeby wyświetlić zajętość dysku w %, należy z tych 3 wartości wykonać następujące działanie matematyczne:
(hrStorageAllocationUnits*hrStorageUsed)*100/(hrStorageAllocationUnits*hrStorageSize)
Dodaję dodatkowo przed każdą skopiowaną wartością frazę: (oid(„iso oraz kończę ją „) ponieważ tak to wynika ze składni poleceń MikroTik The Dude. Całość zamykam w funkcji round oraz w nawiasach kwadratowych. Dodaję dodatkowo napis „Dysk I: ” na początku i „%” na końcu. Wszystkie te zabiegi wpływają na późniejszą prezentację wartości zapełnienia dysku. Finalnie polecenie wygląda tak:
Dysk I: [round((oid("iso.3.6.1.2.1.25.2.3.1.4.7")*oid("iso.3.6.1.2.1.25.2.3.1.6.7"))*100/(oid("iso.3.6.1.2.1.25.2.3.1.4.7")*oid("iso.3.6.1.2.1.25.2.3.1.5.7")))]%
Zamykam teraz okno Snmpwalk, klikam prawym klawiszem myszy na hosta. Wybieram opcję „Apperance”:
W nowo otwartym oknie klikam w sekcję „Label” i wklejam w nowym wierszu przygotowany wcześniej kod. Potwierdzam zmianę przyciskiem OK:
Gotowe! Możemy się cieszyć zaprezentowaną w % zajętością dowolnego dysku:
Jako ciekawostkę mogę dodać, że można zebrać zajętość dysków z kilku komputerów, serwerów i zapisywać te wartości do wykesu (Charts) można wtedy analizować dane historycznie. Można również ustawić powiadomienia e-mail czy sms o przekroczeniu danej wartości progowej zajętości dysku.
Koniec 🙂
Jeżeli pomogłem to ,a będę miał więcej energii na pisanie kolejnych ciekawych wpisów.