Generacja wykresów przy pomocy MRTG
Transkrypt
Generacja wykresów przy pomocy MRTG
Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki Informatyka, IV rok Administracja systemem komputerowym Generacja wykresów przy pomocy MRTG Prowadzacy: ˛ mgr inż. Bogusław Juza Wykonanie: Michał Fedorowicz, Andrzej Gruszczyk, Tomasz Gubała Kraków, 2002 SPIS TREŚCI 2 Spis treści 1 Wst˛ep 5 2 Sposób działania MRTG 5 3 Plik konfiguracyjny 3.1 Konfiguracja parametrów globalnych . . . 3.1.1 Katalogi . . . . . . . . . . . . . . 3.1.2 Współdziałanie z SNMP . . . . . 3.1.3 Zewn˛etrzny moduł do logowania . 3.1.4 Uruchamianie mrtg . . . . . . . . 3.1.5 Inne parametry . . . . . . . . . . 3.2 Konfiguracja monitorowania celów . . . . 3.2.1 Podstawowe parametry . . . . . . 3.2.2 Maksymalne wartości zmiennych 3.2.3 Wyglad ˛ strony HTML . . . . . . . 3.2.4 Parametry wykresów . . . . . . . 3.2.5 Inne parametry . . . . . . . . . . 3.3 Sprawdzanie wartości progowych . . . . 3.4 Definiowanie wartości domyślnych . . . . . . . . . . . . . . . . . . 6 6 6 7 7 8 8 8 8 12 12 14 16 16 17 4 Narz˛edzia dost˛epne wraz z MRTG 4.1 Generowanie pliku konfiguracyjnego . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Generowanie strony – indeksu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 18 18 5 Przykładowe konfiguracje 5.1 Funkcja procesUptime() . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Pomiar zaj˛etości dysków w systemie . . . . . . . . . . . . . . . . . . 5.2.1 Skrypt do pomiaru procentowej zaj˛etości dysku w systemie . 5.2.2 Zapis w pliku konfiguracyjnym MRTG . . . . . . . . . . . . 5.3 Pomiar obciażenia ˛ procesora . . . . . . . . . . . . . . . . . . . . . . 5.3.1 Skrypt do pomiaru obciażenia ˛ procesora w systemie . . . . . 5.3.2 Zapis w pliku konfiguracyjnym MRTG . . . . . . . . . . . . 5.4 Pomiar ilości procesów w systemie . . . . . . . . . . . . . . . . . . . 5.4.1 Skrypt do pomiaru ilości procesów . . . . . . . . . . . . . . . 5.4.2 Zapis w pliku konfiguracyjnym MRTG . . . . . . . . . . . . 5.5 Pomiar ilości połaczeń ˛ do serwera poczty sendmail . . . . . . . . . . 5.5.1 Skrypt do pomiaru ilości połaczeń ˛ do serwera poczty sendmail 5.5.2 Zapis w pliku konfiguracyjnym MRTG . . . . . . . . . . . . 5.6 Pomiar ruchu na interfejsie eth i ppp w systemie linux . . . . . . . . . 5.6.1 Zapis w pliku konfiguracyjnym MRTG . . . . . . . . . . . . 19 20 21 21 23 24 24 26 28 28 30 30 30 32 32 32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SPIS TREŚCI 6 Dodatkowe moduły dla MRTG 6.1 Moduł 14all . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.1 Opis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.2 Instalacja . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.3 Plik konfiguracyjny . . . . . . . . . . . . . . . . . . . . . . 6.2 Moduł GetSNMPLinesUP . . . . . . . . . . . . . . . . . . . . . . 6.3 Moduł IxDisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4 Moduł PMLines . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.5 Moduł TTrafic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.6 Moduł apc_ups . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7 Moduły atmmaker, cfgmaker_ATM, cfgmaker_cisco, cfgmaker_dlci 6.8 Moduł cisco_BPX_MGX . . . . . . . . . . . . . . . . . . . . . . . 6.9 Moduł ciscoindex . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.10 Moduł cisco_ipaccounting . . . . . . . . . . . . . . . . . . . . . . 6.11 Moduł cpuinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.12 Moduł cpumon . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.13 Moduł diskmon . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.13.1 Opis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.13.2 Instalacja . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.14 Moduł distrib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.15 Moduł get_active . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.16 Moduły ipchains, ipchainacc . . . . . . . . . . . . . . . . . . . . . 6.17 Moduł ipfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.18 Moduły iptables_acc, iptables-accounting . . . . . . . . . . . . . . 6.19 Moduł ircstats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.20 Moduł ircstats2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.21 Moduł jm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.22 Moduł linux_stats . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.23 Moduł memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.24 Moduł monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.24.1 Opis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.24.2 Instalacja . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.25 Moduł mrtg-archiver . . . . . . . . . . . . . . . . . . . . . . . . . 6.26 Moduł mrtg-archiver-script . . . . . . . . . . . . . . . . . . . . . . 6.27 Moduł mrtg-blast . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.28 Moduł mrtg-dynip . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.29 Moduł ipacc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.30 Moduł mrtg-mail . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 33 33 34 34 35 36 36 36 36 37 37 37 37 38 38 38 38 38 39 39 40 40 40 40 41 41 41 42 42 42 42 43 43 44 44 44 44 SPIS TREŚCI 6.31 6.32 6.33 6.34 6.35 6.36 6.37 6.38 6.39 6.40 6.41 Moduł mrtg.php . . . . . Moduł mrtg_php_portal Moduł mrtgidx . . . . . Moduł mrtgindex.cgi . . Moduł mrtgrq . . . . . . 6.35.1 Opis . . . . . . . 6.35.2 Instalacja . . . . Moduł net-hosts . . . . . Moduł rdlog2 . . . . . . Moduł rumb-stat . . . . Moduł stat . . . . . . . . Moduł whodo . . . . . . Moduł xlsummary . . . . 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 45 45 46 46 46 46 47 47 47 48 48 48 1 Wst˛ep 1 5 Wst˛ep MRTG (Multi Router Traffic Grapher) jest narz˛edziem do monitorowania i wizualizacji niemal dowolnych wielkości zwiazanych ˛ z działaniem systemu komputerowego pracujacego ˛ pod kontrola˛ systemu Unix badź ˛ Windows NT. Możliwe jest także monitorowanie innych wielkości, o ile dostarczymy odpowiednie dane. Podstawowym zastosowaniem MRTG jest monitorowanie ruchu sieciowego wykorzystujac ˛ protokół SNMP (Simple Network Management Protocol). Śledzić można również inne zmienne SNMP, można także użyć zewn˛etrznego programu dostarczajacego ˛ dane, co umożliwia monitorowanie np. obciażenia ˛ procesora, sesji użytkowników itd. Dane te gromadzone sa˛ w plikach log i przedstawiane sa˛ w postaci wykresów. MRTG może obrazować zmiany na wykresie dziennym, tygodniowym, miesi˛ecznym oraz rocznym. Oprócz wizualizacji monitorowanych wielkości MRTG udost˛epnia dodatkowa˛ funkcjonalność – możliwość reagowania na zmiany wartości mierzonych wielkości. Można ustalić wartości progowe – minimalne i maksymalne dla każdej z monitorowanych wielkości i określić jakie akcje b˛eda˛ podejmowane po przekroczeniu tych progów. W niniejszym dokumencie poszczególne monitorowane obiekty nazywane sa˛ celami – aby uniknać ˛ konieczności używania za każdym razem powyższego długiego sformułowania. Określenie to jest odpowiednikiem angielskiego target, które jest powszechnie stosowane w angloj˛ezycznej dokumentacji pakietu MRTG. Celami moga˛ zatem być wspomniane wcześniej – ruch sieciowy, obciażenie ˛ procesora itd. 2 Sposób działania MRTG MRTG pobiera dane o wartości monitorowanej wielkości w równych odst˛epach czasu. W domyślnym sposobie pracy wartości otrzymane z kolejnych odczytów sa˛ od siebie odejmowane. Jest to użyteczne w przypadku odczytywania ilości przesłanych bajtów przez interfejs sieciowy za pomoca˛ SNMP. Otrzymujemy wtedy ilość przesłanych bajtów pomi˛edzy poszczególnymi odczytami. Nast˛epnie dla przedziału czasu pomi˛edzy przedostatnim a ostatnim odczytem obliczana jest wartość średnia transferu mówiaca ˛ ile średnio przesyłano bajtów na sekund˛e. Uzyskujemy ja˛ dzielac ˛ ilość przesłanych bajtów przez (stała) ˛ wartość czasu, w którym zostały one przesłane. Wartości prezentowane przez MRTG sa˛ wartościami średnimi, MRTG nie obrazuje zmian mierzonej wielkości w każdym momencie. Po obliczeniu wartości średnich w przedziałach, pomi˛edzy którymi dokonano odczytów nast˛epuje normalizacja. Celem normalizacji jest zmiana przedziałów, w których pierwotnie dokonano pomiarów na znormalizowane przedziały – o tej samej długości, lecz przesuni˛ete tak, aby rozpoczynały si˛e np. o pełnej godzinie. Znormalizowane wartości zapisywane sa˛ w pliku log. Aby zapobiec nieskończonemu rozrastaniu si˛e takiego pliku dokonywanie jest scalanie otrzymanych wartości. Na podstawie znormalizowanych wartości odpowiadajacych ˛ przedziałom 5 minut tworzony jest wykres dzienny. Po pewnym czasie (nieco wi˛ecej niż jeden dzień) wartości z 6 kolejnych przedziałów łaczone ˛ sa˛ w jedna˛ wartość odpowiadajac ˛ a˛ 30 minutom. Wartości takie z kolei tworza˛ wykres tygodniowy, a po nieco wi˛ecej niż 3 Plik konfiguracyjny 6 8 dniach sa˛ scalane w wartości odpowiadajace ˛ 2 godzinom tworzac ˛ w rezultacie wykres miesi˛eczny. Ostatnim etapem scalania jest tworzenie przedziałów odpowiadajacych ˛ dniu, które to przedstawiane sa˛ na wykresie rocznym. Oprócz opisanego sposobu działania możliwe jest także dokonywanie pomiarów bez odejmowania wartości mierzonej w danej chwili od wartości poprzedniej. W dalszym ciagu ˛ jednak wartość ta dzielona jest przez przedział czasu. Innymi słowy odpowiada to domyślnemu sposobowi obliczania wartości średniej, z tym że za wartość poprzednia˛ przyjmowane jest zawsze zero. Możliwe jest także zrezygnowanie z dokonywania jakiegokoliwek obliczania wartości średniej przez MRTG. Wartości otrzymane z pomiarów nie sa˛ odejmowane od siebie i nie sa˛ też dzielone przez przedział czasu. Jest to użyteczne, gdy mierzymy np. zaj˛etość dysków, obciażenie ˛ procesora, czy też temperatur˛e. 3 Plik konfiguracyjny Plik konfiguracyjny programu MRTG zazwyczaj jest umieszczony w katalogu /etc. Można modyfikować go samodzielnie lub wygenerować go za pomoca˛ opisanego w rozdziale 4.1 programu cfgmaker. Omawiany plik składa si˛e z cz˛eści zwiazanej ˛ z konfiguracja˛ parametrów globalnych, która opisana jest w sekcji 3.1, oraz dotyczacej ˛ poszczególnych celów, co opisane jest w sekcji 3.2. Tworzac ˛ plik konfiguracyjny możliwe jest wykorzystanie dodatkowej funkcjonalności MRTG, która˛ jest reagowanie na przekroczenie przez mierzone zmienne wartości progowych. Jest to opisane dokładniej w sekcji 3.3. Wspomniane parametry ustawia si˛e wpisujac ˛ określone słowo kluczowe zakończone znakiem „:”, po którym umieszcza si˛e wartość przypisywana˛ do tego parametru. W przypadku parametrów dla poszczególnych celów konieczne jest umieszczenie po słowie kluczowym a przez znakiem „:” w nawiasach kwadratowych wybranej nazwy celu – Parametr[<nazwa celu>]: <wartość parametru>. 3.1 3.1.1 Konfiguracja parametrów globalnych Katalogi W cz˛eści globalnej konieczne jest ustawienie co najmniej jednego parametru: WorkDir określa on miejsce, w którym maja˛ być zapisywane pliki log i generowane strony HTML wraz z plikami graficznymi z wykresami Opcjonalnie, zamiast powyższego parametru możemy podać oddzielne katalogi dla stron HTML, plików graficznych i plików log: HtmlDir ImageDir LogDir katalog dla stron HTML katalog dla plików graficznych katalog dla plików log 3.1 Konfiguracja parametrów globalnych 7 Nieco mniej istotna, ale dla porzadku ˛ opisana tutaj, jest możliwość określenia katalogu do przechowywania plików z logo MRTG, które wyświetlane sa˛ na generowanych stronach: IconDir 3.1.2 katalog dla plików z logo MRTG; w przeciwieństwie do powyższych parametrów powinna być to ścieżka wzgl˛edna wobec katalogu określonego parametrem WorkDir Współdziałanie z SNMP Aby zapewnić współprac˛e pomi˛edzy MRTG a różnymi, cz˛esto niekompatybilnymi z soba˛ implementacjami SNMP możliwe jest ustawienie poniższych parametrów: NoMib2 SingleRequest MRTG nie pyta o własności sysUptime i sysName, których nie posiadaja˛ niektóre implementacje SNMP powoduje, że MRTG podczas jednego zapytania wysyłanego do SNMP pyta o wartość tylko jednej zmiennej, gdyż niektóre implementacje nie obsługuja˛ zapytań o kilka zmiennych równocześnie Jak zostanie to opisane w rozdziale 3.2 dla każdego celu można określić timeout. Możliwe jest także określenie tej opcji wraz z innymi dla wszystkich celów, które to ustawienia przykrywaja˛ ustawienia dla poszczególnych celów: SnmpOptions możliwe jest ustawienie nast˛epujacych ˛ opcji: timeout, retries, backoff, default_max_repetitions , lenient_source_port_matching , lenient_source_address_marching Aby przyspieszyć działanie MRTG, szczególnie gdy pobiera on dane z SNMP możliwe jest uruchamianie kilku instancji programu mrtg poprzez ustawienie opcji: uruchomienie kilku procesów mrtg równocześnie Fork 3.1.3 Zewn˛etrzny moduł do logowania W MRTG możliwe jest użycie zewn˛etrznego modułu Perl do wykonywania logowania o nazwie rrdtool. Aby skorzystać z tej możliwości należy ustawić nast˛epujace ˛ opcje: LogFormat LibAdd PathAdd jeżeli chcemy użyć programu rrdtool, to parametr powinien mieć wartość rrdtool opcjonalny parametr określajacy ˛ dla interpretera perla ścieżk˛e do modułu rrdtool, jeżeli interpreter sam nie potrafi go zlokalizować opcjonalny parametr oznaczajacy ˛ ścieżk˛e do programu wykonywalnego rrdtool 3.2 3.1.4 Konfiguracja monitorowania celów 8 Uruchamianie mrtg Najprostszy sposób okresowego uruchamiania programu mrtg to użycie systemowego deamona cron. Taki sposób uruchamiania powoduje, że co ustalony czas uruchamiana jest nowy proces mrtg wykonujace ˛ swoje działania i kończacy ˛ prac˛e chwil˛e po tym. Przy każdym uruchomieniu parsowany jest plik konfiguracyjny. Sposobem na zmniejszenie obciażenia ˛ systemu przez mrtg jest uruchomienie go jako deamona. Należy wtedy ustawić parametr: RunAsDeamon uruchamianie MRTG jako deamona Niezb˛edne jest także stworzenie skryptu startowego, który uruchomi deamon podczas uruchamiania systemu. Parametrem, który musi być ustawiony razem z RunAsDeamon jest Interval: Interval jak cz˛esto uruchamiać mrtg Parametr ten warto ustawić jednak nie tylko, gdy uruchamiamy mrtg jako daemon. Jego ustawienie powoduje także, że nagłówek strony HTML b˛edzie zawierał informacj˛e o czasie życia tej strony. ˛ powinna przePodobne zadanie ma parametr Refresh, który wskazuje po jakim czasie przegladarka ładować stron˛e: Refresh 3.1.5 co jaki czas przeładować stron˛e Inne parametry W MRTG możliwe jest także wybranie jednego z kilkudziesi˛eciu dost˛epnych j˛ezyków, który użyty b˛edzie podczas generacji strony HTML: Language 3.2 3.2.1 wybór j˛ezyka, w jakim generowane b˛eda˛ strony HTML Konfiguracja monitorowania celów Podstawowe parametry Podstawowym parametrem jaki należy określić aby skonfigurować monitorowanie nowego celu jest parametr Target: Target co MRTG powinien monitorować Wartość dla tego parametru można podać w jednym z kilku dost˛epnych formatów: 3.2 Konfiguracja monitorowania celów 9 Basic Format ten ma postać port:community@router . Atrybut port oznacza interfejs hosta, MRTG wykorzystuje go pytajac ˛ o zmienna˛ SNMP o nazwie ifIndex. router jest adresem (IP lub nazwa˛ DNS) hosta. community jest rodzajem hasła, przesyłanego w wiadomościach SNMP i służy do autentykacji agenta SNMP. Każde urzadzenie ˛ przypisane jest do pewnej community, które można rozumieć także jako grup˛e urzadzeń. ˛ Domyślna˛ wartościa˛ tego atrybutu jest public. SNMPv2c Użycie tego formatu powoduje wykorzystanie wersji SNMPv2c protokołu SNMP, charakteryzuja˛ cego si˛e m.in. stosowaniem liczników 64-bitowych zamiast 32-bitowych. Ta wersja protokołu nie jest jednak wspierana przez wszystkie urzadzenia. ˛ Jeżeli chcemy użyć tego formatu, to na końcu dotychczasowego stringu musimy dodać cyfr˛e 2 poprzedzona˛ pi˛ecioma znakami „:” – omówiona tutaj składnia staje si˛e bardziej zrozumiała po zapoznaniu si˛e z formatem Extended Host Name Syntax, którego ten format jest w istocie cz˛eścia.˛ Reversing Powoduje, że ruch wychodzacy ˛ przedstawiany jest na wykresie jako wchodzacy ˛ i vice versa. Efekt ten uzyskujemy dodajac ˛ znak „-” przed definicja˛ celu. Interface by IP Ten format jest użyteczny, gdy indeksacja interfejsów SNMP ulega zmianie np. przez dodanie lub usuni˛ecie urzadzenia. ˛ Używajac ˛ tego formatu MRTG wysyła zapytanie do urzadzenia ˛ SNMP za pomoca˛ adresu IP i nast˛epnie próbuje znaleźć odpowiadajacy ˛ mu adres interfejsu SNMP. Tego formatu można używać z innymi wymienionymi tutaj formatami – dodajac ˛ go dodatkowo po OID a przed atrybutem community z prefiksem „/”. Interface by Description Formatu tego używamy w podobny sposób jak powyższego, z tym że zamiast adresów IP stosujemy opis interfejsów. MRTG wysyła wtedy zapytanie o zmienna˛ SNMP o nazwie ifDesc. Nazw˛e, o która˛ b˛edzie pytało MRTG wprowadzamy w pliku konfiguracyjnym z prefiksem „\”. – w tym samym miejscu, co w poprzednim przypadku Interface by Name Format ten jest użyteczny w przypadku monitorowania interfejsów switchów. MRTG wykorzystuje wtedy podczas zapytania zmienna˛ SNMP o nazwie ifName. Nazw˛e wprowadzamy ze prefiksem „#”. Interface by Ethernet Address Możliwe jest także podanie fizycznego adresu interfejsu. Aby użyć tego adresu należy poprzedzić go prefiksem „!”. Adres ten umieszczamy podobnie jak w przypadku adresu IP po OID a przed community. Poszczególne oktety adresu rozdzielane sa˛ znakami myślnika. Niektóre rutery używaja˛ identycznych adresów fizycznych dla wszystkich swoich interfejsów aby uniknać ˛ unikalnego zidentyfikowania poszczególnych interfejsów. Uniemożliwia to działanie MRTG – w takim przypadku MRTG monitoruje o napotkanym problemie. 3.2 Konfiguracja monitorowania celów 10 Interface by Type w przypadku gdy interfejsy, które chcemy monitorować nie maja˛ stałych wartość zmiennych SNMP ifIndex, ifDesc ani też ifName to rozwiazaniem ˛ może być pytanie interfejsu o jego typ. Typ interfejsu wprowadzamy z prefiksem „%”. Extended Host Name Syntax We wszystkich miejscach, w których zapis community@router jest dozwolony możliwe jest także stosowanie dodatkowych parametrów dla MRTG używajac ˛ składni: community@router[:[port][:[timeout][:[retries][:[backoff][:version]]]]] Znaczenie poszczególnych atrybutów jest nast˛epujace: ˛ port – port UDP przez który należy połaczyć ˛ si˛e z agentem SNMP timeout – poczatkowy ˛ timeout dla zapytań SNMP retries – ile razy zapytania b˛eda˛ powtarzane w przypadku niepowodzenia backoff – czynnik, przez który jest mnożony czas timeout przy każdym powtórzeniu version – ustawienie tego atrybutu na wartość „2” powoduje, że MRTG używa wersji SNMPv2c protokołu SNMP, charakteryzujacego ˛ si˛e m.in. stosowaniem liczników 64-bitowych zamiast 32bitowych; nie wszystkie rutery jednak obsługuja˛ ta˛ opcj˛e External Monitoring Scripts Wszystkie poprzednie formaty wartości przypisywanych parametrowi Target odpowiadały sytuacji, gdy wykorzystywaliśmy SNMP do pobierania danych o monitorowanych urzadzeniach. ˛ Jak zostało to wspomniane w rozdziale 1 MRTG może monitorować także inne wielkości o ile dostarczymy mu odpowiednie dane. W tym celu należy stworzyć skrypt, który zwraca 4 linie zawierajace: ˛ linia 1 – bieżacy ˛ stan pierwszej zmiennej (poprzez SNMP byłoby to – wysłana ilość bajtów) linia 2 – bieżacy ˛ stan drugiej zmiennej (odpowiednio – otrzymana ilość bajtów) linia 3 – string wskazujacy ˛ uptime danego urzadzenia ˛ linia 4 – string z nazwa˛ celu Nazw˛e skryptu podajemy wtedy w znakach „‘” jako wartość przypisana parametrowi Target. Multi Target Syntax MRTG umożliwia także łaczenie ˛ kilku monitorowanych celów w jeden. Jest to użyteczne w sytuacji, gdy chcemy mierzyć łaczn ˛ a˛ przepustowość na kilku interfejsach dodajac ˛ do siebie otrzymywane wartość. Możemy także mnożyć wartości uzyskiwane z poszczególnych interfejsów. Jako wartość parametru Target wpisujemy wtedy interfejsy, które chcemy łacznie ˛ monitorować oddzielajac ˛ je znakami np. „+” czy „*” i białymi znakami. W przypadku monitorowania równocześnie kilku interfejsów – jak w przypadku skorzystania z formatu Multi Target Syntax przy określaniu parametru Target – zazwyczaj na stronie HTML nie jest wyświetlany uptime rutera i jego nazwa. Jeżeli te interfejsy znajduja˛ si˛e na tym samym hoście, to możemy spowodować, że uptime i nazwa rutera b˛eda˛ wyświetlane. W tym celu należy użyć parametru RouterUptime, którego wartościa˛ powinno być community@router : RouterUptime wyświetlenie uptime i nazwy rutera, mimo że MRTG pobiera dane z kilku interfejsów 3.2 Konfiguracja monitorowania celów 11 Jeżeli monitorujemy kilka celów możemy uznać za zasadne umieszczanie generowanych przez MRTG plików w katalogach oddzielnych dla każdego celu. Umożliwia to parametr Directory, którego wartościa˛ jest nazwa katalogu. Parametr ten ma zastosowanie zarówno w przypadku używania jednego katalogu do trzymania wszystkich rodzajów plików generowanych przez MRTG za pomoca˛ parametru WorkDir (rozdz. 3.1.1), jak również wyspecyfikowania oddzielnych katalogów parametrami HtmlDir, LogDir i ImageDir (również rozdz. 3.1.1). Katalogi powinny zostać utworzone przed rozpocz˛eciem działania MRTG. Directory zapisywanie plików tworzonych przez MRTG do katalogów oddzielnych dla każdego celu Duże możliwości konfiguracji monitorowania wybranych celów zapewnia parametr Options: Options ustawienie dodatkowych opcji dla monitorowanego celu Wartościa˛ przypisana˛ do parametru Options jest lista słów – opcji oddzielonych przecinkami wybranych z predefiniowanego zestawu. Za pomoca˛ opcji gauge i absolute możemy zmienić sposób obliczania wartości monitorowanych wielkości, o czym była mowa w sekcji 2: gauge wartości otrzymane przez MRTG sa˛ traktowane jako wartości obrazujace ˛ aktualny stan monitorowanej wielkości – nie sa˛ dokonywane żadne obliczenia – takie jak odejmowanie bieżacej ˛ wartości od wartości poprzedniej i dzielenie przez czas pomi˛edzy odczytami; taki sposób działania jest użyteczny w przypadku monitorowania zaj˛etości dysków, obciażenia ˛ procesora itp. absolute wartość bieżaca ˛ nie jest odejmowana od wartości poprzedniej podczas dokonywania obliczeń; podobnie jednak jak w domyślnym sposobie działania dokonywane jest dzielenie przez czas pomi˛edzy odczytami MRTG domyślnie działa w ten sposób, że gdy nie zna wartości mierzonej wielkości w danym momencie, to przyjmuje, że jest ona równa ostatniej odczytanej wartości. W przypadku ciagłego ˛ monitorowania np. obciażenia ˛ sieciowego jest to bardziej prawdopodobna sytuacja niż przyj˛ecie, że nie było w tym czasie żadnego ruchu na danym interfejsie. Możliwa jest jednak zmiana tego ustawienia: unknaszero ustawienie tej opcji powoduje, że nieznane wartości mierzonej wielkości sa˛ logowane jako zero Powiazana ˛ z powyższa˛ jest opcja withzeroes, która powoduje zmian˛e domyślnego zachowania MRTG w stosunku do wartości zerowych. Mianowicie – podczas obliczania wartości średnich emphMRTG pomija wartości zerowe. Jeśli chcemy zmienić te sposób działania powinniśmy użyć wspomnianej opcji: withzeroes MRTG bierze pod uwag˛e wartości zerowe podczas obliczania wartości średniej Pozostałe opcje, które można przypisać do parametru Options opisane sa˛ nast˛epnych podrozdziałach. 3.2 3.2.2 Konfiguracja monitorowania celów 12 Maksymalne wartości zmiennych Po ustaleniu wartości parametru Target należy ustalić jakie wartości maksymalne moga˛ osiagn ˛ ać ˛ monitorowane wielkości. Otrzymana wartość przekraczajaca ˛ wartość określona˛ tym parametrem jest ignorowana. Wartości maksymalne można określić dla obu zmiennych razem lub oddzielnie dla każdej z nich: MaxBytes MaxBytes1 MaxBytes2 wartość maksymalna obu zmiennych wartość maksymalna pierwszej zmiennej wartość maksymalna drugiej zmiennej Opcjonalnym parametrem zwiazanym ˛ z powyższymi jest AbsMax, który jest użyteczny, gdy monitorowana wielkość może przekraczać wartość określona˛ przez MaxBytes. Ustawienie parametru AbsMax powoduje, że wartości przekraczajace ˛ MaxBytes, ale mniejsze od AbsMax b˛eda˛ jednak logowane do pliku log. 3.2.3 Wyglad ˛ strony HTML Za pomoca˛ parametrów pliku konfiguracyjnego możemy ustawić wyglad ˛ generowanej strony HTML. Poniższe dwa parametry sa˛ obowiazkowe: ˛ Title PageTop tytuł strony HTML informacje wstawiane na poczatku ˛ strony HTML – po znaczniku <body> Dla każdego monitorowanego celu możemy ustalić też nast˛epujace ˛ parametry opcjonalne: PageFoot AddHead BodyTag dodatkowe informacje wstawiane na końcu strony bezpośrednio przed znacznikiem </body> wstawienie dodatkowych znaczników pomi˛edzy </title> i </head> – w ten sposób możemy np. wstawić link do pliku ze stylami CSS określa własny znacznik <body> Poniżej każdego wykresu wyświetlane sa˛ informacje maksymalnych, średnich i aktualnych wartościach obu monitorowanych zmiennych. Za pomoca˛ parametru Factor można podać czynnik, przez który te wyświetlane wartości b˛eda˛ mnożone: Factor czynnik, przez który mnożone sa˛ wyświetlane pod każdym wykresem wartości: maksymalne, średnie i bieżace ˛ obu monitorowanych zmiennych Możliwe jest także poinstruowanie MRTG aby zamiast dodawania domyślnego rozszerzenia .html do tworzonych plików ze stronami dodawał do nich inne rozszerzenie: Extension rozszerzenie plików ze stronami www Możliwa jest także zmiana kolorów odpowiadajacych ˛ poszczególnym zmiennym oraz ich wartościom maksymalnym. Odpowiada za to parametr Colours, którego wartościa˛ jest string o postaci: Col1#RRGGBB,Col2#RRGGBB,Col3#RRGGBB,Col4#RRGGBB, gdzie Col1 i Col2 oznaczaja˛ odpowiednio pierwsza˛ i druga˛ zmienna,˛ a Col3 i Col4 – ich wartości maksymalne. To co wpiszemy w miejscach Col1, ..., Col4 pojawia si˛e u dołu strony w legendzie. Legenda taka domyślnie dla pierwszej zmiennej wyglada ˛ przykładowo w nast˛epujacy ˛ sposób: 3.2 Konfiguracja monitorowania celów 13 ZIELONY ### Ruch przychodzacy ˛ - Bajty na sekund˛e Jeśli zdefiniujemy własne kolory, to zamiast – jak w tym przypadku słowa ZIELONY dostaniemy to, co wpiszemy w miejsce Col1. Natomiast RRGGBB to oczywiście kolor przypisany tym wielkościom zarówno na wykresie, a w przypadku Col1 i Col2 także pod wykresem – w miejscu, gdzie wyświetlane sa˛ wartości bieżace, ˛ średnie itd. każdej ze zmiennych. Colours przypisanie kolorów mierzonym wielkościom W przypadku użycia opisanej w dalszej cz˛eści tej sekcji opcji dorepercent parametru Options powodujacego ˛ pojawienie si˛e jeszcze jednej wielkości podlegajacej ˛ wizualizacji konieczne jest określenie jeszcze jednego koloru. Dodajemy go na końcu wspomnianego stringu. ˛ do ustaMówiac ˛ o kolorach na stronie HTML należy wspomnieć jeszcze o opcji Background służacej wienia koloru tła generowanej strony. Oczywiście ten sam efekt można osiagn ˛ ać ˛ używajac ˛ opisa˛ znacznik <body> i określajac ˛ w nim kolor. nego wcześniej parametru BodyTag samodzielnie tworzac Można też użyć AddHead i za jego pomoca˛ podać link do strony ze zdefiniowanymi stylami CSS, które dotyczyć moga˛ m.in. koloru tła. Background kolor tła generowanej strony HTML Używajac ˛ wspomnianego już w sekcji 3.2.1 parametru Options możemy także wpływać na postać generowanej strony HTML. W szczególności służa˛ do tego nast˛epujace ˛ opcje, które możemy przypisać do tego parametru: bits wszystkie wartości monitorowanych wielkości mnożone sa˛ przez 8 – powodujac ˛ wyświetlanie wartości w bitach, a nie w bajtach; zmieniane sa˛ także jednostki opisujace ˛ wykres oraz umieszczone przy wartościach maksymalnych, średnich i bieżacych ˛ poniżej wykresu perminute wszystkie wartości monitorowanych wielkości mnożone sa˛ przez 60; podobnie jak przy poprzedniej opcji zmieniane sa˛ jednostki na wykresie oraz pod nim perhour wszystkie wartości monitorowanych wielkości mnożone sa˛ przez 3600; jak w dwóch poprzednich przypadkach zmieniane sa˛ także jednostki na wykresie oraz poniżej noinfo informacje o uptime i nazwie komputera nie sa˛ umieszczane na generowanej stronie nopercent informacje o stosunku procentowym wartości np. bieżacej ˛ do ustalonej wartości maksymalnej nie sa˛ wyświetlane na stronie integer wartości poniżej wykresów zaokraglane ˛ sa˛ do wartości całkowitych dorelpercent powoduje, że pod wykresami oprócz wyświetlania wartości – maksymalnych, średnich i bieżacych ˛ dla obu monitorowanych zmiennych wyświetlana jest jeszcze trzecia linia pokazujac ˛ stosunek ruchu wejściowego do ruchu wyjściowego w skali od 0 do 100% 3.2 Konfiguracja monitorowania celów 14 noi powoduje, że na stronie nie b˛eda˛ wyświetlane wartości pierwszej ze zmiennych; podobnie na wykresach nie b˛edzie przedstawiana ta zmienna; zamiast litery i w słowie noi można użyć cyfry 1 lub 2 – możemy w ten sposób zdecydować, której zmiennej nie wyświetlać; opcja ta nie wpływa na logowanie wartości zmiennych do pliku – powoduje tylko ukrycie jednej z nich noo ma takie samo znaczenie jak powyższa opcja, z tym że bez użycia 1 lub 2 zamiast drugiego o dotyczy drugiej zmiennej nobanner powoduje, że na generowanej stronie nie zostanie umieszczony banner reklamowy nolegend rezygnacja z generowania legendy do poszczególnych zmiennych umieszczanej domyślnie u dołu strony Jeżeli zdecydujemy si˛e jednak pozostawić legend˛e u dołu strony, to możemy określić co b˛edzie wypisywane w niej wypisywane. Dla przypomnienia domyślnie pierwsza linia takiej legendy w polskiej wersji j˛ezykowej wyglada ˛ nast˛epujaco: ˛ ZIELONY ### Ruch przychodzacy ˛ - Bajty na sekund˛e Pierwsza˛ cz˛eść takiej linii możemy zmienić za pomoca˛ opisanego wcześniej parametru Colours, natomiast druga˛ za pomoca˛ parametrów Legend1, ..., Legend4: Legend1...4 opis poszczególnych wielkości wizualizowanych na wykresie Bardzo podobne sa˛ parametry LegendI i Legend0 – powoduja˛ one użycie stringów podanych za tymi parametrami zamiast domyślnych Do i Z w liniach umieszczonych pod wykresem prezentujacych ˛ maksymalne, średnie i bieżace ˛ wartości mierzonych zmiennych. W powyższych liniach możliwa jest także zmiana wyświetlanych jednostek: LegendI,O ShortLegend 3.2.4 nazwy mierzonych zmiennych jednostki, w których mierzone sa˛ zmienne Parametry wykresów Domyślnie wszystkie wykresy sa˛ skalowane w ten sposób, że jeżeli zmienne osiagaj ˛ a˛ wartości mniejsze od wartości ustalonej parametrem MaxBytes, to wykres jest skalowany aby pokazać mierzone wartości. Można uniknać ˛ takiego zachowania – oddzielnie dla każdego wykresu – za pomoca˛ parametru Unscaled: Unscaled zatrzymanie skalowania dla poszczególnych wykresów Wartościa˛ tego parametru jest string, który można utworzyć z czterech liter: d (day), w (week), m (month), y (year). Wystapienie ˛ litery w stringu oznacza zaniechania skalowania odpowiadajacego ˛ jej wykresu. Stringu o takiej samym znaczeniu używamy także jako wartości parametru WithPeak, który decyduje o tym, czy oprócz wartości średnich na wykresach wyświetlać także wykres z wartościami szczytowymi: 3.2 Konfiguracja monitorowania celów WithPeak 15 wyświetlanie wartości maksymalnych oprócz wartości średnich Za pomoca˛ opcjonalnych parametrów XSize i YSize można zmienić wymiary wykresów z domyślnych wartości, którymi sa˛ nieco ponad 100 i 400. Nowe wartości powinny być wi˛eksze od 20, a XSize powinno być dodatkowo mniejsze od 600. XSize YSize rozmiar generowanych wykresów w poziomie rozmiar generowanych wykresów w pionie Można także zwi˛ekszyć rozmiar pikseli wykorzystujac ˛ parametry: XZoom YZoom powi˛ekszenie generowanych wykresów w poziomie powi˛ekszenie generowanych wykresów w pionie Kolejna˛ możliwościa˛ jest przeskalowanie wykresów, ale wg. autora pakietu MRTG nie daje to zadawalajacych ˛ efektów wizualnych. XScale YScale skalowanie generowanych wykresów w poziomie skalowanie generowanych wykresów w pionie Domyślnie MRTG wyświetla cztery linie poziome na wykresie. Zmiana ich ilości możliwa jest dzi˛eki opcji YTics. Można także wpłynać ˛ na etykiety liczbowe wyświetlane wzdłuż osi Y sprawiajac, ˛ że ich wartości b˛eda˛ przeskalowane o czynnik podany jako wartość parametru YTicksFactor. YTicks YTicksFactors ilość poziomych linii wyświetlanych na wykresie czynnik skalujacy ˛ etykiety tekstowe wzdłuż osi Y Po ustawieniu powyższych parametrów osi Y możemy jeszcze zmienić napis wyświetlany wzdłuż tej osi. Służy do tego parametr YLegend – należy jednak uważać, aby nie wpisać zbyt długiego tekstu, bo wtedy zostanie on zignorowany. YLegend opis osi Y W sekcji 3.2.3 omówiony został parametr Colours, którego przypomnienie w tym miejscu wydaje si˛e celowe. Za jego pomoca˛ można bowiem definiować kolory, za pomoca˛ których b˛eda˛ rysowane wykresy poszczególnych wielkości przedstawianych na wykresach. Dokładniejszy opis tego parametru znajduje si˛e w sekcji 3.2.3. Używajac ˛ wspomnianego już w sekcji 3.2.1 parametru Options możemy zmienić także własności generowanych wykresów. W szczególności wymienione już opcje bits, perminute i perhour powoduja˛ przeskalowanie wykresów i wyświetlanie zmienionych etykiet przy osiach pionowych. Z kolei opcja dorelpercent umieszcza stosunkowe wartości ruchu wchodzacego ˛ (pierwszej zmiennej) do ruchu wychodzacego ˛ (drugiej zmiennej) także na wykresie. Spośród już opisanych opcji na tworzenie wykresów maja˛ wpływ jeszcze opcje – noi i noo powodujac ˛ pomijanie rysowania wykresów dla jednej ze zmiennych. Dost˛epne sa˛ jednak jeszcze inne opcje wpływajace ˛ na prezentacje wyników na wykresach: transparent powoduje, że tło generowanych wykresów jest przezroczyste noborder powoduje, że wykresy rysowane sa˛ bez domyślnego obramowania noarrow na osiach wykresu nie sa˛ rysowane strzałki 3.3 Sprawdzanie wartości progowych 16 Możliwe jest wreszcie zrezygnowanie z wyświetlania niektórych wykresów – odpowiada za to parametr Suppress, którego powinien być string podobny zbudowany w identyczny sposób jak w dwóch poprzednich opcjach: Suppress 3.2.5 zablokowanie wyświetlania poszczególnych wykresów Inne parametry Pakiet MRTG daje bardzo szerokie możliwości dostosowania ustawień monitorowanych celów do własnych potrzeb. W tym rozdziale opisanych jest kilka ostatnich parametrów możliwych do użycia w sekcji pliku konfiguracyjnego dotyczacego ˛ poszczególnych celów. Możliwa jest m.in. zmiana wartości mnożnika, który decyduje o użyciu przedrostków „kilo”, „mega” itd. z domyślnej wartości 1000: zmiana wartości mnożnika używanego do budowania prefiksów jednostek kilo Litery, jakie b˛eda˛ użyte można także zdefiniować – służy do tego parametr kMG. Jego wartościa˛ jest lista liter oddzielona przecinkami zawierajaca ˛ kolejne przedrostki. Dwa przecinki po sobie oznaczaja˛ brak przedrostka. Możliwe jest także zrezygnowanie z używania przedrostków pozostawiajac ˛ wartość tego parametru pusta.˛ określenie przedrostków jednostek lub rezygnacja z ich użycia kMG W przypadku stosowania zewn˛etrznych skryptów generujacych ˛ dane dla MRTG możemy skorzystać z opcji SetEnv pozwalajacej ˛ na ustawienie zmiennych środowiskowych: SetEnv 3.3 ustawienie zmiennych środowiskowych Sprawdzanie wartości progowych Oprócz wizualizacji monitorowanych zmiennych MRTG zapewnia dodatkowa˛ funkcjonalność – a mianowicie reakcj˛e na przekroczenie przez monitorowane wielkości ustalonych progów. Można ustalić progi minimalne i maksymalne dla poszczególnych zmiennych, których przekroczenie b˛edzie powodowało wywołanie zewn˛etrznych skryptów, które np. wysyłaja˛ maila do administratora. Aby skorzystać z takiej możliwości należy zdefiniować nast˛epujacy ˛ parametr globalny: ThreshDir katalog, w którym MRTG zapisuje informacje o przekroczeniu progów, które wykorzystuje m.in. D o uruchamiania programów określonego parametrami ThreshProgOKI i ThreshProgOKO (patrz niżej) Nast˛epnie – już dla każdego monitorowanego celu należy zdefiniować wartości progowe: 3.4 Definiowanie wartości domyślnych ThreshMinI, ThreshMinO ThreshMaxI, ThreshMaxO 17 minimalne wartości odpowiednio dla pierwszej i drugiej zmiennej; wartości te moga˛ być zakończone znakiem „\%” – wtedy sa˛ to procentowe wartości wzgl˛edem parametru MaxBytes maksymalne wartości odpowiednio dla pierwszej i drugiej zmiennej; podobnie jak w powyżej wartości te moga˛ być zakończone znakiem „\%” – wtedy sa˛ to procentowe wartości wzgl˛edem parametru MaxBytes Pozostaje jeszcze określić programy uruchamiane w przypadku przekroczenia powyższych wartości. Określamy je oczywiście oddzielnie dla każdego z celów. ThreshProgI, ThreshProgO programy uruchamiane przy przekroczeniu wartości progowych przez odpowiednio – pierwsza˛ i druga˛ zmienna˛ Dodatkowo można także podać nazwy programów uruchamianych, gdy wartości zmiennych co prawda sa˛ już w dozwolonym zakresie, ale z informacji znalezionych w plikach z katalogu ThreshDir wynika, że poprzednim razem wartość (wartości) zmiennej była przekroczona. Jest to program uruchamiany, gdy monitorowane wielkości wracaja˛ do normy. ThreshProgOKI, ThreshProgOKO programy uruchamiane, gdy wartości zmiennych sa˛ prawidłowe, ale w poprzednim uruchomieniu były nieprawidłowe; parametry dotycza˛ odpowiednio – pierwszej i drugiej zmiennej Dodatkowo można wykorzystać poniższa˛ opcj˛e – także definiowana˛ dla każdego z celów: ThreshDesc 3.4 wartość tego parametru jest przypisywana do zmiennej środowiskowej THRESH_DESC przed wywołaniem któregokolwiek z powyższych programów Definiowanie wartości domyślnych Konfigurujac ˛ monitorowanie wielu celów za pomoca˛ MRTG możemy skorzystać z możliwości zdefiniowania wartości domyślnych dla wszystkich celów. Jeżeli chcemy przypisać domyślna˛ wartość parametrowi dotyczacemu ˛ konfiguracji celów, to w nawiasach kwadratowych zamiast nazwy celu umieszczamy znak „_” – np. Options[_]:growright,bits,nopercent . Jeżeli w dalszej cz˛eści pliku konfiguracyjnego dla poszczególnego celu nie podamy wartości tego parametru (w tym przypadku – parametru Options), to dla niego zostana˛ użyte wartości domyślne. Oprócz specjalnego znaku „_” dost˛epne sa˛ jeszcze dwa inne używane również zamiast nazwy celu. Znak „^” powoduje, że wartość przypisana do parametru z takim znakiem jest dołaczana ˛ do poczatku ˛ wartości specyfikujacej ˛ ten sam parametr dla poszczególnego celu. Przykładowo możemy określić parametr PageTop[^]: o wartości np. <h1>Wspólny nagłówek strony dla wszystkich celów</h1>, która b˛edzie dołaczana ˛ do wartości parametrów PageTop[<nazwa celu>] na ich poczatku. ˛ Ostatnim z tych znaków o specjalnym znaczeniu jest znak „$”, którego działanie jest identyczne do znaku „^”, z ta˛ różnica,˛ że sprecyzowana wartość dołaczana ˛ jest na końcu wartości przypisanej poszczególnym celom. 4 Narz˛edzia dost˛epne wraz z MRTG 4 4.1 18 Narz˛edzia dost˛epne wraz z MRTG Generowanie pliku konfiguracyjnego Konfiguracja działania MRTG możliwa jest także za pomoca˛ programu cfgmaker. Program ten korzystajac ˛ z podanych mu opcji generuje plik konfiguracyjny. Składania jego wywołania jest nast˛epujaca: ˛ cfgmaker [options] [community@]router [[options] [community@]router ...] Jak widać, umożliwia ona generowanie plików konfiguracyjnych dla wielu celów równocześnie, gdyż możemy podajemy równocześnie wi˛ecej hostów, które monitorujemy. Użycie poszczególnych opcji powoduje dopisanie odpowiadajacych ˛ im parametrów do pliku konfiguracyjnego. Zdecydowaliśmy, że nie b˛edziemy opisywać opcji tego programu, gdyż konfiguracja za pomoca˛ programu cfgmaker jest odpowiednikiem wykonywania tej czynności za pomoca˛ pliku konfiguracyjnego. Skupiliśmy si˛e na dokładnym opisaniu tej drugiej możliwości, gdyż, naszym zdaniem, jest ona bardziej intuicyjna – poza tym łatwiej jest wprowadzać modyfikacje r˛ecznie edytujac ˛ plik konfiguracyjny niż generować go od nowa. 4.2 Generowanie strony – indeksu ˛ do geneKolejnym programem dostarczanym w pakiecie MRTG jest program indexmaker służacy racji strony HTML – indeksu zawierajacej ˛ informacje o monitorowanych celach prezentujac ˛ przykładowo po jednym wykresie dla każdego celu. Umożliwia to nawigacj˛e po stronach HTML poszczególnych celów. Program ten posiada nast˛epujac ˛ a˛ składni˛e: indexmaker [options] regexp mrtg.cfg [other.cfg ...] W miejsce mrtg.cfg powinniśmy podać prawidłowa˛ ścieżk˛e do pliku konfiguracyjnego. Jeśli chodzi natomiast o opcje, to mamy tutaj do wyboru nast˛epujace ˛ możliwości – przede wszystkim należy sprecyzować plik, do którego wpisywana jest generowana strona HTML zamiast na standardowe wyjście: --output=filename plik, do którego zapisywana jest generowana strona HTML Domyślnie plik o podanej nazwie zostanie zapisany w katalogu sprecyzowanym parametrem WorkDir lub HtmlDir (rozdz. 3.1.1). Można zmienić katalog, do którego zostanie zapisany ten plik podajac ˛ opcj˛e --prefix=path. --prefix=path katalog, w którym powinien zostać utworzony plik Na generowanej stronie możemy wyświetlić wybrane wykresy dotyczace ˛ wszystkich lub tylko wybranych celów. Aby wybrać, które cele maja˛ zostać wyświetlone na tej stronie możemy skorzystać z filtrów, które porównuja˛ wartości ustawione w pliku konfiguracyjnym takie jak: tytuł strony (ustalony parametrem Title – rozdz. 3.2.3), nagłówek strony (ustalony parametrem PageTop – rozdz. 3.2.3) lub nazw˛e celu (rozdz. 3) z wyrażeniem regularnym. --filter title(=~|!~)regexp filtrowanie celów wg. tytułów --filter pagetop(=~|!~)regexp filtrowanie celów wg. nagłówków stron --filter name(=~|!~)regexp filtrowanie celów wg. nazw celów 5 Przykładowe konfiguracje 19 gdzie =~ oznacza, że tytuły, nagłówki czy też nazwy celów maja˛ być zgodne z podanym wyrażeniem regularnym, a !~ oznacza sytuacj˛e odwrotna.˛ Wyświetlane wykresy można też posortować wg. trzech kryteriów: --sort=title sortowanie wykresów wg. tytułów --sort=name sortowanie wykresów wg. nazw celów --sort=descr sortowanie wykresów wg. opisów Można też zostawić wykresy nieposortowane: --sort=original pozostawienie wykresów nieposortowanych Możliwe jest także ustalenie parametrów generowanej strony w dość szerokim zakresie: --title=text tytuł generowanej strony --bodyopt=text wartość tego parametru jest dołaczana ˛ do znacznika <body>; za jego pomoca˛ możemy ustalić np. kolory strony --columns=number wyświetlanie wykresów w tabeli o podanej liczbie kolumn --ennumerate dodanie kolejnych numerów do tytułów poszczególnych wykresów --width=number szerokość wykresów --height=number wysokość wykresów Możliwe jest także sprecyzowanie, jaki element zwiazany ˛ z celem (badź ˛ ze strona˛ HTML przedstawiajac ˛ a˛ ten cel) użyć jako tytuł wykresu na generowanej stronie: --section=h1 użycie nagłówka określonego znacznikami <h1>, </h1> za pomoca˛ parametru PageTop w pliku konfiguracyjnym (rozdz. 3.2.3) jako tytułu wykresu --section=title użycie tytułu strony jako tytułu wykresu; tytuł wykresu określamy parametrem Title w pliku konfiguracyjnym (rozdz. 3.2.3) --section=name użycie nazwy celu jako tytułu wykresu (rozdz. 3) --section=descr użycie opisu celu jako tytułu wykresu --section=portname użycie nazwy portu jako tytułu wykresu Wreszcie możliwe jest określenie, które z wygenerowanych wykresów maja˛ być umieszczane na tworzonej stronie: --show=day wyświetlanie wykresów dziennych --show=week wyświetlanie wykresów tygodniowych --show=month wyświetlanie wykresów miesi˛ecznych --show=year wyświetlanie wykresów rocznych --show=none zrezygnowanie z wyświetlania jakichkolwiek wykresów 5 Przykładowe konfiguracje Bieżacy ˛ rodział zawiera opisy kilku przykładowych konfiguracji służacych ˛ do pomiarów różnych wielkości w systemie komputerowym (m.in. obciażenia ˛ procesora, ilości pracujacych ˛ procesów, itp). Konfiguracja taka składa si˛e z odpowiedniego zapisu w pliku konfiguracyjnym MRTG oraz skryptu pomiarowego używanego, gdy monitorowany obiekt nie dostarcza danych przez snmp. Skrypt taki musi zwracać 4 linie: 5.1 Funkcja procesUptime() 20 linia 1 - bieżaca ˛ wartość pierwszej wielkości mierzonej, linia 2 - bieżaca ˛ wartość drugiej wielkości mierzonej, linia 3 - napis zawierajacy ˛ czas pracy komputera (w dowolnym formacie), na którym dokonywane sa˛ pomiary, linia 4 - napis stanowiacy ˛ nazw˛e komputera. 5.1 Funkcja procesUptime() Każdy z przykładowych skryptów zamieszczonych poniżej zawiera funkcj˛e procesUptime() służac ˛ a˛ do przetworzenia wyniku polecenia uptime, tak aby uzyskać z niego potrzebne dane o czasie pracy komputera, na którym wykonywane sa˛ pomiary. Kod funkcji: function procesUptime() { #resultUptime zawiera wynik wywołania polecenia uptime uptime=‘echo $resultUptime | awk ’{ #dla czasu w~dniach if ( index($0,"day") != 0 ) { #wypisanie ilości dni print $3; if($3 == 1) print "dzień"; else print "dni"; #dla czasu w~minutach if( index($0,"min") != 0 ) { #wypisanie ilości minut print $5,"min"; } #dla czasu w~godzinach else { #wypisanie ilości godzin print substr($5,1,length($5)-1); } } #dla czasu w~minutach else if( index($0,"min") != 0 ) { #wypisanie ilości minut 5.2 Pomiar zaj˛etości dysków w systemie 21 print $3,"min"; } #dla czasu w~godzinach else { #wypisanie ilości godzin print substr($3,1,length($3)-1); } }’‘; } 5.2 5.2.1 Pomiar zaj˛etości dysków w systemie Skrypt do pomiaru procentowej zaj˛etości dysku w systemie Opis: Skrypt służy do pomiaru procentowej zaj˛etości wybranego dysku w systemie. Zwraca on również czas pracy oraz nazw˛e komputera, dla którego dokonywane sa˛ pomiary. W celu wykonywania pomiarów na komputerze zdalnym wymagany jest program rsh (lub ssh). Dodatkowo należy sprawdzić wartość zmiennej rsh w skrypcie i w razie potrzeby dokonać jej modyfikacji. Działanie: Skrypt używa rsh w celu wywołania polecenia df na zdalnym komputerze. W przypadku systemu operacyjnego SunOS polecenie to uruchamiane jest z parametrem -k. Otrzymany wynik przetwarzany jest nast˛epnie przez awk w celu znalezienia linii odnoszacej ˛ si˛e do właściwego dysku i wyłuskania z niej jego procentowej zaj˛etości. Poza tym skrypt korzysta z polecenia uptime w celu uzyskania czasu pracy komputera. Gdy pomiary wykonywane sa˛ na komputerze lokalnym, dodatkowo używane jest polecenie hostname, aby uzyskać nazw˛e tego komputera. Kod skryptu: # # # # # # # Sposób użycia: diskspace.sh machine os disk gdzie: machine - nazwa lub IP komputera os - system operacyjny komputera; dopuszczalne wartości to sunos i~linux disk - nazwa dysku w~systemie (a właściwie filesystem) lub miejsce jego podmontowania #Komenda rsh potrzebna przy pomiarze obciażenia ˛ procesora na~zdalnym #komputerze. Wymagana jest poprawna konfiguracja rsh - plik .rhosts na #komputerze zdalnym. rsh="rsh"; 5.2 Pomiar zaj˛etości dysków w systemie #sprawdzenie poprawnej ilości parametrów skryptu if [ $# -ne 3 ]; then echo "Usage: diskspace.sh machine os disk"; echo " os: sunos linux"; exit 1; fi #zmienna przechowywujaca ˛ nazw˛ e komputera, dla którego tworzone sa˛ #charakterystyki machine=$1; #dla systemu operacyjnego SunOS if [ $2 == "sunos" ]; then #pomiary wykonywane na~komputerze lokalnym - procentowa zaj˛ etość dysku #i czas pracy komputera. Dokonuje si˛ e też tutaj pobrania nazwy komputera. if [ $1 == "localhost" ]; then resultDisk=‘df -k | awk -v disk=$3 \ ’{ if($1 == disk || $6 == disk) print $5; }’‘; resultUptime=‘uptime‘; machine=‘hostname‘; #pomiar wykonywany na~komputerze zdalnym - procentowa zaj˛ etość dysku #oraz czas pracy komputera else resultDisk=‘$rsh $1 "df -k" | awk -v disk=$3 \ ’{ if($1 == disk || $6 == disk) print $5; }’‘; resultUptime=‘$rsh $1 "uptime"‘; fi; #dla systemu operacyjnego Linux (podobnie jak dla systemu SunOS) elif [ $2 == "linux" ]; then if [ $1 == "localhost" ]; then resultDisk=‘df | awk -v disk=$3 \ ’{ if($1 == disk || $6 == disk) print $5; }’‘; resultUptime=‘uptime‘; machine=‘hostname‘; else resultDisk=‘$rsh $1 "df" | awk -v disk=$3 \ ’{ if($1 == disk || $6 == disk) print $5; }’‘; resultUptime=‘$rsh $1 "uptime"‘; fi; #w przypadku podania bł˛ ednego systemu operacyjnego nast˛ epuje wypisanie #informacji o~sposobie uruchamiania skryptu i~zakończenie jego pracy else echo "Usage: diskspace.sh machine os disk"; 22 5.2 Pomiar zaj˛etości dysków w systemie echo " exit 1; 23 os: sunos linux"; fi #przetworzenie wyniku polecenia ’uptime’, tak aby uzyskać z~niego tylko #informacje odnośnie czasu pracy komputera - wywołanie funkcji #procesUptime() procesUptime; #wypisanie procentowej zaj˛ etości dysku echo $resultDisk; #w tym skrypcie mierzona jest tylko jedna wielkość, zero zwracane jest #jako wartość drugiej wielkości do~mrtg echo 0; #wypisanie czasu pracy i~nazwy komputera echo $uptime; echo $machine; #jeśli wszystko si˛ e powiedzie, skrypt zwraca do~powłoki wartość 0 exit 0; 5.2.2 Zapis w pliku konfiguracyjnym MRTG Target[wierchroot]: ‘/usr/local/mrtg-2/contrib/diskspace/diskspace.sh \ localhost linux /dev/hda4‘ MaxBytes[wierchroot]: 100 Options[wierchroot]: gauge,growright,noarrow,unknaszero,noo,nopercent, noborder Unscaled[wierchroot]: dwym YLegend[wierchroot]: % dysku ShortLegend[wierchroot]: % dysku LegendI[wierchroot]: zaj˛etość dysku Legend1[wierchroot]: Procentowa zaj˛ etość wybranego dysku Title[wierchroot]: wierch.ds5.agh.edu.pl PageTop[wierchroot]: <H1>Zaj˛etość dysku / </H1> <TABLE> <TR><TD>Serwer:</TD><TD>wierch.ds5.agh.edu.pl</TD></TR> </TABLE> Powyższy fragment pliku konfiguracyjnego MRTG opisuje generowanie statystyk obrazuja˛ cych procentowa˛ zaj˛etość dysku /dev/hda4 znajdujacego ˛ si˛e na lokalnym komputerze pracujacym ˛ w systemie Linux. Bieżace ˛ wartości wielkości mierzonej dostarczane sa˛ przez skrypt diskspace.sh. Maksymalna wartość mierzonej wielkości to 100% (parametr MaxBytes). Użyte w przykładzie opcje (parametr Options) powoduja, ˛ że wynik pomiaru traktowany jest jako wartość mierzonej 5.3 Pomiar obciażenia ˛ procesora 24 Rysunek 1: Fragment wygenerowanej strony dla pomiaru zaj˛etości dysku wielkości w danym momencie, generowane wykresy przebiegaja˛ od lewej do prawej, oś X nie jest zakończona strzałka,˛ nieznana wartość pomiaru w danym momencie traktowana jest tak, jakby wynosiła zero, MRTG nie generuje wykresów dla drugiej wielkości oraz nie zamiesza wartości procentowych w statystykach pod wykresami. Ostatnia opcja powoduje, że rysunki z wykresami nie zawieraja˛ obramowania. Generowane wykresy nie sa˛ skalowane (parametr Unscaled), czyli wartości przedstawiane sa˛ zawsze w przedziale od 0 do 100%. Kolejne 4 parametry (YLegend – Legend1) konfiguruja˛ opisy wykresów oraz legend˛e, parametr Title wskazuje, co ma być umieszczone pomi˛edzy znacznikami <TITLE></TITLE> w generowanej stronie www, natomiast PageTop zawiera fragment HTML-owego kodu strony umieszczanego zaraz za znacznikiem <BODY>. Fragment wygenerowanej strony wraz z dziennym wykresem dla pomiaru zaj˛etości dysku przedstawia rysunek 1. 5.3 5.3.1 Pomiar obciażenia ˛ procesora Skrypt do pomiaru obciażenia ˛ procesora w systemie Opis: Skrypt służy do pomiaru obciażenia ˛ procesora przez procesy użytkowników i procesy systemowe. Zwraca on również czas pracy oraz nazw˛e komputera, dla którego dokonywane sa˛ pomiary. Za wzór do napisania tego skryptu posłużył wadliwie działajacy ˛ skrypt do pomiaru obciażenia ˛ CPU, dołaczony ˛ do MRTG w wersji 2.9.17. Dla zapewnienia poprawnej pracy wymagane jest zainstalowanie programów sar i rsh (lub ssh) na komputerze, na którym maja˛ być wykonywanie pomiary. Ponieważ dystrybucje linuxa cz˛esto nie 5.3 Pomiar obciażenia ˛ procesora 25 zawieraja˛ programu sar, b˛edacego ˛ cz˛eścia˛ pakietu sysstat, dlatego należy go doinstalować. Aktualna˛ wersj˛e pakietu sysstat można znaleźć pod adresem: http://perso.wanadoo.fr/sebastien.godard/ W celu wykonywania pomiarów na komputerze zdalnym być może potrzebna b˛edzie modyfikacja wartości zmiennej rsh w skrypcie. Działanie: Skrypt używa programu rsh w celu uruchomienia programu sar na zdalnym komputerze. Sar próbkuje obciażenie ˛ procesora przez procesy użytkowników i procesy systemowe co sekund˛e, przez 10 sekund (komenda: sar -u 1 10). Podsumowanie próbkowania zwracane jest do skryptu, który nast˛epnie dokonuje jego przetworzenia tak, aby zwrócić wyniki, w odpowiednim dla MRTG, formacie. Poza tym skrypt korzysta z polecenia uptime w celu uzyskania czasu pracy komputera. Gdy pomiary wykonywane sa˛ na komputerze lokalnym, dodatkowo używane jest polecenie hostname, aby uzyskać nazw˛e tego komputera. Kod skryptu: # # # # # # # Sposób użycia: cpuinfo.sh machine os sar gdzie: machine - nazwa lub IP komputera os - system operacyjny komputera; dopuszczalne wartości to sunos i~linux sar - ścieżka do~komendy sar #Komenda rsh potrzebna przy pomiarze obciażenia ˛ procesora na~zdalnym #komputerze. Wymagana jest poprawna konfiguracja rsh - plik .rhosts na #komputerze zdalnym. rsh="rsh"; #Sprawdzenie poprawności parametrów skryptu if [ $# -ne 3 ] || [ $2 != "sunos" -a $2 != "linux" ]; then echo "Usage: cpuinfo.sh machine os sar"; echo " os: sunos linux"; exit 1; fi #zmienna przechowywujaca ˛ nazw˛ e komputera, dla którego tworzone sa˛ #charakterystyki machine=$1; #pomiar wykonywany na~komputerze lokalnym - obciażenie ˛ CPU, czas pracy 5.3 Pomiar obciażenia ˛ procesora #komputera oraz pobranie jego nazwy, aby nie zwracać localhost if [ $1 == "localhost" ]; then resultCPU=‘$3 -u 1 10 | grep Average‘; resultUptime=‘uptime‘; machine=‘hostname‘; #pomiar wykonywany na~komputerze zdalnym - obciażenie ˛ CPU oraz #czas pracy komputera else resultCPU=‘$rsh $1 "$3 -u 1 10 | grep Average"‘; resultUptime=‘$rsh $1 "uptime"‘; fi; #dla systemu operacyjnego SunOS if [ $2 == "sunos" ]; then #wypisanie wartości obciażenia ˛ CPU przez użytkowników i~system echo $resultCPU | awk ’{print $2; print $3;}’; #dla systemu operacyjnego linux else #wypisanie wartości obciażenia ˛ CPU przez użytkowników i~system echo $resultCPU | awk ’{print $3; print $5;}’; fi #przetworzenie wyniku polecenia ’uptime’, tak aby uzyskać z~niego tylko #informacje odnośnie czasu pracy komputera - wywołanie funkcji #procesUptime() procesUptime; #wypisanie czasu pracy oraz nazwy komputera, dla którego generujemy #statystyki echo $uptime; echo $machine; #jeśli wszystko si˛ e powiedzie, skrypt zwraca do~powłoki wartość 0 exit 0; 5.3.2 Zapis w pliku konfiguracyjnym MRTG Target[erniecpu]: ‘/usr/local/mrtg-2/contrib/cpuinfo/cpuinfo.sh \ ernie.icslab.agh.edu.pl sunos sar‘ MaxBytes[erniecpu]: 100 Options[erniecpu]: gauge,growright,noarrow,unknaszero,nopercent, noborder Unscaled[erniecpu]: dwym YLegend[erniecpu]: % obciażenie ˛ CPU ShortLegend[erniecpu]: % CPU LegendI[erniecpu]: CPU Użytkownicy: 26 5.3 Pomiar obciażenia ˛ procesora LegendO[erniecpu]: Legend1[erniecpu]: Legend2[erniecpu]: Legend3[erniecpu]: CPU System: Obciażenie ˛ procesora przez procesy użytkowników Obciażenie ˛ procesora przez procesy systemowe Maksymalne obciażenie ˛ procesora przez procesy użytkowników w~ciagu ˛ 5 minut Legend4[erniecpu]: Maksymalne obciażenie ˛ procesora przez procesy systemowe w~ciagu ˛ 5 minut Colours[erniecpu]: ŻÓŁTY#e8d127,CZARNY#000000,CIEMNO ZIELONY#008e00, BORDOWY#ba0015 WithPeak[erniecpu]: ymw Title[erniecpu]: ernie.icslab.agh.edu.pl PageTop[erniecpu]: <H1>Obciażenie ˛ CPU</H1> <TABLE> <TR><TD>Serwer:</TD><TD>ernie.icslab.agh.edu.pl</TD></TR> </TABLE> Rysunek 2: Fragment wygenerowanej strony dla pomiaru obciażenia ˛ procesora 27 5.4 Pomiar ilości procesów w systemie 28 Powyższy fragment pliku konfiguracyjnego MRTG opisuje generowanie statystyk przedstawiajacych ˛ procentowe obciażenie ˛ procesora zdalnego komputera ernie.icslab.agh.edu.pl pracujacego ˛ w systemie operacyjnym SunOS. Bieżace ˛ wartości wielkości mierzonej dostarczane sa˛ przez skrypt cpuinfo.sh. Powyższa konfiguracja różni si˛e od zamieszczonej wcześniej konfiguracji dla pomiaru zaj˛etości dysku, gdyż dodatkowo: generowane sa˛ wykresy dla dwóch mierzonych wielkości (brak tutaj opcji noo), powstajace ˛ wykresy tygodniowe, miesi˛eczne i roczne zawieraja˛ maksymalne wartości obciaże˛ nia procesora w ciagu ˛ 5 minut (parametr WithPeak), nast˛epuje tutaj przedefiniowanie standardowych kolorów wykresów (parametr Colours). Fragment wygenerowanej strony wraz z dziennym i tygodniowym wykresem dla pomiaru zaj˛etości obciażenia ˛ procesora przedstawia rysunek 2. 5.4 5.4.1 Pomiar ilości procesów w systemie Skrypt do pomiaru ilości procesów Opis: Skrypt służy do pomiaru ilości procesów pracujacych ˛ na podanym komputerze. Zwraca on również czas pracy oraz nazw˛e komputera, dla którego dokonywane sa˛ pomiary. W celu wykonywania pomiarów na komputerze zdalnym wymagany jest program rsh (lub ssh). Dodatkowo należy sprawdzić wartość zmiennej rsh w skrypcie i w razie potrzeby dokonać jej modyfikacji. Działanie: Skrypt używa programu rsh w celu wylistowania katalogu /proc na podanym komputerze (polecenie ls -1 /proc). Otrzymany wynik przetwarzany jest nast˛epnie przez awk w celu obliczenia ilości podkatalogów poszczególnych procesów. Ponieważ w wielu systemach, w katalogu /proc znajduja˛ si˛e nie tylko informacje dotyczace ˛ procesów, ale również wiele innych dodatkowych informacji, potrzebne jest zastosowanie odpowiedniego wzorca wyłuskujacego ˛ tylko właściwe podkatalogi. Poza tym skrypt korzysta z polecenia uptime w celu uzyskania czasu pracy komputera. Gdy pomiary wykonywane sa˛ na komputerze lokalnym, dodatkowo używane jest polecenie hostname, aby uzyskać nazw˛e tego komputera. Kod skryptu: # Sposób użycia: ./procnum.sh machine # gdzie: # machine - nazwa lub IP komputera # #Komenda rsh potrzebna przy pomiarze obciażenia ˛ procesora na~zdalnym #komputerze. Wymagana jest poprawna konfiguracja rsh - plik .rhosts na 5.4 Pomiar ilości procesów w systemie #komputerze zdalnym. rsh="rsh"; #sprawdzenie poprawnej ilości parametrów skryptu if [ $# -ne 1 ]; then echo "Usage: procnum.sh machine"; exit 1; fi #zmienna przechowywujaca ˛ nazw˛ e komputera, dla którego tworzone sa˛ #charakterystyki machine=$1; #pomiar wykonywany na~komputerze lokalnym - ilość procesów, #czas pracy komputera oraz pobranie jego nazwy if [ $1 = "localhost" ]; then resultProc=‘ls -1 /proc | awk \ ’/[0-9]/ { nproc++; } END { print nproc; }’‘ resultUptime=‘uptime‘; machine=‘hostname‘; #pomiar wykonywany na~komputerze zdalnym - ilość procesów oraz #czas pracy komputera else resultProc=‘$rsh $1 "ls -1 /proc | awk \ ’/[0-9]/ { nproc++; } END { print nproc; }’"‘ resultUptime=‘$rsh $1 "uptime"‘; fi; #przetworzenie wyniku polecenia ’uptime’, tak aby uzyskać z~niego tylko #informacje odnośnie czasu pracy komputera - wywołanie funkcji #procesUptime() procesUptime; #wypisanie obliczonej ilości pracujacych ˛ procesów echo $resultProc; #w tym skrypcie mierzona jest tylko jedna wielkość, zero zwracane jest #jako wartość drugiej wielkości do~mrtg echo 0; #wypisanie czasu pracy i~nazwy komputera echo $uptime; echo $machine; #jeśli wszystko si˛ e powiedzie, skrypt zwraca do~powłoki wartość 0 exit 0; 29 5.5 5.4.2 Pomiar ilości połaczeń ˛ do serwera poczty sendmail 30 Zapis w pliku konfiguracyjnym MRTG Target[ernieproc]: ‘/usr/local/mrtg-2/contrib/procnum/procnum.sh \ ernie.icslab.agh.edu.pl‘ MaxBytes[ernieproc]: 10000 Options[ernieproc]: gauge,noo,growright,noarrow,nopercent,unknaszero, noborder YLegend[ernieproc]: ilość procesów ShortLegend[ernieproc]: LegendI[ernieproc]: procesów: Legend1[ernieproc]: Ilość procesów pracujacych ˛ na~wybranym serwerze Legend3[ernieproc]: Maksymalna ilość procesów z~pi˛ eciu minut WithPeak[ernieproc]: ymw Colours[ernieproc]: POMARAŃCZOWY#dd8118,ZIELONY#00b200,ŻÓŁTY#d3c11d, NIEBIESKI#1a8cd8 Title[ernieproc]: ernie.icslab.agh.edu.pl PageTop[ernieproc]: <H1>Ernie - ilość pracujacych ˛ procesów </H1> <TABLE> <TR><TD>Serwer:</TD><TD>ernie.icslab.agh.edu.pl</TD></TR> </TABLE> Powyższy fragment pliku konfiguracyjnego MRTG przedstawia generowanie statystyk obrazujacych ˛ ilość pracujacych ˛ procesów na zdalnym komputerze ernie.icslab.agh.edu.pl. Bieżacych ˛ wartości wielkości mierzonej dostarcza skrypt procnum.sh. Przedstawiona tutaj konfiguracja podobna jest do tych zamieszczonych wcześniej. Generowane tutaj wykresy sa˛ skalowane i obrazuja˛ tylko jedna˛ wielkość mierzona.˛ Maksymalna wartość wyst˛epujacych ˛ procesów przyj˛eta została arbitralnie jako 10000, tygodniowe, miesi˛eczne i roczne wykresy zawieraja˛ wartości szczytowe z 5 minut. Wyst˛epuje tutaj także przedefiniowanie kolorów krzywych na wykresach. Fragment wygenerowanej strony wraz z dziennym i tygodniowym wykresem dla pomiaru ilości procesów pracujacych ˛ w systemie przedstawia rysunek 3. 5.5 5.5.1 Pomiar ilości połacze ˛ ń do serwera poczty sendmail Skrypt do pomiaru ilości połacze ˛ ń do serwera poczty sendmail Opis: Do pomiaru ilości połaczeń ˛ do serwera poczty dla poczty przychodzacej ˛ i wychodzacej ˛ można wykorzystać skrypt mrtg-mailstats autorstwa John’a Littell’a. Aktualna˛ wersj˛e, dost˛epna˛ na licencji GNU, można ściagn ˛ ać ˛ z: http://www.earlham.edu/~littejo/software/mrtg-mailstats.html Skrypt ten korzysta z polecenia mailstats zwracajacego ˛ statystyki serwera poczty. Do poprawnego działania konieczne jest, aby sendmail generował plik ze statystykami (najcz˛eściej jest to /etc/mail/statistics). 5.5 Pomiar ilości połaczeń ˛ do serwera poczty sendmail 31 Rysunek 3: Fragment wygenerowanej strony dla pomiaru ilości procesów w systemie W celu wykonywania pomiarów na komputerze zdalnym należy odpowiednio skonfigurować program mailstats, tak aby nasłuchiwał on na połaczenia ˛ TCP. Dokładny opis takiej konfiguracji, a także wiele przydatnych informacji odnośnie użytkowania opisywanego skryptu można znaleźć w dokumentacji dołaczonej ˛ do oprogramowania mrtg-mailstats. Kilka przykładowych opcji mrtg-mailstats mrtg-mailstats [-b] [-f factor] [-m mailer] [-s host[-p port]] [-C sendmail.cf] -b -m -s -p zliczanie całkowitej ilości bajtów, a nie ilości wiadomości mailer - pobieranie statystyk tylko dla podanego mailera server - pobieranie statystyk z~podanego zdalnego komputera port - port, na~który należy si˛ e połaczyć ˛ na~komputerze zdalnym 5.6 Pomiar ruchu na interfejsie eth i ppp w systemie linux 32 (domyślnie 7256) -f factor - współczynnik, przez który należy pomnożyć zwracane wartości (przydatne np. w~przypadku pomiaru ilości wiadomości na~minut˛e) -C sendmail.cf - plik zawierajacy ˛ konfiguracj˛e sendmaila 5.5.2 Zapis w pliku konfiguracyjnym MRTG Target[wierchmail]: ‘/usr/local/mrtg-2/contrib/mrtg-mailstats/mrtg-mailstats -f 60‘ MaxBytes[wierchmail]: 1250000 Options[wierchmail]: nopercent,growright,noarrow,unknaszero,noinfo, noborder YLegend[wierchmail]: wiadomości\\min ShortLegend[wierchmail]: wiadomości\min LegendI[wierchmail]: przychodzacych: ˛ Legend1[wierchmail]: Poczta przychodzaca ˛ LegendO[wierchmail]: wychodzacych: ˛ Legend2[wierchmail]: Poczta wychodzaca ˛ Title[wierchmail]: wierch.ds5.agh.edu.pl PageTop[wierchmail]: <H1>Poczta przychodzaca ˛ i~wychodzaca ˛ </H1> <TABLE> <TR><TD>Serwer:</TD><TD>wierch.ds5.agh.edu.pl</TD></TR> </TABLE> Powyższy fragment pliku konfiguracyjnego MRTG obrazuje generowanie statystyk ilości połaczeń ˛ na minut˛e do serwera poczty (osobno dla poczty przychodzacej ˛ i wychodzacej) ˛ na komputerze lokalnym. Bieżace ˛ wartości wielkości mierzonej dostarczane sa˛ przez skrypt mrtg-mailstats. Przedstawiona tutaj konfiguracja zawiera jedna˛ opcj˛e nie wyst˛epujac ˛ a˛ wcześniej – noinfo. Powoduje ona, iż na wygenerowanej przez MRTG stronie nie sa˛ umieszczane informacje odnośnie czasu pracy komputera, na którym dokonywane sa˛ pomiary. Ponieważ zliczanie ilości wiadomości na minut˛e może nie być właściwe na bardzo obciażo˛ nych serwerach pocztowych, w celu zliczania wiadomości/s należy usunać ˛ opcj˛e -f w parametrze Target i odpowiednio zmodyfikować opisy wykresów (parametry YLegend i ShortLegend). 5.6 5.6.1 Pomiar ruchu na interfejsie eth i ppp w systemie linux Zapis w pliku konfiguracyjnym MRTG Target[ethernet]: /192.168.5.37:[email protected] MaxBytes[ethernet]: 1250000 Title[ethernet]: kona.ds5.agh.edu.pl Options[ethernet]: growright, transparent, noborder, noarrow, integer, 6 Dodatkowe moduły dla MRTG 33 dorelpercent AddHead[ethernet]: <link rel=stylesheet href="./layout/style.css" type="text/css"> PageTop[ethernet]: <h1>Ruch na~interfejsie ethernet</h1> PageFoot[ethernet]: Kontakt <a href="mailto:[email protected]"> Andrzej Gruszczyk</a> WithPeak[ethernet]: wmy YTics[ethernet]: 10 ShortLegend[ethernet]: B/s YLegend[ethernet]: Bajty / sekundy W tym przypadku mamy do czynienia z najbardziej podstawowym działaniem MRTG jaka˛ jest monitorowanie obciażenia ˛ sieciowego na interfejsie ethernet. Cel jest zdefiniowany używajac ˛ formatu Interface by IP. Maksymalna ilość bajtów ustalona jest na standardowa˛ dla ethernetu wartość 1250000. Dla generowanej strony HTML określono link do pliku zawierajacego ˛ definicj˛e stylów CSS, dodano także pewne informacje na poczatku ˛ i końcu strony. Podobnie jak w poprzednich przykładach oś czasu na wykresach rośnie w prawa˛ stron˛e. Jeśli chodzi o wyglad ˛ wykresu, to ustawiono przezroczystość tła, nie sa˛ także rysowane obramowania oraz strzałki na osiach. Zwi˛ekszono także ilość poziomych linii, zmieniono także opis osi pionowej. Na wykresie przedstawiana jest jeszcze jedna wartość – stosunek ruchu przychodzacego ˛ do wychodzacego ˛ w procentach – odpowiada za to opcja dorelpercent. Dla wykresów – tygodniowego, miesi˛ecznego i rocznego pokazywane sa˛ także wartości maksymalne z 5 minut. Z kolei integer powoduje, że wyświetlane poniżej wykresu wartości bieżace, ˛ średnie i maksymalne pierwszej i drugiej zmiennej (w tym przypadku także procentowego stosunku tych zmiennych) wyświetlane sa˛ z zaokragleniem ˛ do wartości całkowitych. 6 Dodatkowe moduły dla MRTG Poniższe podrozdziały zawieraja˛ opisy wi˛ekszości modułów dołaczonych ˛ do MRTG (znajduja˛ si˛e one w podkatalogu contrib). Cz˛eść z nich została przez nas pomini˛eta m.in. ze wzgl˛edu na niewielka˛ przydatność, czy specjalizowane zastosowanie. 6.1 6.1.1 Moduł 14all Opis Moduł 14all zawiera perlowy skrypt 14all.cgi służacy ˛ jako graficzny front-end dla MRTG używaja˛ cego RDDTool do gromadzenia danych z monitorowanych celów. Zalety takiego skonfigurowania MRTG sa˛ nast˛epujace: ˛ MRTG zajmuje si˛e tylko zbieraniem danych z monitorowanych celów, nie generuje nowych wykresów oraz stron ze statystykami, 6.1 Moduł 14all 34 RDDTool zajmuje si˛e teraz przechowywaniem danych, czyni to tylko w jednym pliku, RDDTool normalizuje dane i aktualizuje tylko zmienione pozycje w swoim pliku, podczas gdy rateup (używany domyślnie przez MRTG) przeprowadza kopiowanie pliku z logami, tworzy tymczasowy plik na dane, przeprowadza normalizacje, a nast˛epnie zapisuje plik z logami. rysunki z wykresami tworzone sa˛ tylko wtedy, gdy zainteresowany użytkownik wejdzie na odpowiednia˛ stron˛e wywołujac ˛ skrypt 14all.cgi. 6.1.2 Instalacja Skrypt CGI 14all.cgi, ze wzgl˛edu na jego cz˛este modyfikacje, nie znajduje si˛e w podkatalogu contrib, lecz jest dost˛epny pod adresem: http://my14all.sourceforge.net W celu odpowiedniego zainstalowania pobranego z powyższej strony pliku należy wykonać nast˛epujace ˛ kroki (opis dla MRTG2.9.x, przy założeniu, że MRTG zostało już skonfigurowane do pracy z RDDTool): 1. umieszczenie otrzymanego skryptu 14all.cgi w katalogu, w którym serwer WWW może wykonywać skrypty CGI, 2. sprawdzenie, czy w pierwszej linii skryptu znajduje si˛e odpowiednia ścieżka do interpretera j˛ezyka perl, 3. ustawienie prawidłowej ścieżki do pliku MRTG_lib.pm w 13 linii skryptu. Plik ten znajduje si˛e w katalogu XXX/lib/mrtg2, gdzie XXX oznacza miejsce, w którym zainstalowane zostało MRTG, 4. utworzenie pliku konfiguracyjnego (patrz podrozdz. 6.1.3), ˛ utwo5. umieszczenie ścieżki do pliku konfiguracyjnego pod zmienna˛ $cfgfile w skrypcie, badź rzenie strony WWW, w której skrypt 14all.cgi uruchamiany jest z przekazaniem parametru cfg wskazujacym ˛ na t˛e ścieżk˛e. Teraz każde wywołanie skryptu 14all.cgi z poziomu strony WWW spowoduje wyświetlenie wygenerowanych statystyk. W celu wyświetlenia tylko jednej z nich, należy przy wywołaniu skryptu przekazać mu parametr log zawierajacy ˛ nazw˛e odpowiedniego celu z pliku konfiguracyjnego. 6.1.3 Plik konfiguracyjny Moduł 14all używa tego samego pliku konfiguracyjnego, co MRTG, z tym, że definiuje kilka dodatkowych parametrów globalnych i kilka parametrów dla monitorowanych celów oraz ignoruje niektóre z parametrów wykorzystywanych przez MRTG. Przede wszystkim, aby MRTG używało RDDTool zamiast rateup, w pliku konfiguracyjnym należy umieścić globalny parametr LogFormat: rddtool. W przypadku ch˛eci wykorzystywania RDDTool tylko przy monitorowaniu niektórych celów należy przy ich konfiguracji (patrz rozdz. 3.2) umieścić parametr UseRRDTool. 6.2 Moduł GetSNMPLinesUP 35 Dodatkowe parametry globalne all*Columns all*Background all*RRDToolLog all*ErrorPic all*GraphErrorsToBrowser ustawia ilość kolumn w stronie index.html; domyślnie 2 ustawia kolor tła w stronie index.html; domyślnie biały plik z logami wywołań RDDTool’a; przydatny przy debuggingu 14all plik z rysunkiem wyświetlanym przez 14all w przypadku wysta˛ pienia bł˛edu przy tworzeniu któregoś z wykresów gdy ta opcja jest ustawiona i zainstalowany perlowy moduł GD, to w przypadku wystapienia ˛ bł˛edu 14all tworzy wykres zawierajacy ˛ wiadomość o zaistniałym bł˛edzie Dodatkowe parametry dla poszczególnych celów all*Logarithmic all*GraphTotal all*DontShowIndexGraph all*IndexGraphSize włacza ˛ skal˛e logarytmiczna˛ dla osi Y włacza ˛ na wykresach wyświetlanie linii pokazujacej ˛ sum˛e wartości obrazowanych przez dwie pozostałe linie w przypadku ustawienia tej opcji strona index.html nie b˛edzie zawierała wykresu dla tego celu w tej opcji podaje si˛e wymiary dla wykresu wyświetlanego na stronie index.html dla opisywanego celu Szczegółowe informacje nt. składni pliku konfiguracyjnego 14all można znaleźć na stronie: http://my14all.sourceforge.net/config.html 6.2 Moduł GetSNMPLinesUP Moduł GetSNMPLinesUP zawiera perlowy skrypt służacy ˛ do generowania statystyk obrazujacych ˛ stan interfejsów PPP na danej maszynie. Skrypt ten w swojej pracy wykorzystuje SNMP, dzi˛eki któremu sprawdza, czy dany interfejs pracuje, czy nie, po czym zwraca liczb˛e pracujacych ˛ interfejsów. W celu odpowiedniej instalacji modułu należy zmodyfikować zmienna˛ ADMINDIR w pliku Makefile tak, aby wskazywała ona miejsce, w którym moduł ma zostać zainstalowany, po czym wykonać komend˛e make. Być może przydatna okaże si˛e także modyfikacja wartości parametru -g w liniach 46 i 47 pliku Makefile. Po instalacji należy jeszcze odpowiednio zmodyfikować zmienne $SNMPGet, $TableBase oraz $Community w skrypcie. Pierwsza z nich powinna wskazywać ścieżk˛e do polecenia snmpget, druga ścieżk˛e do pliku zawierajacego ˛ spis identyfikatorów SNMP dla interfejsów PPP (przykładowy plik to ModemTable.dial-machine), natomiast zmienna $Community zawiera nazw˛e społeczności (community) dla podanego komputera. Przykładowy plik zawierajacy ˛ konfiguracj˛e MRTG dla pomiaru ilości pracujacych ˛ interfejsów PPP na danym komputerze znajduje si˛e w opisywanym module pod nazwa˛ sample.cfg. 6.3 6.3 Moduł IxDisk 36 Moduł IxDisk Moduł ten zawiera prosty perlowy skrypt służacy ˛ do monitorowania pracy RDBMS Informix. Skrypt ten korzysta z programu tbstat wchodzacego ˛ w skład Informix’a. Generowane wykresy obrazuja˛ ilości odczytów i zapisów danych w RDBMS-ie. 6.4 Moduł PMLines W module PMLines znajduje si˛e perlowy skrypt służacy ˛ do pomiaru ilości połaczeń ˛ analogowych (za pomoca˛ modemu) oraz ilości połaczeń ˛ przez ISDN do urzadzenia ˛ Portmaster. Skrypt ten korzysta z SNMP, dlatego Postmaster musi być skonfigurowany do pracy z tym protokołem. Opisywany moduł zawiera również przykładowa˛ konfiguracj˛e dla MRTG - plik mrtg.cfg-demo. 6.5 Moduł TTrafic Moduł TTrafic zawiera, napisany w VisualBasic’u, skrypt TTrafic.asp, który analizuje logi MRTG i dostarcza informacji nt. ruchu na interfejsach podanej maszyny. Okres, z którego pochodza˛ statystyki podawany jest jako argument skryptu. W celu użycia opisywanego modułu należy wykonać nast˛epujace ˛ czynności: skopiowanie pliku TTrafic.asp do miejsca, w którym MRTG generuje strony HTML, zmiana rozszerzenia generowanych plików na .asp przez ustawienie w pliku konfiguracyjnym MRTG parametru: Extension[_]: asp, dołaczenie ˛ skryptu TTrafic.asp do generowanych plików przez umieszczenie linii: <!-- #Include File = "TTrafic.asp" --> w parametrze PageTop przy konfiguracji MRTG do monitorowania konkretnego celu (w tym przypadku np. rutera), w celu przekazywania parametrów do skryptu należy do adresów wygenerowanych stron dokleić napis ?Period=XXX&Order=Y , gdzie XXX oznacza dowolny okres (w dniach), z którego pochodzić maja˛ statystyki, natomiast Y to jedna z wartości: K (kiloB), M (MegaB), G (GigaB), T (TeraB) lub P (PetaB). Domyślne wartości to 30 i G. 6.6 Moduł apc_ups W skład modułu apc_ups wchodza: ˛ prosty perlowy skrypt zwracajacy ˛ procentowe obciażenie ˛ i pozostajacy ˛ czas podtrzymania bateryjnego dla urzadzenia ˛ APC UPS, plik z przykładowa˛ konfiguracja˛ dla MRTG. Do poprawnego działania skryptu potrzebne jest SNMP. Być może potrzebna b˛edzie również modyfikacja ścieżki do interpretera j˛ezyka perl w pierwszej linii skryptu. 6.7 6.7 Moduły atmmaker, cfgmaker_ATM, cfgmaker_cisco, cfgmaker_dlci 37 Moduły atmmaker, cfgmaker_ATM, cfgmaker_cisco, cfgmaker_dlci Każdy z!modułów zawiera skrypt działajacy ˛ analogicznie, lub wr˛ecz stanowiacy ˛ pewne ulepszenie programu cfgmaker (patrz podrozdz. 4.1). Wszystkie skrypty przyjmuja˛ jako parametr adres rutera, który chcemy monitorować. Do pobrania informacji o danym ruterze, potrzebnych do wygenerowania pliku z konfiguracja˛ dla MRTG, wykorzystywany jest protokół SNMP. Moduł atmmaker przeznaczony jest dla ruterów ATM-owych. Do jego poprawnego działania należy ustawić ścieżk˛e do interpretera j˛ezyka perl w pierwszej linii skryptu atmmaker i nadać prawa do wykonania. cfgmaker_ATM przeznaczony jest dla ruterów ATM-owych pracujacych ˛ w konfiguracji z SVC (Switched Virtual Circuit). Skrypt tworzy konfiguracj˛e przyjmujac ˛ za cel monitorowania pojedyncze istniejace ˛ kanały ATM. ˛ VLAN-y. Dzi˛eki Moduł cfgmaker_cisco to modyfikacja programu cfgmaker wspierajaca temu możliwe jest np. generowanie zbiorczych statystyk ruchu dla danego VLAN-a. cfgmaker_dlci również stanowi modyfikacj˛e cfgmakera i pozwala na monitorowanie połaczeń ˛ DLC (Data Link Connections) identyfikowanych przez DLCI (Data Link Connections Identifier). 6.8 Moduł cisco_BPX_MGX Moduł cisco_BP_MGX zawiera plik opisujacy ˛ różne konfiguracje MRTG służace ˛ do monitorowania urzadzenia ˛ Cisco BPX ATM Switch. Umożliwiaja˛ one np. monitorowanie wychodzacych ˛ i przychodzacych ˛ celek ATM na porcie switch’a. 6.9 Moduł ciscoindex W module ciscoindex znajduje si˛e perlowy skrypt, który na podstawie pliku z konfiguracja˛ MRTG oraz pliku konfiguracyjnego rutera Cisco tworzy stron˛e index.html dla interfejsów rutera. Wynik działania skryptu jest zbliżony do wyniku działania programu indexmaker (patrz podrozdz. 4.2). Do każdego z interfejsów w wygenerowanej stronie dodane sa˛ informacje o adresie IP, numerze DLCI, przepustowości itp. 6.10 Moduł cisco_ipaccounting W skład modułu cisco_ipaccounting wchodzi m.in. skrypt pobierajacy ˛ dane odnośnie ruchu przechodzacego ˛ przez ruter Cisco. Urzadzenie ˛ to powinno mieć właczony ˛ IP accounting. Skrypt pozwala na generowanie osobnych statystyk dla ruchu przeznaczonego do różnych sieci; w swojej pracy korzysta on z protokołu SNMP. W celu wykorzystania modułu cisco_ipaccounting należy wykonać nast˛epujace ˛ czynności: utworzenie pliku specyfikujacego ˛ sieci, dla których chcemy analizować ruch. Pojedyncza linia tego pliku powinna mieć form˛e: adres_ip/maska nazwa_sieci. Nazwa sieci może wystapić ˛ wi˛ecej niż raz, w którym to przypadku ruch dla sieci posiadajacych ˛ t˛e sama˛ nazw˛e b˛edzie sumowany, 6.11 Moduł cpuinfo 38 ustawienie kilku zmiennych w skrypcie. Należa˛ do nich: $HOST - wskazuje społeczność i nazw˛e rutera, $NETWORK - ścieżka do pliku specyfikujacego ˛ sieci, $OUTDIR - scieżka do katalogu, w którym maja˛ być zapisywane pliki z wynikami działania. W skrypcie należy także ustawić ścieżk˛e do mrtg, skrypt powinien być uruchamiany zaraz przed uruchomieniem mrtg. Należy zatem odpowiednio zmodyfikować tabel˛e crona, z której uruchamiane jest mrtg, ponieważ wynikiem działania skryptu dla każdej z wyspecyfikowanych sieci jest plik o nazwie log_siec, dlatego przy konfiguracji celów monitorowania dla MRTG należy po prostu umieścić komend˛e powodujac ˛ a˛ wypisanie utworzonego pliku (‘cat .../log_siec‘). 6.11 Moduł cpuinfo W module cpuinfo znajduje si˛e perlowy skrypt służacy ˛ do pomiaru obciażenia ˛ CPU przez użytkowników oraz system. Ponieważ skrypt ten nie działał poprawnie, gdy próbowaliśmy go użyć, dlatego polecamy ten napisany przez nas. Znajduje si˛e on w podrozdziale 5.3. 6.12 Moduł cpumon Moduł cpumon zawiera prosty skrypt perlowy służacy ˛ do pomiaru obciażenia ˛ procesora przez podany proces. Skrypt ten przyjmuje jako argument plik zawierajacy ˛ PID procesu. Być może do poprawnego działania skryptu potrzebna b˛edzie modyfikacja zmiennych: $ps i $psargs oraz ścieżki do interpretera j˛ezyka perl. 6.13 Moduł diskmon 6.13.1 Opis W skład modułu diskmon wchodza˛ m.in. dwa perlowe skrypty: showdisk.pl i getdisk.pl. Pierwszy z nich pracuje jako serwer i wyświetla informacje o procentowej zaj˛etości wybranego dysku (właściwie systemu plików). Drugi z nich to klient, łacz ˛ acy ˛ si˛e z pierwszym i pobierajacy ˛ z niego dane dotyczace ˛ wybranego dysku. Skrypty w swoim działaniu korzystaja˛ z perlowego modułu Net::Telnet. 6.13.2 Instalacja Aby móc skorzystać z funkcjonalności oferowanej przez opisywany moduł, należy odpowiednio zainstalować skrypt serwera na każdym komputerze, którego zaj˛etość dysków chcemy monitorować. W tym celu trzeba wykonać nast˛epujace ˛ kroki: 1. skopiowanie pliku showdisk.pl na odpowiedni komputer, 2. umieszczenie w pliku /etc/inetd.conf linii: df stream tcp nowait root <ścieżka do~TCPwrapper’a> <ścieżka do~showdisk.pl> 6.14 Moduł distrib 39 3. wstawienie w pliku /etc/services linii: df 9047/tcp 4. zrestartowanie programu inetd, 5. w celu przetestowania instalacji można wykonać komend˛e telnet na port 9047. Po zainstalowaniu skryptu serwera należy jeszcze dokonać odpowiedniego zapisu w pliku konfiguracyjnym MRTG, tzn. zdefiniować monitorowany cel, dla którego dane dostarcza skrypt getdisk.pl. Skrypt ten przyjmuje dwa parametry: hostname - adres komputera, na którym został zainstalowany skrypt serwera, disk_number - numer linii odpowiedniego systemu plików w wyniku polecenia df -k. 6.14 Moduł distrib Moduł distrib zawiera perlowy skrypt generujacy ˛ stron˛e HTML, która przedstawia statystyki rozłożenia ruchu w podanym przedziale czasu dla wszystkich monitorowanych celów MRTG. Ustawienia przedziału czasu, jak również wielu innych przydatnych parametrów, należy dokonać przez odpowiednie przedefiniowanie nast˛epujacych ˛ zmiennych: $outFile – nazwa generowanego pliku HTML, $mode – przedział czasu, z którego generowane sa˛ statystyki rozłożenia ruchu. Dopuszczalne sa˛ tu wartości: d - dzień, w - tydzień, m - miesiac, ˛ y - rok, $title – nagłówek generowanej strony, $width – szerokość generowanych wykresów w pikselach, $height – wysokość generowanych wykresów w pikselach $count – ile kategorii ruchu (różnych mierzonych wielkości - chyba) branych jest pod uwag˛e, $period – nazwa przedziału czasu, $refreshInt – czas odświeżania strony z wykresami (w minutach). Skrypt z modułu distrib korzysta z programu distrib, którego plik źródłowy również znajduje si˛e w opisywanym module. Do jego kompilacji potrzebna jest biblioteka GD. 6.15 Moduł get_active W module get_active znajduje si˛e perlowy skrypt, który parsuje wygenerowane przez MRTG pliki HTML dla poszczególnych monitorowanych celów i generuje plik HTML zawierajacy ˛ posortowana˛ list˛e najbardziej aktywnych monitorowanych interfejsów sieciowych. W celu dopasowania skryptu do własnych potrzeb można zmodyfikować kilka nast˛epujacych ˛ jego zmiennych: $trafficDir – ścieżka do katalogu, w którym znajduja˛ si˛e wygenerowane przez MRTG pliki HTML, $orgName – nazwa firmy/organizacji osoby używajacej ˛ skrypt, 6.16 Moduły ipchains, ipchainacc 40 $outFile – ścieżka do generowanego pliku z lista˛ interfejsów sieciowych, $refreshInt – czas odświeżania wygenerowanej strony HTML. W celu poprawnego działania skryptu być może potrzebna b˛edzie modyfikacja argumentu komendy ls w 57 linii skryptu get-active2.pl. 6.16 Moduły ipchains, ipchainacc Moduł ipchainacc zawiera perlowy skrypt, który zwraca wartości liczników bajtów dla podanych reguł z łańcuchów: wejściowego i wyjściowego ipchains, zdefiniowanych przez użytkownika skryptu. Skrypt ten przyjmuje dwa argumenty: numer reguły z łańcucha wejściowego i numer reguły z łańcucha wyjściowego. Należy pami˛etać, że numeracja reguł zaczyna si˛e od zera. W celu zmiany łańcuchów, dla których wykonywane jest monitorowanie, należy odpowiednio ustawić zmienne $inrule i $outrule w skrypcie. Aby otrzymywać wartości z liczników pakietów zamiast z liczników bajtów, trzeba właściwie zainicjalizować zmienna˛ $bytec. Moduł ipchainacc zawiera troch˛e starsza˛ i mniej udokumentowana˛ wersj˛e skryptu ipchainacc. 6.17 Moduł ipfilter W module ipfilter można znaleźć prosty perlowy skrypt, który może być wykorzystany przez MRTG do generowania statystyk ruchu przechodzacego ˛ przez firewall IP-Filter. Skrypt ten korzysta w swojej pracy z polecenia ipfstat. 6.18 Moduły iptables_acc, iptables-accounting Każdy z tych modułów zawiera perlowy skrypt służacy ˛ do pobierania wartości liczników bajtów dla różnych łańcuchów wbudowanych w tablice z iptables. Skrypt z modułu iptables_acc przyjmuje jako argumenty nazwy dwóch łańcuchów z tablicy filter. Obecna wersja skryptu pochodzacego ˛ z iptables-accounting przyjmuje jeden argument, który może mieć nast˛epujace ˛ wartości: filter, nat i mangle. Dla pierwszej z nich zwracane sa˛ wartości liczników dla łańcuchów FORWARD i OUTPUT z tablicy filter, dla drugiej wartości liczników łańcuchów PREROUTING i POSTROUTING z tablicy nat, natomiast dla ostatniej wartości liczników dla łańcuchów PREROUTING i OUTPUT wbudowanych w tablic˛e mangle. W przypadku potrzeby monitorowania liczników przypisanych do innych łańcuchów należy nieznacznie zmodyfikować skrypt. Aby otrzymywać wartości z liczników pakietów zamiast z liczników bajtów trzeba właściwie zainicjalizować zmienna˛ $bytec z 66 linii skryptu. 6.19 Moduł ircstats Moduł ten to prosty skrypt napisany w Perlu służacy ˛ do pobierania informacji o użytkownikach przyłaczonych ˛ do serwera IRC (Internet Relay Chat). Skrypt ten po niewielkich modyfikacjach może być 6.20 Moduł ircstats2 41 także użyty do innych celów. Domyślnie przyjmuje on jeden parametr – nazw˛e serwera, z którym nawiazuje ˛ połaczenie ˛ za pomoca˛ standardowego w przypadku IRC protokołu TCP. W tym celu używa funkcji modułu Socket – getprotobyname, gethostbyname, socket, bind i connect. 6.20 Moduł ircstats2 Moduł ircstats2, którego główna˛ cz˛eścia˛ jest skrypt ircstats2.pl napisany w Perlu, służy również do monitorowania aktywności serwera IRC. Za jego pomoca˛ możliwe jest pobieranie informacji o ilości użytkowników na serwerze, możliwe jest także otrzymanie liczby użytkowników na kilku serwerach. Dodatkowo możliwe jest monitorowanie ilości kanałów, ilości operatorów (IRCop) oraz ilości serwerów. Cecha˛ odróżniajac ˛ a˛ omawiany skrypt jest to, że zapisuje on informacje pobrane za pomoca˛ protokołu TCP do plików. W pliku konfiguracyjnym MRTG (verb+mrtg.cfg+) wartościa˛ parametru Target (3.2.1) nie jest wywołanie skryptu, lecz polecenie cat odczytujace ˛ podany jej jako parametr plik. Korzystanie ze skryptu wymaga r˛ecznej modyfikacji jego zawartości. W taki sposób musimy podać nazwy serwerów do monitorowania, możemy także (wstawiajac ˛ znak komentarza na poczatku ˛ linii) zrezygnować z zapisywania niektórych informacji do plików. 6.21 Moduł jm W skład modułu jm wchodza˛ trzy perlowe skrypty: finger-mrtg.pl – zwraca (w formacie wymaganym przez MRTG) ilość zalogowanych użytkowników na komputerze podanym jako parametr skryptu, news-mrtg.pl – wynik działania tego skryptu stanowi liczba użytkowników aktualnie korzystajacych ˛ z serwera grup dyskusyjnych, quake-mrtg.pl – służy do generowania statystyk odnośnie ilości użytkowników przyłaczonych ˛ do serwera quake’a. 6.22 Moduł linux_stats Moduł ten tworzy prosty skrypt napisany w Perlu – jak wi˛ekszość dodatkowych skryptów do MRTG. Jego zadaniem jest podanie monitorowanie ruchu wychodzacego ˛ na podanym interfejsie sieciowym. Działanie takie to standardowa funkcjonalność MRTG, wymagana jednak w takim przypadku jest instalacja SNMP. Opisany skrypt nie pobiera wymaga obecności powyższego oprogramowania – zamiast tego odczytuje wielkość ruchu wychodzacego ˛ z pseudo pliku /proc/net/dev. Plik ten podaje dla każdego interfejsu sieciowego – z podziałem na ruch wchodzacy ˛ i wychodzacy: ˛ ilość przesłanych bajtów, ilość bł˛edów, kolizji i inne parametry. Do odczytania czasu uptime skrypt standardowo używa polecenia uptime. 6.23 6.23 Moduł memory 42 Moduł memory Skrypt Perla memory.pl działa podobnie do opisanego poprzednio – pobiera informacje z pseudo pliku – tym razem z /proc/meminfo i parsuje je, aby uzyskać pożadane ˛ dane. Jako pierwsza˛ zmienna˛ do MRTG skrypt podaje całkowita˛ wolna˛ pami˛eć – sumujac ˛ wartości podawane dla wiersza Mem: i kolumn – free, buffers i cached. Druga˛ zmienna˛ jest zaj˛eta pami˛eć powstała z odj˛ecia całkowitej ilości pami˛eci od powyższej – wolnej ilości pami˛eci. 6.24 Moduł monitor 6.24.1 Opis Zadaniem modułu monitor nie jest monitorowanie kolejnych zmiennych pobieranych za pomoca˛ skryptów z systemu. Udost˛epnia on natomiast interesujac ˛ a˛ możliwość dla dostawców Internetu udost˛epniajacych ˛ dzierżawione połaczenia ˛ – każdy z użytkowników może korzystać z funkcjonalności MRTG i ogladać ˛ na wykresie w jakim stopniu wykorzystuje swoje pasmo. Każdy z użytkowników może także konfigurować sposób prezentowania interesujacych ˛ go informacji określajac ˛ które wykresy powinny zostać wyświetlone. Moduł zakłada istnienie bazy danych z jedna˛ tabela˛ służac ˛ a˛ do autentykacji. Strony dla poszczególnych użytkowników generowane sa˛ w sposób dynamiczny – dzi˛eki użyciu ASP (Active Server Page). Baza danych zawiera nast˛epujace ˛ informacje, które odpowiadaja˛ nazwom kolumn w tabeli: LineNumber numer linii (użytkownika) LinePassword hasło zabezpieczajace ˛ dost˛ep do monitora EMail_Address adres e-mail nieużywany w obecnej wersji Graph_Day czy wyświetlać wykres dzienny Graph_Week czy wyświetlać wykres tygodniowy Graph_Month czy wyświetlać wykres miesi˛eczny Graph_Year czy wyświetlać wykres roczny Graph_EMail pole nieużywane w obecnej wersji 6.24.2 Instalacja Użycie ASP wymaga serwera stron internetowych obsługujacego ˛ takie pliki, takiego jak IIS (Microsoft Internet Information Server). Ewentualne, opisywane przez autora uruchomienie modułu w innym środowisku możliwe byłoby np. po przepisaniu kodu z ASP na PHP. Również dostarczona z modułem baza danych wskazuje na platform˛e, na jaka˛ przeznaczony jest domyślnie moduł monitor – jest ona w formacie MS Access 2000. Możliwe jest także stworzenie bazy danych w innym systemie zarzadzania ˛ relacyjnymi bazami danych – w tym celu w pliku readme.txt umieszczona jest komenda SQL tworzaca ˛ baz˛e danych. Wykorzystujac ˛ dostarczona˛ baz˛e danych należy skonfigurować DSN (ODBC Data SourceName), aby wskazywał na plik z baza˛ danych. Można także nie korzystać z DSN, wtedy należy skonfigurować odpowiednio plik monitor.inc dostarczony z modułem. 6.25 Moduł mrtg-archiver 43 Konieczne jest także ustawienie odpowiednich praw dost˛epu do plików wykorzystywanych przez MRTG. Dodatkowo dostarczone pliki ASP wykorzystujac ˛ obiekty CopyFile i DeleteFile powoduja˛ kopiowanie (i usuwane) plików z wykresami z katalogów, gdzie zapisywane sa˛ przez MRTG do katalogów udost˛epnianych przez serwer stron internetowych. Ma to miejsce po prawidłowej autentykacji. Dlatego również dla plików i katalogów, udost˛epnianych (przykładowo) przez IIS konieczne jest ustawienie odpowiednich praw dost˛epu. Usuwanie tych plików ma miejsce po wylogowaniu si˛e użytkownika. 6.25 Moduł mrtg-archiver Zadaniem modułu mrtg-archiver jest archiwizacja tworzonych przez MRTG wykresów. W jego skład wchodza˛ dwa skrypty napisane w Perlu. Pierwszy z nich – backup.pl pozwala na archiwizacj˛e o ustalonej godzinie wykresów dziennych dla wielu celów. Pliki zapisywane sa˛ do katalogu ustawianego w skrypcie za pomoca˛ zmiennej $BACKUP_DIR – tworzac ˛ w nich podkatalogi o nazwach odpowiadajacych ˛ bieżacej ˛ dacie. Drugi ze skryptów – mrtg.archive.pl jest rozwini˛eciem powyższego – w stosunku do niego posiada nast˛epujace ˛ możliwości: archiwizacja wykresów tygodniowych raz w tygodniu (w niedziel˛e), archiwizacja wykresów miesi˛ecznych raz w miesiacu ˛ (pierwszego w każdym miesiacu), ˛ archiwizacja wykresów rocznych raz w roku (pierwszego stycznia), możliwość określenia celów, dla których tworzone wykresy maja˛ być archiwizowane, tworzenie katalogów, jeżeli nie istnieja, ˛ linkowanie symboliczne plików z wykresami zamiast ich kopiowania. Katalogi, z których kopiujemy i do których kopiujemy pliki ustawiamy w tym przypadku w oddzielnym pliku – mrtb.archive.conf . Tam także powinny znaleźć si˛e zapisy o celach, dla których wykresy powinny zostać zaarchiwizowane. 6.26 Moduł mrtg-archiver-script Moduł mrtg-archiver-script zawiera kolejny skrypt służacy ˛ do archiwizacji plików z wykresami generowanych przez MRTG. Jego działanie polega na parsowaniu skryptu konfiguracyjnego MRTG i wyjmowaniu z niego listy celów oraz kopiowaniu odpowiednich plików do archiwum. Skrypt posiada nast˛epujace ˛ opcje startowe: -conf=\textit{ścieżka} ścieżka do pliku konfiguracyjnego MRTG -arch=\textit{ścieżka} ścieżka do katalogu archiwum; w katalogu tym powinny być utworzone podkatalogi days, weeks, months i years -d tworzenie archiwum dziennego -w tworzenie archiwum tygodniowego -m tworzenie archiwum miesi˛ecznego -y tworzenie archiwum rocznego -back=\textit{n} powoduje archiwizacj˛e plików z czasem wcześniejszym o n sekund 6.27 Moduł mrtg-blast 44 Dodatkowo do modułu dodany jest skrypt CGI o nazwie mrtgnav napisany w Perlu, który ułatwia nawigacj˛e po archiwum. 6.27 Moduł mrtg-blast Kolejnym modułem jest mrtg-blast, który powoduje wysyłanie dużej ilości pakietów do sieci, a nast˛epnie obrazuje z pomoca˛ MRTG szerokość pasma (ang. bandwidth). W jego skład wchodzi kod źródłowy programu w j˛ezyku C – tcpblast.c. Program wysyła ustalona˛ ilość bloków po również zadawana˛ ilość bajtów i szacuje przepustowość sieci. Można wybrać protokół transmisji – TCP lub UDP. Powyższy program wykorzystywany jest przez skrypt Perla – mrtg-blast. Jego parametrami sa: ˛ nazwa hosta, do którego wysyłamy pakiety, numer portu i ilość pakietów. 6.28 Moduł mrtg-dynip Moduł mrtg-dynip pozwala na monitorowanie ruchu sieciowego dla hostów posiadajacych ˛ wiele interfejsów, którym nie sa˛ przydzielane stałe numery IP. Interfejsami takimi moga˛ być np. modemy PPP i SLIP. Hosty którym zapewniamy połaczenie ˛ w ten sposób musza˛ mieć uruchomione agenty SNMP. 6.29 Moduł ipacc Moduł opisany w tej sekcji umożliwia wizualizacj˛e danych, która˛ jest liczba bajtów pobieranych ˛ z bezpieczeńz polecenia ipfwadm. Polecenie to służy do ustawiania i sprawdzania reguł zwiazanych stwem (poprzez firewall) i accountingiem w jadrze ˛ systemu. Dostarczony skrypt ipacc posiada nast˛epujac ˛ a˛ składni˛e wywołania: ipacc [mode] [-S source_ip/net_bits [port1 port2 ...]] [-D dest_ip/net_bits [port1 port2 ...]] mode source_ip dest_ip net_bits portN 6.30 może być to in lub out; jeżeli parametr nie zostanie podany, wyświetlone zostana˛ oba adres IP hosta źródłowego adres IP hosta docelowego ilość bitów przeznaczonych na sieć i podsieć numer portu Moduł mrtg-mail Moduł ten zawiera kilka wersji skryptów Perla realizujacych ˛ to samo zadanie – wizualizujacych ˛ informacje podawane przez komend˛e mailstat o połaczeniach ˛ SMTP (Simple Mail Transfer Protocol). Moduł wykorzystuje program sendmail. Aby uruchomić omawiany moduł należy wykonać nast˛epujace ˛ czynności: 6.31 Moduł mrtg.php 45 1. Odkomentować lini˛e z sendmail.cf w pliku sendmail.cf i utworzyć plik sendmail.cf w katalogu /etc/mail/. 2. Zrestartować program sendmail (za pomoca˛ skryptu znajdujacego ˛ si˛e z reguły w katalogu /etc/init.d/. 3. Utworzyć nast˛epujacy ˛ skrypt: #!/bin/sh # smtp-stats: exec Solaris mailstats # if [ -x "/bin/mailstats" ]; then exec /bin/mailstats -f/etc/mail/sendmail.st fi i nazwać go np. smtp-stats. 4. Dodać wpis w pliku /etc/services: smtp-stats 7256/tcp # smtp-stats 5. Dodać wpis w pliku /etc/inetd.conf: smtp-stats stream tcp nowait root \ /opt/local/bin/smtp-stats smtp-stats 6. Zrestartować inetd. Można sprawdzić działanie tej usługi poleceniem: telnet localhost port (taki sam jak w pliku /etc/services). Skrypt ten generuje kilka linii statystyk m.in. dla ruchu lokalnego oraz poprzez SNMP. Dołaczony ˛ do modułu skrypt Perla – mailstats parsuje właśnie lini˛e zawierajac ˛ a˛ właśnie ta˛ ostatnia˛ informacj˛e i przekazuje ja˛ MRTG. 6.31 Moduł mrtg.php mrtg.php to strona PHP, która wyszukuje pliki log i wyświetla je razem. Pobiera także pewne informacje z tych plików aby stworzyć ich opis. 6.32 Moduł mrtg_php_portal Moduł mrtg_php_portal zapewnia interfejs użytkownika napisany w PHP umożliwiajacy ˛ konfiguracj˛e MRTG z poziomu strony www. Skrypty PHP pobieraja˛ parametry z form HTMLa i uruchamiaja˛ polecenia cfgmaker, indexmaker i mrtg z tymi parametrami. 6.33 Moduł mrtgidx ˛ z pliku konfiguracyjnego MRTG tworzy Plik mrtgidx to skrypt napisany w Perlu, który korzystajac stron˛e – indeks. Moduł ten wykonuje to samo zadanie co dołaczony ˛ do MRTG indexmaker – posiada jednak znacznie skromniejsze możliwości. 6.34 Moduł mrtgindex.cgi 6.34 46 Moduł mrtgindex.cgi Jak wskazuje nazwa zastosowanie tego modułu jest identyczne, jak omówionego wcześniej. Posiada on bardziej rozbudowana˛ funkcjonalność – zbliżona˛ do dostarczanego standardowo z MRTG indexmakera. Różni si˛e od niego nast˛epujacymi ˛ (nie zawsze istotnymi) cechami: aktualizuje wykresy co 5 minut, można go używać z wieloma plikami konfiguracyjnymi, wykresy sortowane sa˛ w innej kolejności – wg. kolejności celów w pliku konfiguracyjnym. 6.35 Moduł mrtgrq 6.35.1 Opis Moduł mrtgrq działa na podobnej zasadzie jak opisany wcześniej moduł diskmon. Składa si˛e z programu klienta i serwera, którzy komunikuja˛ si˛e mi˛edzy soba˛ używajac ˛ modułu Perla – Net::Telnet. Jego zadaniem jest natomiast monitorowanie przestrzeni dyskowej używanej przez użytkowników poczty mail. Kolejna˛ różnica˛ jest sposób działania serwera, który w tym przypadku nie jest uruchamiany przez MRTG, lecz jest samodzielnie uruchamiany przez deamona cron. Dostarczony w module skrypt mrtgrq, który powinien być uruchamiany przez serwer, zawiera ˛ wywołania dwóch skryptów. Pierwszy z nich – getreport.pl to skrypt Perla, które wykorzystujac funkcje wspomnianego modułu Perla – Net::Telnet pobiera dane z klienta poprzez ustalony port. Drugi natomiast – make-mrtg.cfg.awk jest skryptem awk i powoduje wygenerowanie nowego pliku konfiguracyjnego dla MRTG. 6.35.2 Instalacja Instalacja modułu na kliencie, którego monitorujemy zawiera nast˛epujace ˛ czynności: 1. Należy stworzyć skrypt mrtgrq wywołujacy ˛ polecenie repquota. 2. Powyższy skrypt najlepiej uruchamiać za pomoca˛ deamona inetd – w tym celu należy dodać odpowiedni zapis do jego pliku konfiguracyjnego (/etc/inetd.conf). 3. Należy wprowadzić modyfikacj˛e także do pliku /etc/services. 4. Należy zrestartować deamon inetd. Instalacja modułu dla serwera wymaga natomiast, aby: 1. Ustawić deamona cron na uruchamianie dostarczonego w module skryptu mrtgrq. 2. Zrestartować crona. 6.36 6.36 Moduł net-hosts 47 Moduł net-hosts Moduł net-hosts napisany jest przez ta˛ sama˛ osob˛e, co poprzedni. Wspólna˛ ich cecha˛ jest użycie awk (dołaczony ˛ do modułu plik make-mrtg.cfg.awk ), jego działanie jest jednak prostsze niż w poprzednim przypadku – nie ma oddzielnych cz˛eści dla klienta i serwera. Podobnie jak w poprzednim module skrypt powłoki uruchamiany jest przez deamona cron. Zadaniem tego modułu jest monitorowanie stanu połaczeń ˛ internetowych na wybranej ścieżce. 6.37 Moduł rdlog2 Moduł rdlog2 pozwala na zobrazowanie ruchu sieciowego na prostym rysunku – mapie. Pobiera informacje z plików log MRTG i tworzy rysunek w formacie GIF, na którym połaczenia ˛ pomi˛edzy poszczególnymi punktami symbolizujacymi ˛ punkty sieciowe rysowane sa˛ odpowiednimi kolorami w zależności od nat˛eżenia ruchu. Moduł ten tworzy plik źródłowy napisany w j˛ezyku C, który wykorzystuje bibliotek˛e GD Graphics Library. Aby program mógł wygenerować plik graficzny konieczne jest podanie mu pliku konfiguracyjnego stworzonego w programie xfig. W module umieszczony jest przykładowy plik. Tworzac ˛ taki plik należy przestrzegać kilku ograniczeń: rysowane kształty musza˛ być jak najprostsze (trójkaty, ˛ prostokaty, ˛ linie – bez zaokragleń), ˛ elementy nie moga˛ być grupowane ze soba,˛ tekst może być pisany tylko jedna˛ czcionka,˛ jednym rozmiarem i dwoma orientacjami, tylko prostokaty ˛ moga˛ być wypełnione kolorem, linie moga˛ mieć tylko jeden atrybut – kolor, W tym pliku możemy także określić linki pomi˛edzy elementami reprezentujacymi ˛ urzadzenia ˛ sieciowe. Dla każdego z takich linków możemy określić: domyślny kolor linku, napis definiujacy ˛ maksymalna˛ wartość dla tego linku w postaci speed:wartość, napis z nazwa˛ pliku log o postaci log:[> | <]nazwa pliku+, gdzie znak > oznacza ruch wychodzacy, ˛ a < ruch wchodzacy. ˛ Interesujac ˛ a˛ możliwościa˛ tego modułu jest możliwość wygenerowania pliku HTML zawierajacego ˛ wygenerowany plik .gif wraz z odnośnikami do plików MRTG odpowiadajacych ˛ linkom na rysunku. 6.38 Moduł rumb-stat W skład tego modułu wchodza˛ dwa skrypty napisane w Perlu. Pierwszy z nich – gethttpstats służy do pobierania statystyk z serwera www Apache. Za pomoca˛ drugiego – getsquidstats – można natomiast pobrać statystyki serwera Squid. 6.39 6.39 Moduł stat 48 Moduł stat Zadaniem tego modułu jest monitorowanie aktywności serwera DNS. Możliwe jest pobieranie danych z lokalnego serwera, jak również w sposób zdalny. W drugim przypadku pobieranie danych nie jest realizowane w sposób bezpieczny – a mianowicie poprzez FTP z wykorzystaniem polecenia expect. 6.40 Moduł whodo Moduł whodo służy do monitorowania accountingu IP na ruterach Cisco. Możliwe jest także generowanie zbiorczych wykresów pokazujacych ˛ ruch z podziałem na poszczególne monitorowane cele. Do tego celu wykorzystany jest moduł Perla – GIFgraph, który z kolei wykorzystuje moduł GD. Informacje z poszczególnych ruterów sa˛ pobierane przez skrypt collect.pl, które zapisuje je do nowego pliku za każdym uruchomieniem. Jako argument podajemy mu plik z odwzorowaniem adresów sieciowych na nazwy, opcjonalnie możemy podać także do plik odwzorowujacy ˛ adresy źródłowe na nazwy hostów. Ponieważ za każdym uruchomieniem skryptu collect.pl tworzony jest nowy plik, w module dost˛epny jest także skrypt do zbierania danych z plików i tworzenia jednego pliku podsumowujacego. ˛ Jest to skrypt summarise.pl i powinien być uruchamiany raz dziennie. ˛ Trzecim z głównych skryptów jest makeanalyse.pl, które wywołuje jeden z dwóch dołaczonych do modułu skryptów CGI napisanych naturalnie w Perlu – analyse.pl, który tworzy stron˛e HTML. Ten z kolei wywołuje drugi skrypt pie.pl, który tworzy wykres zapisujac ˛ go w formacie GIF. 6.41 Moduł xlsummary Ostatnim z dodatkowych modułów dołaczonych ˛ do MRTG jest moduł xlsummary zawierajacy ˛ skrypt Perla, który tworzy podsumowania z plików log. Podsumowania konwertuje do formatu MS Excel wpisujac ˛ dane do arkusza kalkulacyjnego i tworzac ˛ wykresy. W szczególności może przedstawiać aktywność na wielu monitorowanych celach na jednym wykresie. Używajac ˛ IIS (Microsoft Internet Information Server) i IE (Microsoft Internet Explorer) utworzone wykresy można przegladać ˛ bezpośrednio za pomoca˛ przegladarki. ˛