Generacja wykresów przy pomocy MRTG

Transkrypt

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

Podobne dokumenty