INFORMATICS

The Best

Przełącznik języka

Zaproś mnie na KAWE

Jeżeli podoba Ci się strona i chcesz wspomóc projekt!

Postaw mi kawę na buycoffee.to

This Site

Płatnik

CMS

Hardware

Uncategorised

Emulators

Powershell

Storage Array

DNS

Antivirus program

Licznik

2.png3.png8.png6.png4.png6.png5.png
Today484
Yesterday470
This week1384
This month16810
Total2386465

Visitor Info

  • IP: 44.192.65.228
  • Browser: Unknown
  • Browser Version:
  • Operating System: Unknown

Who Is Online

5
Online

poniedziałek, 27 czerwiec 2022 16:54

Disk alert

Gwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywna
 

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 = "Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript."
objMail.To = Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.
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