INFORMATICS

The Best

Disk alert

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado
 

Często podczas pracy z wieloma serwerami spotykamy się z problemem przepełnienia dysku. Jeden serwer jesteśmy w stanie monitorować ale co jeżeli mamy kilkadziesiąt serwerów.

Monitorowanie wolnego miejsca na dysku można wykonać na kilka sposobów możemy zrobić to przez zbieranie danych do logu i robienie wykresu dzięki SNMP. Jednak na wykresy też trzeba patrzeć i je analizować przeglądanie kilkadziesięciu wykresów i analizowanie ich to nie jest dobre rozwiązanie.

Najlepszym rozwiązaniem jest ustawienie progu po którym system wysyła maila na wskazany adres mailowy. Komunikat na skrzynkę pocztową informuje nas o wyczerpaniu się miejsca na dysku serwera a tym samym daje czas na podjęcie działania.

Oto przykład jak skonfigurować powiadamiaczkę o wyczerpywaniu się miejsca na dysku twardym.

Zalecany poziom wolnego miejsca na dysku twardym to 15% ale poziom ten można ustawić dowolnie.

Otwieramy Monitor wydajności znajdujący się w Narzędziach administracyjnych i tworzymy powiadomienie, Wchodzimy w zestaw modułów zbierających dane -> Zdefiniowane przez użytkownika -> Klik prawym klawiszem myszki wybieramy Nowy -> Zestaw modułów zbierających dane

 

Wchodzimy do okna utwórz nowy zestaw modułów zbierających dane i wybieramy typ danych w tym przypadku Alert licznika wydajności.

Wpisujemy nazwę pod którą będzie widniał moduł w naszym przypadku DiskAlert i wybieramy opcję Utwórz ręcznie (zaawansowane)

Klikamy Dalej i dostajemy się do okna tworzenia nowego zestawu modułów zbierających dane.

Klikamy Dodaj i otwiera się nam nowe okno wybieramy Alert licznik wydajności

Wybieramy licznik który nas interesuje w tym przypadku Dysk logiczny

Wyszukujemy interesujący nas parametr czyli Wolne megabajty lub Wolne miejsce (%). Wybieramy dysk C; ponieważ jego zasoby będą monitorowane

 

 

Utworzony przez nas moduł zbierający dane ma następującą postać

\Dysk logiczny(c:)\Wolne miejsce (%)

Ustawiamy próg ostrzegawczy limit 5% zalecany próg ostrzegawczy to 15%

 

Zapisujemy moduł i zamykamy

 

Pojawia się nam teraz nowy moduł pod nazwą DiskAlert - ustawiamy teraz właściwości alertu prawym klikiem na DiskAlert uruchamiamy Właściwości sprawdzamy poprawność ustawień

 

Wykonujemy ponownie prawy klik na DiskAlert i włączamy uruchom - moduł został włączony.

 

 

Konfigurujemy teraz DataCollector01 - prawym klawiszem myszki wybieramy właściwości

Sprawdzamy poprawność wpisów a zakładce alerty - limit alertów oraz interwał próbkowania czyli czas po jakim zostanie wykonane ponowne sprawdzenie zadanego parametru

W zakładce Akcja alertu odznaczamy Rejestruj wpis w dzienniku zdarzeń aplikacji oraz wybieramy Disk Alert jako Uruchomiony zestaw modułów zbierających dane

 

Wchodzimy teraz ponownie do Narzedzi Administracyjnych i wybieramy Harmonogramu zadań.

 Wchodzimy do folderu Biblioteka Harmonogramu zadań -> Microsoft -> Windows -> PLA

Ustawiamy się na DiskAlert i włączamy właściwości

 W zakładce ogólne odznaczamy Ukryte

W zakładce Wyzwalacz konfigurujemy opcję wyzwalacza czyli programu wsadowego. Wybieramy nowy element

 I tworzymy nowy wyzwalacz

 Ustawiamy harmonogram działania - wybieramy by zadanie rozpoczynało się każdego dnia o zadanej godzinie i było powtarzane co 1 dzień.

Odznaczamy box włączono

 Konfigurujemy akcje która będzie reagowała na zdarzenie wybieramy Nowa...

 I konfigurujemy akcję.

Akcja uruchom program.

Program skrypt C:\Windows\system32\rundll32.exe

Dodajemy argument C:\Windows\system32\pla.dll,PlaHost "DiskAlert" "$(Arg0)"

 Wchodzimy teraz w menadżer serwera zakładka Diagnostyka Podgląd Zdarzeń -> Dziennik aplikacji i Usług ->Microsoft ->Windows -> Diagnosis -PLA -> Działa

 

 

 

 Podglądamy sobie generowany log.

Log znajduje się właśnie w Diagnosis-PLA i wygląda następująco

Wygenerowało się nam zdarzenie o numerze identyfikacyjnym 2031 teraz możemy już przystąpić do konfigurowania powiadomienia wysyłanego pocztą e-mail

Dołącz zadanie do tego zdarzenia ... :

Klikamy prawym klawiszem myszki na Informację o numerze ID 2031

i wybieramy opcje dołącz zadanie do tego zdarzenia

 Opisujemy nasze zadanie jako powiadomienie e-mail

Wpisujemy w Opisie: Powiadomienie e-mail gdy miejsce na dysku spadnie poniżej zadanej wartości.

 

 Dostajemy informacje rejestracyjne

 Wybieramy uruchomienie programu którym będzie nasz skrypt

 Wskazujemy ścieżkę do skryptu który będzie informował o spadku miejsca na dysku C:

 Kończymy proces

Oczywiście potrzebujemy jeszcze skrypt który wyśle za nas maila możemy również użyć opcji wbudowanej w windowsa ale tego nie testowałem.

Podsumowanie - w skrócie.

Pierwsze wchodzimy w monitor wydajności tworzymy nowy moduł zbierający dane. Bardzo ważne należy pamiętać by dodać wpis w dzienniku zdarzeń inaczej dane nie będą wysyłane do loga a tym samym nie będzie podstawy do uruchomienia alarmu.

Drugie wchodzimy w Harmonogram Zadań i ustawiamy tu wyzwalacz - jest to ważne ze względu na to że nawet jeżeli proces się zawiesi lub coś go wyłączy o wskazanej porze zostanie on ponownie włączony ja ustawiłem ten parametr by włączał się każdego dnia o godzinie 6.00 czyli przed rozpoczęciem pracy.

Trzeci krok wchodzimy w logi i przypisujemy do logu z alarmem działanie - w naszym przypadku uruchomienie zewnętrznej aplikacji z napisanym skryptem w VB.

Teraz restartujemy usługę i powiadamiacz dyskowy zaczyna działać. Jeszcze drobne dopasowanie preferencji czyli ustawienie czasu próbkowania oraz poziomu alarmu. Poziom ten ustawiamy w % lub w bajtach.

To jest użyty w tym przypadku skrypt

Set objMail = CreateObject("CDO.Message")
Set objConf = CreateObject("CDO.Configuration")
Set objFlds = objConf.Fields
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'port do wysylania
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.b1s.eu" 'SMTP
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587 'e-mail port
'Odkomentowac dla SMTP
'objFlds.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "awaria"
'objFlds.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "xxxxxx"
'objFlds.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 'cdoBasic
objFlds.Update
objMail.Configuration = objConf
'objMail.FromName = "ja"
objMail.From = "Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo."
objMail.To = Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
objMail.Subject = "Dysk przepelniony na serwerze pocztowym!!!"
objMail.TextBody = "Dysk przepelniony zasoby dysku się wyczerpuja. Ilosc wolnego miejsca na dysku spadla ponizej 15%"
objMail.Send
Set objFlds = Nothing
Set objConf = Nothing
Set objMail = Nothing

 

Dodatkowe uwagi na potrzeby powiadamiania skonfigurowałem serwer pocztowy który wysyła wiadomości.

 

Testy - jak sprawdzić poprawność działania skryptu i konfiguracji. 

Najprościej to przepełnić dysk można zrobić to w prosty sposób generując plik o zadanym rozmiarze.

Przykład polecenia - 

fsutil  file createnew  test.txt 524288000
Po uruchomieniu tego polecenia dostaniemy plik o rozmiarze 500 MB

W harmonogramie zadań zobaczymy utworzona zadanie Powiadomienie e-mail

Search