You are on page 1of 48

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 6
3.1 Konfiguracja parametrów globalnych . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.1.1 Katalogi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.1.2 Współdziałanie z SNMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1.3 Zewn˛etrzny moduł do logowania . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1.4 Uruchamianie mrtg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1.5 Inne parametry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2 Konfiguracja monitorowania celów . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2.1 Podstawowe parametry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2.2 Maksymalne wartości zmiennych . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.3 Wyglad˛ strony HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.4 Parametry wykresów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2.5 Inne parametry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3 Sprawdzanie wartości progowych . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4 Definiowanie wartości domyślnych . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

4 Narz˛edzia dost˛epne wraz z MRTG 18


4.1 Generowanie pliku konfiguracyjnego . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2 Generowanie strony – indeksu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

5 Przykładowe konfiguracje 19
5.1 Funkcja procesUptime() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.2 Pomiar zaj˛etości dysków w systemie . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.2.1 Skrypt do pomiaru procentowej zaj˛etości dysku w systemie . . . . . . . . . 21
5.2.2 Zapis w pliku konfiguracyjnym MRTG . . . . . . . . . . . . . . . . . . . . 23
5.3 Pomiar obciażenia
˛ procesora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.3.1 Skrypt do pomiaru obciażenia
˛ procesora w systemie . . . . . . . . . . . . . 24
5.3.2 Zapis w pliku konfiguracyjnym MRTG . . . . . . . . . . . . . . . . . . . . 26
5.4 Pomiar ilości procesów w systemie . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.4.1 Skrypt do pomiaru ilości procesów . . . . . . . . . . . . . . . . . . . . . . . 28
5.4.2 Zapis w pliku konfiguracyjnym MRTG . . . . . . . . . . . . . . . . . . . . 30
5.5 Pomiar ilości połaczeń
˛ do serwera poczty sendmail . . . . . . . . . . . . . . . . . . 30
5.5.1 Skrypt do pomiaru ilości połaczeń
˛ do serwera poczty sendmail . . . . . . . . 30
5.5.2 Zapis w pliku konfiguracyjnym MRTG . . . . . . . . . . . . . . . . . . . . 32
5.6 Pomiar ruchu na interfejsie eth i ppp w systemie linux . . . . . . . . . . . . . . . . . 32
5.6.1 Zapis w pliku konfiguracyjnym MRTG . . . . . . . . . . . . . . . . . . . . 32
SPIS TREŚCI 3

6 Dodatkowe moduły dla MRTG 33


6.1 Moduł 14all . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.1.1 Opis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.1.2 Instalacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6.1.3 Plik konfiguracyjny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6.2 Moduł GetSNMPLinesUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
6.3 Moduł IxDisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6.4 Moduł PMLines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6.5 Moduł TTrafic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6.6 Moduł apc_ups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6.7 Moduły atmmaker, cfgmaker_ATM, cfgmaker_cisco, cfgmaker_dlci . . . . . . . . . 37
6.8 Moduł cisco_BPX_MGX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.9 Moduł ciscoindex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.10 Moduł cisco_ipaccounting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.11 Moduł cpuinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.12 Moduł cpumon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.13 Moduł diskmon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.13.1 Opis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.13.2 Instalacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.14 Moduł distrib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.15 Moduł get_active . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.16 Moduły ipchains, ipchainacc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.17 Moduł ipfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.18 Moduły iptables_acc, iptables-accounting . . . . . . . . . . . . . . . . . . . . . . . 40
6.19 Moduł ircstats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.20 Moduł ircstats2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.21 Moduł jm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.22 Moduł linux_stats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.23 Moduł memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6.24 Moduł monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6.24.1 Opis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6.24.2 Instalacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6.25 Moduł mrtg-archiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
6.26 Moduł mrtg-archiver-script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
6.27 Moduł mrtg-blast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.28 Moduł mrtg-dynip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.29 Moduł ipacc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.30 Moduł mrtg-mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
SPIS TREŚCI 4

6.31 Moduł mrtg.php . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45


6.32 Moduł mrtg_php_portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.33 Moduł mrtgidx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.34 Moduł mrtgindex.cgi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
6.35 Moduł mrtgrq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
6.35.1 Opis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
6.35.2 Instalacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
6.36 Moduł net-hosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
6.37 Moduł rdlog2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
6.38 Moduł rumb-stat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
6.39 Moduł stat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.40 Moduł whodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.41 Moduł xlsummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
1 Wst˛ep 5

1 Wst˛ep
MRTG (Multi Router Traffic Grapher) jest narz˛edziem do monitorowania i wizualizacji niemal do-
wolnych wielkości zwiazanych
˛ z działaniem systemu komputerowego pracujacego
˛ pod kontrola˛ sys-
temu 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 monitoro-
wanie 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 pro-
gowe – 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śle-
nie 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, ob-
ciaż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śl-
nym 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˛ep-
nie 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ła-
nych 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 na-
st˛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 rozpoczy-
nały si˛e np. o pełnej godzinie.
Znormalizowane wartości zapisywane sa˛ w pliku log. Aby zapobiec nieskończonemu rozra-
staniu si˛e takiego pliku dokonywanie jest scalanie otrzymanych wartości. Na podstawie znormalizo-
wanych 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 odejmo-
wania 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 mo-
dyfikować 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 opi-
sana 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 re-
agowanie 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 na-
wiasach kwadratowych wybranej nazwy celu – Parametr[<nazwa celu>]: <wartość parametru>.

3.1 Konfiguracja parametrów globalnych


3.1.1 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, pli-
ków graficznych i plików log:
HtmlDir katalog dla stron HTML
ImageDir katalog dla plików graficznych
LogDir 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 przecho-
wywania plików z logo MRTG, które wyświetlane sa˛ na generowanych stronach:
IconDir katalog dla plików z logo MRTG; w przeciwieństwie do powyższych pa-
rametrów powinna być to ścieżka wzgl˛edna wobec katalogu określonego
parametrem WorkDir

3.1.2 Współdziałanie z SNMP

Aby zapewnić współprac˛e pomi˛edzy MRTG a różnymi, cz˛esto niekompatybilnymi z soba˛ implemen-
tacjami SNMP możliwe jest ustawienie poniższych parametrów:
NoMib2 MRTG nie pyta o własności sysUptime i sysName, których nie posiadaja˛
niektóre implementacje SNMP
SingleRequest 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 urucha-
mianie kilku instancji programu mrtg poprzez ustawienie opcji:
Fork uruchomienie kilku procesów mrtg równocześnie

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 rrd-
tool. Aby skorzystać z tej możliwości należy ustawić nast˛epujace
˛ opcje:
LogFormat jeżeli chcemy użyć programu rrdtool, to parametr powinien mieć wartość
rrdtool
LibAdd opcjonalny parametr określajacy ˛ dla interpretera perla ścieżk˛e do modułu
rrdtool, jeżeli interpreter sam nie potrafi go zlokalizować
PathAdd opcjonalny parametr oznaczajacy ˛ ścieżk˛e do programu wykonywalnego
rrdtool
3.2 Konfiguracja monitorowania celów 8

3.1.4 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 wyko-
nujace
˛ 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. Na-
leż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.
Podobne zadanie ma parametr Refresh, który wskazuje po jakim czasie przegladarka
˛ powinna prze-
ładować stron˛e:
Refresh co jaki czas przeładować stron˛e

3.1.5 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 wybór j˛ezyka, w jakim generowane b˛eda˛ strony HTML

3.2 Konfiguracja monitorowania celów

3.2.1 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 wy-
˛ o zmienna˛ SNMP o nazwie ifIndex. router jest adresem (IP lub nazwa˛ DNS)
korzystuje go pytajac
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 do-
tychczasowego 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 po-
moca˛ 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 inter-
fejsu 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 32-
bitowych; 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 sytu-
acji, 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 for-


matu 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 war-
toś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˛ para-
metru 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 wy-
branych 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
˛ ak-
tualny stan monitorowanej wielkości – nie sa˛ dokonywane żadne obliczenia
– takie jak odejmowanie bieżacej
˛ wartości od wartości poprzedniej i dzie-
lenie 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 do-
konywania 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 mo-
mencie, to przyjmuje, że jest ona równa ostatniej odczytanej wartości. W przypadku ciagłego
˛ moni-
torowania 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 em-
phMRTG pomija wartości zerowe. Jeśli chcemy zmienić te sposób działania powinniśmy użyć wspo-
mnianej opcji:
withzeroes MRTG bierze pod uwag˛e wartości zerowe podczas obliczania wartości śred-
niej
Pozostałe opcje, które można przypisać do parametru Options opisane sa˛ nast˛epnych podrozdziałach.
3.2 Konfiguracja monitorowania celów 12

3.2.2 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 wartość maksymalna obu zmiennych
MaxBytes1 wartość maksymalna pierwszej zmiennej
MaxBytes2 wartość maksymalna drugiej zmiennej
Opcjonalnym parametrem zwiazanym
˛ z powyższymi jest AbsMax, który jest użyteczny, gdy monitoro-
wana 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 tytuł strony HTML
PageTop informacje wstawiane na poczatku
˛ strony HTML – po znaczniku <body>
Dla każdego monitorowanego celu możemy ustalić też nast˛epujace
˛ parametry opcjonalne:
PageFoot dodatkowe informacje wstawiane na końcu strony bezpośrednio przed
znacznikiem </body>
AddHead wstawienie dodatkowych znaczników pomi˛edzy </title> i </head> –
w ten sposób możemy np. wstawić link do pliku ze stylami CSS
BodyTag 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 war-
toś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˛ odpowied-
nio pierwsza˛ i druga˛ zmienna,˛ a Col3 i Col4 – ich wartości maksymalne. To co wpiszemy w miej-
scach 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 przy-
padku 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.
Mówiac ˛ o kolorach na stronie HTML należy wspomnieć jeszcze o opcji Background służacej
˛ do usta-
wienia koloru tła generowanej strony. Oczywiście ten sam efekt można osiagn˛ ać
˛ używajac˛ opisa-
nego wcześniej parametru BodyTag samodzielnie tworzac ˛ znacznik <body> i określajac
˛ w nim kolor.
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 przypi-
sać do tego parametru:
bits wszystkie wartości monitorowanych wielkości mnożone sa˛ przez 8 – powo-
dujac
˛ wyświetlanie wartości w bitach, a nie w bajtach; zmieniane sa˛ także
jednostki opisujace
˛ wykres oraz umieszczone przy wartościach maksymal-
nych, średnich i bieżacych
˛ poniżej wykresu
perminute wszystkie wartości monitorowanych wielkości mnożone sa˛ przez 60; po-
dobnie 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 wykre-
sie 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 war-
toś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 – maksymal-
nych, ś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 zmien-
nych; 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 zde-
cydować, 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 re-
klamowy
nolegend rezygnacja z generowania legendy do poszczególnych zmiennych umiesz-
czanej 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 wy-
pisywane 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 nazwy mierzonych zmiennych
ShortLegend jednostki, w których mierzone sa˛ zmienne

3.2.4 Parametry wykresów

Domyślnie wszystkie wykresy sa˛ skalowane w ten sposób, że jeżeli zmienne osiagaj
˛ a˛ wartości mniej-
sze 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˛ para-
metru 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 szczyto-
wymi:
3.2 Konfiguracja monitorowania celów 15

WithPeak 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śl-
nych 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 rozmiar generowanych wykresów w poziomie
YSize rozmiar generowanych wykresów w pionie
Można także zwi˛ekszyć rozmiar pikseli wykorzystujac
˛ parametry:
XZoom powi˛ekszenie generowanych wykresów w poziomie
YZoom powi˛ekszenie generowanych wykresów w pionie
Kolejna˛ możliwościa˛ jest przeskalowanie wykresów, ale wg. autora pakietu MRTG nie daje to zada-
walajacych
˛ efektów wizualnych.
XScale skalowanie generowanych wykresów w poziomie
YScale 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 ilość poziomych linii wyświetlanych na wykresie
YTicksFactors 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 wy-
kresy 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 po-
woduja˛ przeskalowanie wykresów i wyświetlanie zmienionych etykiet przy osiach pionowych. Z ko-
lei 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 two-
rzenie 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 para-


metr Suppress, którego powinien być string podobny zbudowany w identyczny sposób jak w dwóch
poprzednich opcjach:
Suppress zablokowanie wyświetlania poszczególnych wykresów

3.2.5 Inne parametry

Pakiet MRTG daje bardzo szerokie możliwości dostosowania ustawień monitorowanych celów do wła-
snych 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:
kilo zmiana wartości mnożnika używanego do budowania prefiksów jednostek
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.˛
kMG określenie przedrostków jednostek lub rezygnacja z ich użycia
W przypadku stosowania zewn˛etrznych skryptów generujacych
˛ dane dla MRTG możemy skorzystać
z opcji SetEnv pozwalajacej
˛ na ustawienie zmiennych środowiskowych:
SetEnv ustawienie zmiennych środowiskowych

3.3 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 usta-
lić progi minimalne i maksymalne dla poszczególnych zmiennych, których przekroczenie b˛edzie po-
wodował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 pa-
rametrami 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 17

ThreshMinI, minimalne wartości odpowiednio dla pierwszej i drugiej zmiennej; wartości


ThreshMinO te moga˛ być zakończone znakiem „\%” – wtedy sa˛ to procentowe wartości
wzgl˛edem parametru MaxBytes
ThreshMaxI, maksymalne wartości odpowiednio dla pierwszej i drugiej zmiennej; po-
ThreshMaxO dobnie 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, programy uruchamiane przy przekroczeniu wartości progowych przez od-
ThreshProgO powiednio – 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 wy-
nika, że poprzednim razem wartość (wartości) zmiennej była przekroczona. Jest to program urucha-
miany, gdy monitorowane wielkości wracaja˛ do normy.
ThreshProgOKI, programy uruchamiane, gdy wartości zmiennych sa˛ prawidłowe, ale w po-
ThreshProgOKO przednim uruchomieniu były nieprawidłowe; parametry dotycza˛ odpowied-
nio – pierwszej i drugiej zmiennej
Dodatkowo można wykorzystać poniższa˛ opcj˛e – także definiowana˛ dla każdego z celów:
ThreshDesc wartość tego parametru jest przypisywana do zmiennej środowiskowej
THRESH_DESC przed wywołaniem któregokolwiek z powyższych progra-
mów

3.4 Definiowanie wartości domyślnych


Konfigurujac
˛ monitorowanie wielu celów za pomoca˛ MRTG możemy skorzystać z możliwości zde-
finiowania 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 przy-
padku – 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 po-
czatku
˛ 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 iden-
tyczne do znaku „^”, z ta˛ różnica,˛ że sprecyzowana wartość dołaczana
˛ jest na końcu wartości przypi-
sanej poszczególnym celom.
4 Narz˛edzia dost˛epne wraz z MRTG 18

4 Narz˛edzia dost˛epne wraz z MRTG


4.1 Generowanie pliku konfiguracyjnego
Konfiguracja działania MRTG możliwa jest także za pomoca˛ programu cfgmaker. Program ten ko-
rzystajac
˛ z podanych mu opcji generuje plik konfiguracyjny. Składania jego wywołania jest nast˛epu-
jaca:
˛
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ż konfigu-
racja 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ż, na-
szym 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


Kolejnym programem dostarczanym w pakiecie MRTG jest program indexmaker służacy ˛ do gene-
racji strony HTML – indeksu zawierajacej
˛ informacje o monitorowanych celach prezentujac ˛ przykła-
dowo po jednym wykresie dla każdego celu. Umożliwia to nawigacj˛e po stronach HTML poszczegól-
nych 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 spre-
cyzować 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 wy-
branych 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 (usta-
lony 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 przedsta-
wiajac
˛ 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 pa-
rametrem 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 two-
rzonej 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 Pomiar zaj˛etości dysków w systemie


5.2.1 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). Do-
datkowo należy sprawdzić wartość zmiennej rsh w skrypcie i w razie potrzeby dokonać jej modyfi-
kacji.

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 22

#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";
5.2 Pomiar zaj˛etości dysków w systemie 23

echo " os: sunos linux";


exit 1;
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]: &nbsp;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ła-
dzie 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 za-
koń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˛ ob-
ramowania.
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 Pomiar obciażenia


˛ procesora
5.3.1 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 syste-
mowe. 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 26

#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]: &nbsp;CPU Użytkownicy:
5.3 Pomiar obciażenia
˛ procesora 27

LegendO[erniecpu]: &nbsp;CPU System:


Legend1[erniecpu]: Obciażenie
˛ procesora przez procesy użytkowników
Legend2[erniecpu]: Obciażenie
˛ procesora przez procesy systemowe
Legend3[erniecpu]: 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
5.4 Pomiar ilości procesów w systemie 28

Powyższy fragment pliku konfiguracyjnego MRTG opisuje generowanie statystyk przedsta-


wiajacych
˛ 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 Pomiar ilości procesów w systemie


5.4.1 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). Do-
datkowo należy sprawdzić wartość zmiennej rsh w skrypcie i w razie potrzeby dokonać jej modyfi-
kacji.

Działanie: Skrypt używa programu rsh w celu wylistowania katalogu /proc na podanym kompute-
rze (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 znaj-
duja˛ 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 29

#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;
5.5 Pomiar ilości połaczeń
˛ do serwera poczty sendmail 30

5.4.2 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]: &nbsp;
LegendI[ernieproc]: &nbsp;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 obrazu-


jacych
˛ ilość pracujacych
˛ procesów na zdalnym komputerze ernie.icslab.agh.edu.pl. Bieżacych
˛ war-
tości wielkości mierzonej dostarcza skrypt procnum.sh.
Przedstawiona tutaj konfiguracja podobna jest do tych zamieszczonych wcześniej. Genero-
wane 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 Pomiar ilości połacze


˛ ń do serwera poczty sendmail
5.5.1 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 li-
cencji 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 zliczanie całkowitej ilości bajtów, a nie ilości wiadomości


-m mailer - pobieranie statystyk tylko dla podanego mailera
-s server - pobieranie statystyk z~podanego zdalnego komputera
-p 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]: &nbsp; przychodzacych:
˛
Legend1[wierchmail]: Poczta przychodzaca
˛
LegendO[wierchmail]: &nbsp; 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. Po-
woduje 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 Pomiar ruchu na interfejsie eth i ppp w systemie linux


5.6.1 Zapis w pliku konfiguracyjnym MRTG

Target[ethernet]: /192.168.5.37:public@kona.ds5.agh.edu.pl
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:andrewg@eurosport.com">
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 wycho-
dzacego
˛ 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 maksy-
malne 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 Moduł 14all


6.1.1 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 od-
powiednia˛ 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 wyko-
nywać 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),
5. umieszczenie ścieżki do pliku konfiguracyjnego pod zmienna˛ $cfgfile w skrypcie, badź
˛ utwo-
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 wyge-
nerowanych 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 dodat-
kowych 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 ustawia ilość kolumn w stronie index.html; domyślnie 2


all*Background ustawia kolor tła w stronie index.html; domyślnie biały
all*RRDToolLog plik z logami wywołań RDDTool’a; przydatny przy debuggingu
14all
all*ErrorPic plik z rysunkiem wyświetlanym przez 14all w przypadku wysta-˛
pienia bł˛edu przy tworzeniu któregoś z wykresów
all*GraphErrorsToBrowser gdy ta opcja jest ustawiona i zainstalowany perlowy moduł GD,
to w przypadku wystapienia
˛ bł˛edu 14all tworzy wykres zawie-
rajacy
˛ wiadomość o zaistniałym bł˛edzie

Dodatkowe parametry dla poszczególnych celów

all*Logarithmic włacza
˛ skal˛e logarytmiczna˛ dla osi Y
all*GraphTotal włacza
˛ na wykresach wyświetlanie linii pokazujacej
˛ sum˛e war-
tości obrazowanych przez dwie pozostałe linie
all*DontShowIndexGraph w przypadku ustawienia tej opcji strona index.html nie b˛edzie
zawierała wykresu dla tego celu
all*IndexGraphSize 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 Ma-
kefile 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 (commu-
nity) 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 Moduł IxDisk 36

6.3 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˛ staty-
styki 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 do-
kleić 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 ba-
teryjnego 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 Moduły atmmaker, cfgmaker_ATM, cfgmaker_cisco, cfgmaker_dlci 37

6.7 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.
Moduł cfgmaker_cisco to modyfikacja programu cfgmaker wspierajaca ˛ VLAN-y. Dzi˛eki
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 przycho-
dzacych
˛ 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 przecho-
dzacego
˛ 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 ko-
rzysta 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 odpowied-
nio 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żytkow-
nikó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 interpre-
tera 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ści-
wie systemu plików). Drugi z nich to klient, łacz
˛ acy
˛ si˛e z pierwszym i pobierajacy
˛ z niego dane doty-
czace
˛ 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 za-
instalować 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 kon-
figuracyjnym MRTG, tzn. zdefiniować monitorowany cel, dla którego dane dostarcza skrypt get-
disk.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 odpo-
wiednie 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 ko-
mendy 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 re-
guł 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ńcu-
cha 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 monito-
rowania 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 zainicjali-
zować 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 na-
wiazuje
˛ 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ów-
nież 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 ser-
wera 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 Moduł memory 42

6.23 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 udo-
st˛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 wy-
kresy powinny zostać wyświetlone.
Moduł zakłada istnienie bazy danych z jedna˛ tabela˛ służac
˛ a˛ do autentykacji. Strony dla po-
szczególnych użytkowników generowane sa˛ w sposób dynamiczny – dzi˛eki użyciu ASP (Active Se-
rver 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 (Micro-
soft Internet Information Server). Ewentualne, opisywane przez autora uruchomienie modułu w in-
nym ś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 stworze-
nie 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 Source-
Name), 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 po-
woduja˛ 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 auten-
tykacji. 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 usta-
wianego 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 od-
dzielnym 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 gene-
rowanych przez MRTG. Jego działanie polega na parsowaniu skryptu konfiguracyjnego MRTG i wyj-
mowaniu 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 se-
kund
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 na-
st˛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 wy-
brać 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 in-
terfejsó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 polecenia ipfwadm. Polecenie to służy do ustawiania i sprawdzania reguł zwiazanych
˛ z bezpieczeń-
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 może być to in lub out; jeżeli parametr nie zostanie podany, wyświetlone zostana˛
oba
source_ip adres IP hosta źródłowego
dest_ip adres IP hosta docelowego
net_bits ilość bitów przeznaczonych na sieć i podsieć
portN numer portu

6.30 Moduł mrtg-mail


Moduł ten zawiera kilka wersji skryptów Perla realizujacych
˛ to samo zadanie – wizualizujacych
˛ in-
formacje 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
˛ konfigura-
cj˛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


Plik mrtgidx to skrypt napisany w Perlu, który korzystajac
˛ z pliku konfiguracyjnego MRTG tworzy
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 46

6.34 Moduł mrtgindex.cgi


Jak wskazuje nazwa zastosowanie tego modułu jest identyczne, jak omówionego wcześniej. Po-
siada 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 pro-
˛ modułu Perla – Net::Telnet.
gramu klienta i serwera, którzy komunikuja˛ si˛e mi˛edzy soba˛ używajac
Jego zadaniem jest natomiast monitorowanie przestrzeni dyskowej używanej przez użytkow-
nikó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 Moduł net-hosts 47

6.36 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 poprzed-
nim 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 Gra-
phics 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 wy-
chodzacy,
˛ a < ruch wchodzacy. ˛

Interesujac
˛ a˛ możliwościa˛ tego modułu jest możliwość wygenerowania pliku HTML zawiera-
jacego
˛ 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 Moduł stat 48

6.39 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 gene-
rowanie 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łaczo-
˛
nych 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) utwo-
rzone wykresy można przegladać
˛ bezpośrednio za pomoca˛ przegladarki.
˛