Professional Documents
Culture Documents
Informatyka, IV rok
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
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
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
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.
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>.
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
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
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
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
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.
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
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
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
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
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
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,
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);
}
}’‘;
}
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:
#zmienna przechowywujaca
˛ nazw˛
e komputera, dla którego tworzone sa˛
#charakterystyki
machine=$1;
Target[wierchroot]: ‘/usr/local/mrtg-2/contrib/diskspace/diskspace.sh \
localhost linux /dev/hda4‘
MaxBytes[wierchroot]: 100
Options[wierchroot]: gauge,growright,noarrow,unknaszero,noo,nopercent,
noborder
Unscaled[wierchroot]: dwym
YLegend[wierchroot]: % dysku
ShortLegend[wierchroot]: % dysku
LegendI[wierchroot]: zaj˛etość dysku
Legend1[wierchroot]: Procentowa zaj˛ etość wybranego dysku
Title[wierchroot]: wierch.ds5.agh.edu.pl
PageTop[wierchroot]: <H1>Zaj˛etość dysku /
</H1>
<TABLE>
<TR><TD>Serwer:</TD><TD>wierch.ds5.agh.edu.pl</TD></TR>
</TABLE>
Powyższy fragment pliku konfiguracyjnego MRTG opisuje generowanie statystyk obrazuja- ˛
cych procentowa˛ zaj˛etość dysku /dev/hda4 znajdujacego
˛ si˛e na lokalnym komputerze pracujacym˛
w systemie Linux. Bieżace
˛ wartości wielkości mierzonej dostarczane sa˛ przez skrypt diskspace.sh.
Maksymalna wartość mierzonej wielkości to 100% (parametr MaxBytes). Użyte w przykła-
dzie opcje (parametr Options) powoduja,
˛ że wynik pomiaru traktowany jest jako wartość mierzonej
5.3 Pomiar obciażenia
˛ procesora 24
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.
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:
#zmienna przechowywujaca
˛ nazw˛
e komputera, dla którego tworzone sa˛
#charakterystyki
machine=$1;
Target[erniecpu]: ‘/usr/local/mrtg-2/contrib/cpuinfo/cpuinfo.sh \
ernie.icslab.agh.edu.pl sunos sar‘
MaxBytes[erniecpu]: 100
Options[erniecpu]: gauge,growright,noarrow,unknaszero,nopercent,
noborder
Unscaled[erniecpu]: dwym
YLegend[erniecpu]: % obciażenie
˛ CPU
ShortLegend[erniecpu]: % CPU
LegendI[erniecpu]: CPU Użytkownicy:
5.3 Pomiar obciażenia
˛ procesora 27
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),
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:
#komputerze zdalnym.
rsh="rsh";
#zmienna przechowywujaca
˛ nazw˛
e komputera, dla którego tworzone sa˛
#charakterystyki
machine=$1;
Target[ernieproc]: ‘/usr/local/mrtg-2/contrib/procnum/procnum.sh \
ernie.icslab.agh.edu.pl‘
MaxBytes[ernieproc]: 10000
Options[ernieproc]: gauge,noo,growright,noarrow,nopercent,unknaszero,
noborder
YLegend[ernieproc]: ilość procesów
ShortLegend[ernieproc]:
LegendI[ernieproc]: procesów:
Legend1[ernieproc]: Ilość procesów pracujacych
˛ na~wybranym serwerze
Legend3[ernieproc]: Maksymalna ilość procesów z~pi˛
eciu minut
WithPeak[ernieproc]: ymw
Colours[ernieproc]: POMARAŃCZOWY#dd8118,ZIELONY#00b200,ŻÓŁTY#d3c11d,
NIEBIESKI#1a8cd8
Title[ernieproc]: ernie.icslab.agh.edu.pl
PageTop[ernieproc]: <H1>Ernie - ilość pracujacych
˛ procesów
</H1>
<TABLE>
<TR><TD>Serwer:</TD><TD>ernie.icslab.agh.edu.pl</TD></TR>
</TABLE>
http://www.earlham.edu/~littejo/software/mrtg-mailstats.html
(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
Target[wierchmail]:
‘/usr/local/mrtg-2/contrib/mrtg-mailstats/mrtg-mailstats -f 60‘
MaxBytes[wierchmail]: 1250000
Options[wierchmail]: nopercent,growright,noarrow,unknaszero,noinfo,
noborder
YLegend[wierchmail]: wiadomości\\min
ShortLegend[wierchmail]: wiadomości\min
LegendI[wierchmail]: przychodzacych:
˛
Legend1[wierchmail]: Poczta przychodzaca
˛
LegendO[wierchmail]: wychodzacych:
˛
Legend2[wierchmail]: Poczta wychodzaca
˛
Title[wierchmail]: wierch.ds5.agh.edu.pl
PageTop[wierchmail]: <H1>Poczta przychodzaca
˛ i~wychodzaca
˛
</H1>
<TABLE>
<TR><TD>Serwer:</TD><TD>wierch.ds5.agh.edu.pl</TD></TR>
</TABLE>
Powyższy fragment pliku konfiguracyjnego MRTG obrazuje generowanie statystyk ilości po-
łaczeń
˛ na minut˛e do serwera poczty (osobno dla poczty przychodzacej
˛ i wychodzacej)
˛ na komputerze
lokalnym. Bieżace
˛ wartości wielkości mierzonej dostarczane sa˛ przez skrypt mrtg-mailstats.
Przedstawiona tutaj konfiguracja zawiera jedna˛ opcj˛e nie wyst˛epujac
˛ a˛ wcześniej – noinfo. 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).
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
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.
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
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
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
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.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.
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
Dodatkowo do modułu dodany jest skrypt CGI o nazwie mrtgnav napisany w Perlu, który
ułatwia nawigacj˛e po archiwum.
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
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
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.