To jest polecenie rrdtutorial, które można uruchomić w bezpłatnym dostawcy hostingu OnWorks przy użyciu jednej z naszych wielu bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online systemu MAC OS
PROGRAM:
IMIĘ
rrdtutorial — samouczek RRDtool Alexa van den Bogaerdta
OPIS
RRDtool został napisany przez Tobiasa Oetikeratobi@oetiker.ch> przy udziale wielu osób
na całym świecie. Ten dokument został napisany przez Alexa van den Bogaerdta
<alex@vandenbogaerdt.nl> aby pomóc Ci zrozumieć, czym jest RRDtool i do czego może służyć
ty.
Dokumentacja dostarczona z RRDtool może być dla niektórych osób zbyt techniczna. Ten
tutorial jest tutaj, aby pomóc Ci zrozumieć podstawy RRDtool. Powinno cię to przygotować
sam przeczytaj dokumentację. Wyjaśnia także ogólne kwestie dotyczące statystyki
z naciskiem na networking.
SEMINARIUM
Ważny
Proszę nie pomijać dalej tego dokumentu! Pierwsza część tego dokumentu wyjaśnia
podstawy i może być nudne. Ale jeśli nie rozumiesz podstaw, przykłady nie będą
być dla ciebie tak samo znaczące.
Czasami coś się zmienia. W tym przykładzie podano liczby takie jak „0.04” zamiast
„4.00000e-02”. To są naprawdę te same liczby, tylko inaczej zapisane. Nie
bądź zaniepokojony, jeśli przyszła wersja rrdtool wyświetli nieco inną formę danych wyjściowych.
Przykłady w tym dokumencie dotyczą wersji 1.2.0 RRDtool.
Czasami zdarzają się też błędy. Mogą one również mieć wpływ na wynik przykładów.
Przykład speed4.png cierpiał z tego powodu (obsługa nieznanych danych w trybie if-
oświadczenie było błędne). Normalne dane będą w porządku (błąd w rrdtool nie będzie trwał długo)
ale szczególne przypadki, takie jak NaN, INF i tak dalej, mogą trwać nieco dłużej. Wypróbuj inną wersję, jeśli
możesz, albo po prostu z tym żyj.
Poprawiłem przykład speed4.png (i dodałem notatkę). Mogą być inne przykłady
cierpi na ten sam lub podobny błąd. Spróbuj naprawić to sam, co jest świetne
ćwiczenie. Prosimy jednak nie przesyłać wyników jako poprawki do źródła tego dokumentu.
Porozmawiaj o tym na liście użytkowników lub napisz do mnie.
Co is Narzędzie RRD?
RRDtool odnosi się do narzędzia Round Robin Database. Round robin to technika, która działa z
ustalona ilość danych i wskaźnik do bieżącego elementu. Pomyśl o kręgu z niektórymi
kropki na krawędziach. Te kropki to miejsca, w których można przechowywać dane. Narysuj
strzałka od środka okręgu do jednej z kropek; to jest wskaźnik. Kiedy
aktualne dane zostaną odczytane lub zapisane, wskaźnik przesuwa się do następnego elementu. Ponieważ jesteśmy na
okrąg nie ma początku ani końca, można ciągnąć dalej i dalej. Po
podczas gdy wszystkie dostępne miejsca zostaną wykorzystane, a proces automatycznie ponownie wykorzysta stare
lokalizacje. W ten sposób zbiór danych nie będzie się powiększał i dlatego nie będzie wymagał
konserwacja. RRDtool współpracuje z bazami danych Round Robin (RRD). Przechowuje i odzyskuje
z nich dane.
Co dane mogą be położyć najnowszych an RRD?
Jakkolwiek to nazwać, prawdopodobnie będzie pasować, o ile są to dane szeregów czasowych. Ten
oznacza, że musisz być w stanie zmierzyć pewną wartość w kilku momentach i podać ją
informacje do RRDtool. Jeśli możesz to zrobić, RRDtool będzie mógł go zapisać. Wartości
musi być liczbą, ale nie musi być liczbami całkowitymi, jak ma to miejsce w przypadku MRTG (następny
sekcja zawiera więcej szczegółów na temat tej bardziej specjalistycznej aplikacji).
Wiele przykładów poniżej mówi o protokole SNMP, który jest akronimem od Simple Network Management
Protokół. „Prosty” odnosi się do protokołu. Nie oznacza to, że jest łatwy w zarządzaniu lub
monitorować sieć. Po zapoznaniu się z tym dokumentem powinieneś wiedzieć wystarczająco dużo, aby to zrobić
być w stanie zrozumieć, o czym ludzie mówią. Na razie po prostu zdaj sobie sprawę, że SNMP może
służyć do wysyłania zapytań do urządzeń o wartości przechowywanych przez nie liczników. To jest wartość z nich
liczniki, które chcemy przechowywać w RRD.
Co mogą I do w to narzędzie?
RRDtool wywodzi się z MRTG (Multi Router Traffic Grapher). MRTG zaczynało od małego
skrypt do wykresu wykorzystania połączenia uczelni z Internetem. MRTG było później
(ab-) używane jako narzędzie do tworzenia wykresów innych źródeł danych, w tym temperatury, prędkości, napięcia,
liczba wydruków i tym podobne.
Najprawdopodobniej zaczniesz wykorzystywać RRDtool do przechowywania i przetwarzania danych zebranych poprzez SNMP.
Dane będą najprawdopodobniej bajtami (lub bitami) przesyłanymi z i do sieci lub:
komputer. Ale może być również używany do wyświetlania fal pływowych, promieniowania słonecznego i mocy
zużycie energii, liczba zwiedzających wystawę, poziom hałasu w pobliżu lotniska,
temperaturę w Twoim ulubionym miejscu na wakacje, temperaturę w lodówce i cokolwiek zechcesz
wyobraźnia może wymyślić.
Potrzebujesz jedynie czujnika do pomiaru danych i możliwości wprowadzenia liczb do RRDtool.
RRDtool pozwala następnie utworzyć bazę danych, przechowywać w niej dane, pobierać je i tworzyć
wykresy w formacie PNG do wyświetlania w przeglądarce internetowej. Te obrazy PNG są zależne od
dane, które zebrałeś i mogą to być na przykład przegląd średniego wykorzystania sieci,
lub szczyty, które wystąpiły.
Co if I nadal mieć problemy po czytanie to dokument?
Po pierwsze: przeczytaj jeszcze raz! Być może coś przeoczyłeś. Jeśli nie możesz skompilować
źródła i masz dość powszechny system operacyjny, prawdopodobnie nie będzie to wina RRDtool.
W Internecie mogą znajdować się wstępnie skompilowane wersje. Jeśli pochodzą od zaufanych
źródeł, zdobądź jedno z nich.
Jeśli natomiast program działa, ale nie daje oczekiwanych rezultatów, to tak się stanie
będzie problem z jego konfiguracją. Przejrzyj swoją konfigurację i porównaj ją z
następujące przykłady.
Istnieje lista mailingowa i jej archiwum. Przeczytaj listę przez kilka tygodni i wyszukaj
archiwum. Za niegrzeczne uważa się po prostu zadawanie pytań bez przeszukiwania archiwów: your
problem mógł już zostać rozwiązany w przypadku kogoś innego! Dotyczy to większości, jeśli nie
wszystkie, listy mailingowe i nie tylko dla tej konkretnej. Poszukaj w dokumentacji, że
dostarczony z narzędziem RRDtool do lokalizacji i wykorzystania listy.
Sugeruję, abyś już teraz poświęcił chwilę na zapisanie się na listę mailingową, wysyłając e-mail
dorrd-users-request@lists.oetiker.ch> z tematem „subskrybuj”. Jeśli kiedykolwiek będziesz tego chciał
opuść tę listę, po prostu napisz e-mail na ten sam adres, ale teraz z tematem
„anuluj subskrypcję”.
W jaki sposób będzie ty pomoc ja?
Podając szczegółowe opisy ze szczegółowymi przykładami. Zakładam, że następujące
instrukcje w podanej kolejności zapewnią Ci wystarczającą wiedzę o RRDtool
poeksperymentuj sam. Jeśli nie uda się za pierwszym razem, nie poddawaj się. Przeczytaj ponownie
rzeczy, które zrozumiałeś, mogłeś coś przeoczyć.
Postępując zgodnie z przykładami, zdobędziesz praktyczne doświadczenie i, co ważniejsze, trochę
podstawowe informacje o tym, jak to działa.
Będziesz musiał wiedzieć coś o liczbach szesnastkowych. Jeśli nie, zacznij od
czytając bin_dec_hex, zanim przejdziesz dalej.
Twoje drugim Okrągły Rudzik Baza danych
Moim zdaniem najlepszym sposobem, aby się czegoś nauczyć, jest faktycznie to zrobić. Dlaczego nie zacząć dobrze
Teraz? Stworzymy bazę danych, umieścimy w niej pewne wartości i ponownie wyodrębnimy te dane. Twój
dane wyjściowe powinny być takie same, jak dane wyjściowe zawarte w tym dokumencie.
Zaczniemy od prostych rzeczy i porównamy samochód z routerem lub porównamy kilometry
(mile, jeśli chcesz) z bitami i bajtami. Wszystko jest takie samo: pewna liczba w pewnym czasie.
Załóżmy, że mamy urządzenie przesyłające bajty do i z Internetu. To urządzenie trzyma
licznik, który po włączeniu zaczyna się od zera i rośnie z każdym bajtem
przeniesiony. Licznik ten prawdopodobnie będzie miał wartość maksymalną. Jeśli ta wartość zostanie osiągnięta i
zliczany jest dodatkowy bajt, licznik zaczyna się od zera. To jest to samo, co wielu
liczniki na świecie takie jak licznik kilometrów w samochodzie.
Większość dyskusji na temat sieci mówi o bitach na sekundę, więc przyzwyczajmy się do tego
od razu. Załóżmy, że bajt ma osiem bitów i zacznij myśleć bitami, a nie bajtami. Licznik,
jednak nadal liczy bajty! W świecie SNMP większość liczników jest 32-bitowa. To
oznacza, że liczą od 0 do 4294967295. Będziemy używać tych wartości w przykładach.
Urządzenie na żądanie zwraca aktualną wartość licznika. Znamy ten czas
minęło od czasu, gdy ostatnio pytaliśmy, więc wiemy już, ile bajtów zostało przesłanych ***on
średnia*** na sekundę. To nie jest bardzo trudne do obliczenia. Najpierw słowami, potem w
obliczenia:
1. Weź bieżący licznik, odejmij od niego poprzednią wartość.
2. Zrób to samo z bieżącym i poprzednim czasem (w sekundach).
3. Podziel wynik (1) przez wynik (2), wynikiem będzie ilość bajtów na
drugi. Pomnóż przez osiem, aby uzyskać liczbę bitów na sekundę (bps).
bps = (licznik_teraz - licznik_przed) / (czas_teraz - czas_przed) * 8
Niektórym osobom pomocne może być przełożenie tego na przykład samochodu. Nie próbuj tego
przykład, a jeśli tak, nie obwiniaj mnie za rezultaty!
Osoby, które nie są przyzwyczajone do myślenia w kilometrach na godzinę, potrafią przeliczyć większość na mile na godzinę
godzinę, dzieląc km przez 1.6 (wystarczająco blisko). Będę używał następujących skrótów:
m: metr
km: kilometr (= 1000 metrów).
h: godzina
s: drugie
km/h: kilometry na godzinę
m/s: metry na sekundę
Prowadzisz samochód. O 12:05 odczytujesz licznik na desce rozdzielczej i on ci mówi
że auto przejechało do tego momentu 12345 km. O 12:10 patrzysz jeszcze raz i czyta
12357 km. Oznacza to, że przejechałeś 12 km w pięć minut. Naukowiec by przetłumaczył
to w metrach na sekundę, co stanowi dobre porównanie do problemu (bytes
na pięć minut) w porównaniu z (bitami na sekundę).
Przejechaliśmy 12 kilometrów, czyli 12000 metrów. Zrobiliśmy to w pięć minut lub 300
sekundy. Nasza prędkość wynosi 12000m / 300s lub 40m/s.
Moglibyśmy również obliczyć prędkość w km/h: 12 razy 5 minut to godzina, więc musimy to zrobić
pomnóż 12 km przez 12, aby otrzymać 144 km/h. Dla naszych rodzimych anglojęzycznych przyjaciół: to 90
mph, więc nie próbuj tego przykładu w domu ani tam, gdzie mieszkam :)
Pamiętaj: te liczby są jedynie wartościami średnimi. Nie ma sposobu, aby dowiedzieć się z
liczby, jeśli jechałeś ze stałą prędkością. W dalszej części tego samouczka znajduje się przykład
to wyjaśnia.
Mam nadzieję, że rozumiesz, że nie ma różnicy w obliczaniu m/s lub bps; tylko droga
zbieramy dane, jest inna. Nawet k z kilograma jest takie samo jak w kategoriach sieciowych
k oznacza również 1000.
Stworzymy teraz bazę danych, w której będziemy mogli przechowywać wszystkie te interesujące liczby. Metoda
użyte do uruchomienia programu mogą się nieznacznie różnić w zależności od systemu operacyjnego, ale zakładam, że możesz to zrozumieć
sprawdź to, jeśli na Twoim działa inaczej. Upewnij się, że nie nadpisałeś żadnego pliku na swoim
system podczas wykonywania następującego polecenia i wpisz całą linię jako jedną długą linię (I
musiałem go podzielić dla czytelności) i pominąć wszystkie znaki „\”.
rrdtool tworzy test.rrd
--rozpocznij 920804400
DS:prędkość:LICZNIK:600:U:U
RRA:ŚREDNIA:0.5:1:24
RRA:ŚREDNIA:0.5:6:10
(Więc wpisz: „rrdtool utwórz test.rrd --start 920804400 DS ...”)
Co ma być Utworzony?
Stworzyliśmy okrężną bazę danych o nazwie test (test.rrd), która rozpoczyna pracę w południe pierwszego dnia
zacząłem pisać ten dokument 7 marca 1999 (data ta oznacza 920804400
sekund, jak wyjaśniono poniżej). Nasza baza danych zawiera jedno źródło danych (DS) o nazwie „speed”.
reprezentuje licznik. Licznik ten jest odczytywany co pięć minut (jest to ustawienie domyślne
dlatego nie musisz wpisywać „--step=300”). W tej samej bazie danych dwa działania okrężne
archiwa (RRA), dane są uśredniane przy każdym czytaniu (np
nic przeciętnego) i przechowuje 24 próbki (24 razy 5 minut to 2 godziny). Inny
uśrednia 6 wartości (półgodzinnych) i zawiera 10 takich średnich (np. 5 godzin).
RRDtool współpracuje ze specjalnymi znacznikami czasu pochodzącymi ze świata UNIX. Ten znacznik czasu to
liczba sekund, które minęły od 1 stycznia 1970 UTC. Wartość znacznika czasu wynosi
przetłumaczona na czas lokalny i dlatego będzie wyglądać inaczej dla różnych stref czasowych.
Jest duże prawdopodobieństwo, że nie jesteś w tej samej części świata co ja. To oznacza Twój czas
strefa jest inna. We wszystkich przykładach, w których mówię o czasie, godziny mogą być nieprawidłowe
Ty. Ma to niewielki wpływ na wyniki przykładów, wystarczy skorygować godziny
czytanie. Na przykład: tam, gdzie ja zobaczę „12:05”, Brytyjczycy zobaczą „11:05”.
Musimy teraz wypełnić naszą bazę danych kilkoma liczbami. Będziemy udawać, że przeczytaliśmy
następujące liczby:
12:05 12345 km
12:10 12357 km
12:15 12363 km
12:20 12363 km
12:25 12363 km
12:30 12373 km
12:35 12383 km
12:40 12393 km
12:45 12399 km
12:50 12405 km
12:55 12411 km
13:00 12415 km
13:05 12420 km
13:10 12422 km
13:15 12423 km
Bazę danych wypełniamy w następujący sposób:
test aktualizacji rrdtool.rrd 920804700:12345 920805000:12357 920805300:12363
test aktualizacji rrdtool.rrd 920805600:12363 920805900:12363 920806200:12373
test aktualizacji rrdtool.rrd 920806500:12383 920806800:12393 920807100:12399
test aktualizacji rrdtool.rrd 920807400:12405 920807700:12411 920808000:12415
test aktualizacji rrdtool.rrd 920808300:12420 920808600:12422 920808900:12423
Brzmi to: zaktualizuj naszą testową bazę danych o następujące liczby
czas 920804700, wartość 12345
czas 920805000, wartość 12357
itp.
Jak widać, możliwe jest wprowadzenie do bazy danych więcej niż jednej wartości w jednym
Komenda. Musiałem zatrzymać się na trzech, aby zapewnić czytelność, ale prawdziwym maksimum na linię jest system operacyjny
zależny.
Możemy teraz pobrać dane z naszej bazy danych za pomocą „rrdtool fetch”:
rrdtool fetch test.rrd ŚREDNIA --start 920804400 --end 920809200
Powinien zwrócić następujące dane wyjściowe:
prędkość
920804700: nan
920805000: 4.0000000000e-02
920805300: 2.0000000000e-02
920805600: 0.0000000000e+00
920805900: 0.0000000000e+00
920806200: 3.3333333333e-02
920806500: 3.3333333333e-02
920806800: 3.3333333333e-02
920807100: 2.0000000000e-02
920807400: 2.0000000000e-02
920807700: 2.0000000000e-02
920808000: 1.3333333333e-02
920808300: 1.6666666667e-02
920808600: 6.6666666667e-03
920808900: 3.3333333333e-03
920809200: nan
920809500: nan
Pamiętaj, że możesz otrzymać więcej wierszy, niż się spodziewasz. Powodem tego jest to, że o to prosisz
zakres czasu kończący się na 920809200. Liczba zapisana za 920809200: w polu
powyższa lista obejmuje zakres czasu od 920808900 do 920809200, Z WYŁĄCZENIEM 920809200. Stąd
dla pewności otrzymasz wpis od 920809200 do 920809500, ponieważ jest on
ZAWIERA 920809200. Możesz także zobaczyć „NaN” zamiast „nan”. Zależy to od systemu operacyjnego. „NaN”
oznacza „To nie jest liczba”. Jeśli Twój system operacyjny pisze „U” lub „UNKN” lub coś podobnego
Dobra. Jeśli coś innego jest nie tak, prawdopodobnie będzie to spowodowane popełnionym błędem (zakładając, że
że mój tutorial jest oczywiście poprawny :-). W takim przypadku: usuń bazę danych i spróbuj
ponownie.
Znaczenie powyższego wyniku stanie się jasne poniżej.
Czas do Stwórz kilka grafika
Wypróbuj następujące polecenie:
rrdtool graph speed.png
--początek 920804400 --koniec 920808000
DEF:myspeed=test.rrd:speed:ŚREDNIA
LINIA 2:myspeed#FF0000
Spowoduje to utworzenie pliku speed.png, który zaczyna się o 12:00 i kończy o 13:00. Istnieje definicja
zmiennej o nazwie myspeed, wykorzystując dane z RRA „speed” z bazy danych „test.rrd”.
Narysowana linia ma wysokość 2 pikseli i przedstawia zmienną myspeed. Kolor jest czerwony
(określony przez reprezentację rgb, patrz poniżej).
Zauważysz, że początek wykresu nie jest o godzinie 12:00, ale o godzinie 12:05. To dlatego, że
nie mamy wystarczających danych, aby określić średnią przed tym czasem. Stanie się to tylko wtedy, gdy
przegapisz kilka próbek, miejmy nadzieję, że nie będzie to zdarzać się często.
Jeśli to zadziałało: gratulacje! Jeśli nie, sprawdź, co poszło nie tak.
Kolory składają się z czerwieni, zieleni i błękitu. Dla każdego z komponentów określasz
ile użyć w formacie szesnastkowym, gdzie 00 oznacza brak, a FF oznacza pełne uwzględnienie.
„Kolor” biały to mieszanka czerwieni, zieleni i błękitu: FFFFFF „Kolor” czarny jest wszystkim
kolory wyłączone: 000000
czerwony #FF0000
zielony #00FF00
niebieski #0000FF
magenta #FF00FF (pomieszany czerwony z niebieskim)
szary #555555 (jedna trzecia wszystkich komponentów)
Dodatkowo możesz (za pomocą najnowszego narzędzia RRDtool) dodać kanał alfa (przezroczystość). The
domyślnie będzie to „FF”, co oznacza nieprzezroczysty.
Utworzony właśnie plik PNG można wyświetlić za pomocą ulubionej przeglądarki obrazów. Przeglądarki internetowe
wyświetli PNG poprzez adres URL „file:///the/path/to/speed.png”
Grafika w kilka matematyka
Patrząc na obraz, można zauważyć, że oś pozioma jest oznaczona jako 12:10, 12:20,
12:30, 12:40 i 12:50. Czasami etykieta nie pasuje (prawdopodobnie będą to godziny 12:00 i 13:00
kandydatów), więc są one pomijane.
Oś pionowa wyświetla wprowadzony przez nas zakres. Podaliśmy kilometry i po podzieleniu
po 300 sekundach otrzymujemy bardzo małe liczby. Mówiąc dokładniej, pierwsza wartość wynosiła 12
(12357-12345) i podzielone przez 300 daje 0.04, które RRDtool wyświetla jako „40 m”
co oznacza „40/1000”. „M” (milli) nie ma nic wspólnego z metrami (również m), kilometrami lub
milimetry! RRDtool nie zna fizycznych jednostek naszych danych, po prostu z nimi współpracuje
liczby bezwymiarowe.
Gdybyśmy zmierzyli nasze odległości w metrach, byłoby to (12357000-12345000)/300 =
12000 / 300 = 40.
Ponieważ większość ludzi lepiej wyczuwa liczby w tym zakresie, poprawimy to. Moglibyśmy
odtworzyć naszą bazę danych i przechowywać prawidłowe dane, ale jest lepszy sposób: robimy to
obliczenia podczas tworzenia pliku png!
wykres rrdtool speed2.png
--początek 920804400 --koniec 920808000
--etykieta pionowa m/s
DEF:myspeed=test.rrd:speed:ŚREDNIA
CDEF:rzeczywistaprędkość=mojaprędkość,1000,\*
LINIA 2: prędkość rzeczywista#FF0000
Uwaga: muszę uciec przed operatorem mnożenia * za pomocą ukośnika odwrotnego. Jeśli tego nie zrobię,
system operacyjny może go zinterpretować i wykorzystać do rozwijania nazw plików. Można też umieścić
wiersz w cudzysłowie w następujący sposób:
"CDEF:rzeczywistaprędkość=mojaprędkość,1000,*"
Sprowadza się to do: to RRDtool powinien zobaczyć *, a nie twoją powłokę. I to jest twoja skorupa
interpretowanie \, a nie RRDtool. Jeśli tak się stanie, może być konieczne odpowiednie dostosowanie przykładów
używać systemu operacyjnego lub powłoki, która zachowuje się inaczej.
Po obejrzeniu tego pliku PNG zauważyłeś, że „m” (milli) zniknęło. To jest to, co
byłby prawidłowy wynik. Do obrazu dodano także etykietę. Oprócz rzeczy
wspomniane powyżej, plik PNG powinien wyglądać tak samo.
Obliczenia podano w części CDEF powyżej i przeprowadzono w odwrotnej notacji polskiej
(„RPN”). To, o co poprosiliśmy RRDtool, to: „weź źródło danych myspeed i numer
1000; pomnóż je”. Nie zajmuj się jeszcze RPN, zostanie to wyjaśnione później w dalszej części
Szczegół. Możesz także przeczytać mój tutorial na temat CDEF i tutorial Steve'a Radera na temat RPN.
Ale najpierw zakończ ten samouczek.
Wytrzymać! Jeśli możemy pomnożyć wartości przez 1000, powinno być również możliwe ich wyświetlenie
kilometrów na godzinę z tych samych danych!
Aby zmienić wartość mierzoną w metrach na sekundę:
Oblicz metry na godzinę: wartość * 3600
Oblicz kilometry na godzinę: wartość / 1000
Razem daje to: wartość * (3600/1000) lub wartość * 3.6
W naszej przykładowej bazie danych popełniliśmy błąd i musimy to zrekompensować
mnożąc przez 1000. Stosowanie tej poprawki:
wartość * 3.6 * 1000 == wartość * 3600
Teraz utwórzmy ten plik PNG i dodajmy więcej magii...
wykres rrdtool speed3.png
--początek 920804400 --koniec 920808000
--etykieta pionowa km/h
DEF:myspeed=test.rrd:speed:ŚREDNIA
"CDEF:kmh=mojaprędkość,3600,*"
CDEF:szybko=kmh,100,GT,kmh,0,JEŻELI
CDEF:dobry=kmh,100,GT,0,kmh,IF
HRULE:100#0000FF:"Maksymalna dozwolona"
AREA:good#00FF00:"Dobra prędkość"
AREA:szybki#FF0000:"Za szybko"
Uwaga: tutaj używamy innego sposobu na ucieczkę od operatora *, umieszczając cały ciąg znaków
podwójne cudzysłowy.
Ten wykres wygląda dużo lepiej. Prędkość jest pokazywana w km/h, jest nawet dodatkowa linia
maksymalna dozwolona prędkość (na drodze, którą jeżdżę). Zmieniłem też dotychczasową kolorystykę
prędkość wyświetlania i zmienił ją z linii na obszar.
Obliczenia są teraz bardziej złożone. Do pomiarów prędkości w granicach dopuszczalnej prędkości służą:
należą:
Sprawdź, czy kmh jest większe niż 100 (kmh,100) GT
Jeśli tak, zwróć 0, w przeciwnym razie kmh ((( kmh,100 ) GT ), 0, kmh) JEŚLI
Dla wartości przekraczających dopuszczalną prędkość:
Sprawdź, czy kmh jest większe niż 100 (kmh,100) GT
Jeśli tak, zwróć kmh, w przeciwnym razie zwróć 0 ((( kmh,100) GT ), kmh, 0) JEŚLI
Grafika magia
Lubię wierzyć, że nie ma praktycznie żadnych ograniczeń co do tego, jak wykres RRDtool może manipulować danymi.
Nie będę wyjaśniał, jak to działa, ale spójrz na następujący plik PNG:
wykres rrdtool speed4.png
--początek 920804400 --koniec 920808000
--etykieta pionowa km/h
DEF:myspeed=test.rrd:speed:ŚREDNIA
CDEF:nonans=mojaprędkość,UN,0,mojaprędkość,JEŻELI
CDEF:kmh=nonans,3600,*
CDEF:szybko=km/h,100,GT,100,0,JEŻELI
CDEF:over=kmh,100,GT,kmh,100,-,0,IF
CDEF:dobry=kmh,100,GT,0,kmh,IF
HRULE:100#0000FF:"Maksymalna dozwolona"
AREA:good#00FF00:"Dobra prędkość"
AREA:szybko#550000:"Za szybko"
STACK:over#FF0000:"Nadmierna prędkość"
Pamiętasz notatkę na początku? Musiałem usunąć nieznane dane z tego przykładu. The
CDEF „nonans” jest nowy, a szósta linia (która była wcześniej piątą) była kiedyś czytana
'CDEF:kmh=mojaprędkość,3600,*'
Stwórzmy szybką i brudną stronę HTML, aby wyświetlić trzy pliki PNG:
Prędkość
Nadaj plikowi nazwę „speed.html” lub podobną i obejrzyj go w przeglądarce internetowej.
Teraz wystarczy regularnie mierzyć wartości i aktualizować bazę danych. Kiedy ty
chcesz wyświetlić dane, odtwórz pliki PNG i pamiętaj o odświeżeniu ich w przeglądarce.
(Uwaga: samo kliknięcie przycisku „Załaduj ponownie” może nie wystarczyć, zwłaszcza gdy w grę wchodzą serwery proxy. Spróbuj
shift-reload lub ctrl-F5).
Nowości in Rzeczywistość
Korzystaliśmy już z polecenia „update”: pobierało ono jeden lub więcej parametrów w postaci
" : „. Z przyjemnością dowiesz się, że możesz określić aktualny czas, wypełniając
w „N” jako czas. Możesz też użyć funkcji „time” w Perlu (najkrótszy przykład
w tym samouczku):
perl -e 'czas wydruku, "\n" '
Sposób uruchamiania programu w regularnych odstępach czasu zależy od systemu operacyjnego. Ale oto przykład w pseudo
kod:
- Pobierz wartość i umieść ją w zmiennej „$speed”
- aktualizacja narzędzia rrdtool speed.rrd N:$speed
(nie próbuj tego z naszą testową bazą danych, użyjemy tego w dalszych przykładach)
To wszystko. Uruchamiaj powyższy skrypt co pięć minut. Kiedy musisz wiedzieć, co
wykresy, uruchom powyższe przykłady. Można je również umieścić w skrypcie. Po
uruchamiając ten skrypt, wyświetl stronę Index.html, którą utworzyliśmy powyżej.
Trochę słowa on SNMP
Wyobrażam sobie bardzo niewiele osób, które co pięć lat będą w stanie uzyskać prawdziwe dane ze swojego samochodu
minuty. Wszyscy pozostali będą musieli zadowolić się innym rodzajem licznika. Mógłbyś
zmierzyć liczbę stron wydrukowanych przez drukarkę, na przykład filiżanek kawy przygotowanej przez
ekspres do kawy, urządzenie, które liczy zużytą energię elektryczną, cokolwiek. Dowolne zwiększanie
Licznik można monitorować i przedstawiać na wykresach, korzystając z wiedzy, której nauczyłeś się do tej pory. Później to zrobimy
także możliwość monitorowania innych typów wartości, takich jak temperatura.
Wiele osób zainteresowanych RRDtool będzie korzystać z licznika śledzącego oktety (bajty)
przesyłane przez urządzenie sieciowe. Więc zróbmy to dalej. Zaczniemy od A
opis sposobu gromadzenia danych.
Niektórzy zauważą, że istnieją narzędzia, za pomocą których można gromadzić takie dane
Ty. Oni mają rację! Uważam jednak, że ważne jest, abyś zrozumiał, że tak nie jest
niezbędny. Kiedy musisz ustalić, dlaczego coś poszło nie tak, musisz wiedzieć, jak to się stało
praca.
Jedno z narzędzi użytych w przykładzie zostało omówione bardzo krótko na początku
dokumentu, nazywa się to SNMP. Jest to sposób komunikowania się ze sprzętem podłączonym do sieci. Narzędzie, którego używam
poniżej nazywa się „snmpget” i działa tak:
snmpget OID hasła urządzenia
or
snmpget -v[wersja] -c[hasło] OID urządzenia
Zamiast urządzenia podajesz nazwę lub adres IP swojego urządzenia. Dla hasła ty
użyj „ciągu odczytu społeczności”, jak nazywa się to w świecie SNMP. W przypadku niektórych urządzeń
domyślne ustawienie „publiczny” może działać, jednakże można to wyłączyć, zmienić lub zabezpieczyć
względy prywatności i bezpieczeństwa. Przeczytaj dokumentację dołączoną do urządzenia lub
program.
Następnie jest ten parametr, zwany OID, co oznacza „identyfikator obiektu”.
Kiedy zaczynasz uczyć się o SNMP, wydaje się to bardzo zagmatwane. To wcale nie jest takie trudne
patrząc na Bazę Informacji Zarządczych („MIB”). Jest to drzewo odwrócone do góry nogami
opisuje dane, z pojedynczym węzłem jako korzeniem i stamtąd wieloma gałęziami. Te
gałęzie trafiają do innego węzła, rozgałęziają się itp. Wszystkie gałęzie mają nazwę i
tworzą ścieżkę, którą podążamy aż do samego końca. Gałęzie, którymi podążamy to
o nazwach: iso, org, dod, internet, mgmt i mib-2. Nazwy te można również zapisać jako
liczby i są 1 3 6 1 2 1.
iso.org.dod.internet.mgmt.mib-2 (1.3.6.1.2.1)
Istnieje wiele nieporozumień związanych z kropką wiodącą używaną w niektórych programach. Nie ma*
kropka wiodąca w OID. Jednakże niektóre programy mogą wykorzystywać powyższą część identyfikatorów OID jako plik
domyślny. Aby wskazać różnicę między skróconymi identyfikatorami OID a pełnymi identyfikatorami OID, potrzebują:
kropka wiodąca po określeniu pełnego OID. Często te programy pomijają
część domyślna przy zwracaniu danych. Co gorsza, jest ich kilka
domyślne prefiksy...
OK, przejdźmy do początku naszego OID: mieliśmy 1.3.6.1.2.1. Stamtąd jesteśmy
szczególnie zainteresowany gałęzią „interfejsy”, która ma numer 2 (np. 1.3.6.1.2.1.2
lub 1.3.6.1.2.1.interfejsy).
Najpierw musimy zdobyć jakiś program SNMP. Najpierw sprawdź, czy istnieje wstępnie skompilowany pakiet
dostępne dla Twojego systemu operacyjnego. Jest to preferowany sposób. Jeśli nie, będziesz musiał zdobyć
źródła i skompiluj je. Internet jest pełen źródeł, programów itp. Znajdź
informacje za pomocą wyszukiwarki lub jakkolwiek wolisz.
Załóżmy, że masz program. Najpierw spróbuj zebrać dane, które są dostępne w większości
systemy. Pamiętaj: część drzewa, która nas najbardziej interesuje, ma krótką nazwę
w świecie, w którym żyjemy!
Podam przykład, który można zastosować na Fedorze Core 3. Jeśli to nie zadziała,
przejrzyj podręcznik snmp i dostosuj przykład, aby działał.
snmpget -v2c -c publiczny mójrouter system.sysDescr.0
Urządzenie powinno odpowiedzieć opisem samego siebie, być może pustym. Dopóki nie dostałeś
prawidłowa odpowiedź z urządzenia, być może przy użyciu innego „hasła” lub innego urządzenia,
nie ma sensu tego kontynuować.
snmpget -v2c -c publiczne interfejsy mojego routera.ifNumber.0
Mamy nadzieję, że w rezultacie otrzymasz liczbę, liczbę interfejsów. Jeśli tak, możesz kontynuować
i wypróbuj inny program o nazwie „snmpwalk”.
snmpwalk -v2c -c publiczne interfejsy mojego routera.ifTable.ifEntry.ifDescr
Jeśli powróci z listą interfejsów, już prawie jesteś na miejscu. Oto przykład:
[użytkownik@host /home/alex]$ snmpwalk -v2c -c public cisco 2.2.1.2
interfejsy.ifTable.ifEntry.ifDescr.1 = "BRI0: Kanał B 1"
interfejsy.ifTable.ifEntry.ifDescr.2 = "BRI0: Kanał B 2"
interfejsy.ifTable.ifEntry.ifDescr.3 = "BRI0" Szesnastkowo: 42 52 49 30
interfejsy.ifTable.ifEntry.ifDescr.4 = "Ethernet0"
interfejsy.ifTable.ifEntry.ifDescr.5 = "Pętla zwrotna0"
Na tym sprzęcie Cisco chciałbym monitorować interfejs „Ethernet0” i z poziomu
powyżej wyniku widzę, że jest to numer cztery. Próbuję:
[użytkownik@host /home/alex]$ snmpget -v2c -c public cisco 2.2.1.10.4 2.2.1.16.4
interfejsy.ifTable.ifEntry.ifInOctets.4 = 2290729126
interfejsy.ifTable.ifEntry.ifOutOctets.4 = 1256486519
Więc teraz mam dwa OID do monitorowania i są to (tym razem w całości):
1.3.6.1.2.1.2.2.1.10
i
1.3.6.1.2.1.2.2.1.16
oba z numerem interfejsu 4.
Nie dajcie się zwieść, to nie była moja pierwsza próba. Mi też zajęło trochę czasu zrozumienie
co oznaczają te wszystkie liczby. Bardzo pomaga, gdy zostaną przetłumaczone na opis
tekst... Przynajmniej gdy ludzie mówią o MIB-ach i OID-ach, wiesz, o co chodzi
o. Nie zapomnij numeru interfejsu (0, jeśli nie jest on zależny od interfejsu) i spróbuj
snmpwalk, jeśli nie otrzymasz odpowiedzi od snmpget.
Jeśli rozumiesz powyższą sekcję i otrzymujesz numery ze swojego urządzenia, kontynuuj
ten poradnik. Jeśli nie, wróć i ponownie przeczytaj tę część.
A Real Świat Przykład
Niech zabawa się zacznie. Najpierw utwórz nową bazę danych. Zawiera dane z dwóch liczników,
zwane wejściem i wyjściem. Dane są umieszczane w archiwach, które je uśredniają. Biorą 1, 6, 24
lub 288 próbek jednocześnie. Przechodzą także do archiwów, w których przechowywane są maksymalne liczby. Ten
zostanie wyjaśnione później. Czas pomiędzy próbkami wynosi 300 sekund, co jest dobrym początkiem
punkt, co równa się pięciu minutom.
1 próbka „uśredniona” pozostaje 1 okres 5 minut
Uśrednienie 6 próbek staje się jedną średnią po 30 minutach
Uśrednione 24 próbki stają się jedną średnią po 2 godzinach
Uśrednione 288 próbek staje się jedną średnią w ciągu 1 dnia
Spróbujmy być kompatybilni z MRTG, który przechowuje następującą ilość danych:
600 próbek 5-minutowych: 2 dni i 2 godziny
600 próbek 30-minutowych: 12.5 dnia
600 próbek 2-godzinnych: 50 dni
732 próbki 1-dniowe: 732 dni
Zakresy te są dodawane, tak więc całkowita ilość danych przechowywanych w bazie danych wynosi
około 797 dni. RRDtool przechowuje dane inaczej, nie uruchamia „cotygodniowego”
archiwum, w którym zatrzymało się „codzienne” archiwum. Dla obu archiwów będą to dane najnowsze
prawie „teraz”, dlatego będziemy musieli przechowywać więcej danych niż MRTG!
Będziemy potrzebować:
600 próbek po 5 minut (2 dni i 2 godziny)
700 próbek po 30 minut (2 dni i 2 godziny plus 12.5 dnia)
775 próbek po 2 godziny (powyżej + 50 dni)
797 próbek z 1 dnia (powyżej + 732 dni, zaokrąglone w górę do 797)
rrdtool tworzy myrouter.rrd
DS:wejście:LICZNIK:600:U:U
DS:wyjście:LICZNIK:600:U:U
RRA:ŚREDNIA:0.5:1:600
RRA:ŚREDNIA:0.5:6:700
RRA:ŚREDNIA:0.5:24:775
RRA:ŚREDNIA:0.5:288:797
RRA:MAX:0.5:1:600
RRA:MAX:0.5:6:700
RRA:MAX:0.5:24:775
RRA:MAX:0.5:288:797
Następną rzeczą do zrobienia jest zebranie danych i ich przechowywanie. Oto przykład. To jest napisane
częściowo w pseudo kodzie, będziesz musiał dowiedzieć się, co dokładnie zrobić w swoim systemie operacyjnym
działa.
choć nie koniec wszechświata
do
uzyskać wynik
społeczność routerów snmpget 2.2.1.10.4
do zmiennej $in
uzyskać wynik
społeczność routerów snmpget 2.2.1.16.4
do zmiennej $out
rrdtool aktualizacja myrouter.rrd N:$in:$out
poczekaj 5 minut
zrobić
Następnie, po jednodniowym zbieraniu danych, spróbuj utworzyć obraz za pomocą:
wykres rrdtool myrouter-day.png --start -86400
DEF:inoctets=myrouter.rrd:input:ŚREDNIA
DEF:outoctets=mójrouter.rrd:wyjście:ŚREDNIA
AREA:inoctets#00FF00:"W korku"
LINE1:outoctets#0000FF:"Ruch wyjściowy"
Powinno to dać obraz ruchu trwającego jeden dzień. Jeden dzień to 24 godziny po 60
minuty po 60 sekund: 24*60*60=86400, zaczynamy od teraz minus 86400 sekund. Definiujemy
(z DEF) inoctets i outoctets jako średnie wartości z bazy danych myrouter.rrd
i narysuj obszar dla ruchu „wlotowego” i linię dla ruchu „wyjściowego”.
Obejrzyj obraz i zapisuj dane jeszcze przez kilka dni. Jeśli chcesz, możesz spróbować
przykłady z testowej bazy danych i zobacz, czy możesz uzyskać różne opcje i obliczenia
praca.
Sugestia: Wyświetlanie w bajtach na sekundę i bitach na sekundę. Utwórz grafikę Ethernet
zmienia kolor na czerwony, jeśli przekraczają cztery megabity na sekundę.
Konsolidacja Funkcje
Kilka akapitów wstecz wspomniałem o możliwości zachowania wartości maksymalnych zamiast
wartości średnie. Zagłębmy się w to nieco bardziej.
Przypomnij sobie wszystko o prędkości samochodu. Załóżmy, że jechaliśmy z prędkością 144 km/h przez 5 minut
minut, a następnie zostali zatrzymani przez policję na 25 minut. Na koniec wykładu my
wziąłby nasz laptop i utworzyłby i przejrzał obraz pobrany z bazy danych. Jeśli spojrzymy
przy drugim RRA, który stworzyliśmy, otrzymalibyśmy średnią z 6 próbek. Przykłady
zmierzone wyniesie 144+0+0+0+0+0=144 podzielone przez 30 minut, skorygowane o błąd
1000 przeliczone na km/h daje wynik 24 km/h. Nadal dostałbym bilet, ale nie
za przekroczenie prędkości :)
Oczywiście w tym przypadku nie powinniśmy patrzeć na średnie. W niektórych przypadkach są przydatne.
Jeśli chcesz wiedzieć, ile przejechałeś km, uśredniony obraz będzie właściwy
jeden do obejrzenia. Z drugiej strony, jeśli chodzi o prędkość, z jaką jechaliśmy, liczby maksymalne
widziałem, jest o wiele bardziej interesujące. Później zobaczymy więcej typów.
To samo dotyczy danych. Jeśli chcesz poznać kwotę, spójrz na średnie. Jeśli chcesz
aby poznać stawkę, spójrz na maksimum. Z biegiem czasu będą coraz bardziej się od siebie oddalać. W
w ostatniej bazie danych, którą stworzyliśmy, istnieją dwa archiwa, w których przechowywane są dane dziennie. The
archiwum przechowujące średnie będzie pokazywać niskie liczby, archiwum pokazujące wartości maksymalne będzie miało
wyższe liczby.
W przypadku mojego samochodu oznaczałoby to średnią dzienną prędkość 96/24=4 km/h (ponieważ jeżdżę około 94
kilometrów dziennie) w dni robocze i maksymalnie 120 km/h (moja maksymalna prędkość, jaką osiągam
docierać codziennie).
Duża różnica. Nie patrz na drugi wykres, aby oszacować odległości, które pokonuję
i nie patrz na pierwszy wykres, żeby oszacować moją prędkość. To zadziała, jeśli próbki są
blisko siebie, tak jak za pięć minut, ale nie w przypadku średniej.
W niektóre dni wybieram się na długą przejażdżkę. Jeśli pojadę przez Europę i będę podróżować przez 12 godzin,
pierwszy wykres wzrośnie do około 60 km/h. Drugi pokaże 180 km/h. To znaczy że
Przejechałem dystans 60 km/h razy 24 h = 1440 km. Zrobiłem to z większą prędkością i
maksymalnie około 180 km/h. Nie oznacza to jednak chyba, że podróżowałem 8 godzin
przy stałej prędkości 180 km/h!
To jest prawdziwy przykład: płynąć z prądem przez Niemcy (szybko!) i zatrzymać się kilka razy
gaz i kawę. Jedź powoli przez Austrię i Holandię. Bądź ostrożny w
góry i wioski. Gdybyś spojrzał na wykresy utworzone z pięciu minut
średnich, uzyskasz zupełnie inny obraz. Te same wartości zobaczysz na
wykresy średniej i maksymalnej (pod warunkiem, że mierzyłem co 300 sekund). Byłbyś w stanie
zobaczyć, kiedy się zatrzymałem, kiedy byłem na najwyższym biegu, kiedy jechałem szybkimi autostradami itp
szczegółowość danych jest znacznie większa, dzięki czemu można zobaczyć więcej. Jednak to wymaga 12
próbek na godzinę, czyli 288 wartości dziennie, więc byłoby dużo danych w dłuższym okresie
czasu. Dlatego uśredniamy to, ostatecznie do jednej wartości dziennie. Z tej jednej wartości my
oczywiście nie widać zbyt wielu szczegółów.
Upewnij się, że rozumiesz kilka ostatnich akapitów. Nie ma żadnej wartości tylko w linii i a
kilku osi, trzeba wiedzieć, co one oznaczają i odpowiednio interpretować dane.
Dotyczy to wszystkich danych.
Największym błędem, jaki możesz popełnić, jest wykorzystanie zebranych danych do czegoś, czym nie są
nadaje się do. Byłoby lepiej, gdybyś w ogóle nie miał wykresu.
Poznajmy się co ty już dziś powinien wiedzieć
Wiesz jak stworzyć bazę danych i potrafisz umieszczać w niej dane. Można wyciągnąć numery
ponownie, tworząc obraz, wykonaj obliczenia na danych z bazy danych i wyświetl wynik
zamiast surowych danych. Wiesz o różnicy między średnimi a maksymalnymi, i
kiedy użyć którego (a przynajmniej powinieneś mieć pomysł).
RRDtool może zrobić więcej, niż nauczyliśmy się do tej pory. Zanim przejdziesz do reszty
tego dokumentu, zalecam przeczytanie go ponownie od początku i wypróbowanie pewnych modyfikacji w pliku
przykłady. Upewnij się, że wszystko w pełni rozumiesz. To będzie warte wysiłku i pomoże
nie tylko w pozostałej części tego samouczka, ale także w codziennym, długim monitorowaniu
po przeczytaniu tego wprowadzenia.
Dane Źródło rodzaje
W porządku, chcesz kontynuować. Witamy ponownie i przygotuj się na zwiększoną prędkość w
przykłady i wyjaśnienia.
Wiesz, że aby wyświetlić licznik w czasie, musisz wziąć dwie liczby i
podziel różnicę między nimi pomiędzy czasem, który upłynął. Ma to sens w przypadku przykładów
Dałem ci, ale są inne możliwości. Na przykład jestem w stanie odzyskać plik
temperaturę z mojego routera w trzech miejscach mianowicie na wlocie, tzw. hot-spocie i
wydech. Wartości te nie są licznikami. Jeśli wezmę różnicę między dwiema próbkami
i podzielić to przez 300 sekund, prosiłbym o zmianę temperatury na sekundę.
Mam nadzieję, że to zero! Jeśli nie to prawdopodobnie pali się sala komputerowa :)
Więc co możemy zrobić? Możemy powiedzieć RRDtoolowi, aby przechowywał mierzone przez nas wartości bezpośrednio w ich postaci
są (nie jest to do końca prawdą, ale wystarczająco blisko). Wykresy, które stworzymy, będą wyglądać dużo
lepiej, będą pokazywały raczej stałą wartość. Wiem, kiedy router jest zajęty (działa
-> zużywa więcej prądu -> wytwarza więcej ciepła -> temperatura wzrasta). Ja wiem
gdy drzwi pozostają otwarte (pokój jest klimatyzowany) -> ciepłe powietrze z zacisza
budynku wpływa do pomieszczenia komputerowego -> wzrasta temperatura na wlocie). Itp
typem danych, którego używamy podczas tworzenia bazy danych, był licznik, teraz mamy inny
typ danych, a tym samym inną jego nazwę. Nazywa się to MIERNIK. Takich danych jest więcej
typy:
- LICZNIK, ten już znamy
- GAUGE, właśnie się tego nauczyliśmy
- POCHODZENIE
- ABSOLUTNY
Dwa dodatkowe typy to DERIVE i ABSOLUTE. Absolutu można używać jak licznika
jedna różnica: RRDtool zakłada, że licznik jest resetowany po jego odczytaniu. To znaczy: jego delta jest
znana bez obliczeń przez RRDtool, podczas gdy RRDtool musi ją obliczyć dla licznika
typ. Przykład: nasz pierwszy przykład (12345, 12357, 12363, 12363) brzmiałby: nieznane, 12, 6,
0. Reszta obliczeń pozostaje bez zmian. Drugi, pochodny, jest jak licznik.
W przeciwieństwie do licznika, może również się zmniejszać, więc może mieć ujemną deltę. Znowu reszta
obliczenia pozostają takie same.
Wypróbujmy je wszystkie:
rrdtool utwórz all.rrd --start 978300900
DS:a:LICZNIK:600:U:U
DS:b:MIERNIK:600:U:U
DS:c:DERIVE:600:U:U
DS:d:Absolutnie:600:U:U
RRA:ŚREDNIA:0.5:1:10
rrdtool aktualizuje all.rrd
978301200:300:1:600:300
978301500:600:3:1200:600
978301800:900:5:1800:900
978302100:1200:3:2400:1200
978302400:1500:1:2400:1500
978302700:1800:2:1800:1800
978303000:2100:4:0:2100
978303300:2400:6:600:2400
978303600:2700:4:600:2700
978303900:3000:2:1200:3000
wykres rrdtool all1.png -s 978300600 -e 978304200 -h 400
DEF:linea=all.rrd:a:ŚREDNIA LINIA3:linea#FF0000:"Linia A"
DEF:lineb=all.rrd:b:ŚREDNIA LINIA3:lineb#00FF00:"Linia B"
DEF:linec=all.rrd:c:ŚREDNIA LINIA3:linec#0000FF:"Linia C"
DEF:lined=all.rrd:d:ŚREDNIA LINIA3:lined#000000:"Linia D"
Narzędzie RRD dla dotychczasowy Mikroskop
· Linia A jest typu COUNTER, więc powinna stale rosnąć, a RRDtool musi obliczyć
różnice. Ponadto RRDtool musi podzielić różnicę przez ilość czasu
wygasło. Powinno to zakończyć się linią prostą o wartości 1 (delty wynoszą 300, czas jest
300).
· Linia B jest typu GAUGE. Są to wartości „prawdziwe”, więc powinny odpowiadać temu, co wprowadziliśmy: a
coś w rodzaju fali.
· Linia C jest typu DERIVE. Powinien to być licznik, który może się zmniejszać. Robi to pomiędzy
2400 i 0, z 1800 pomiędzy.
· Linia D jest typu ABSOLUTE. To jest jak licznik, ale działa na wartościach bez
obliczenie różnicy. Liczby są takie same i jak widać (miejmy nadzieję) to
ma inny wynik.
Przekłada się to na następujące wartości, zaczynając od 23:10 i kończąc na 00:10 następnego
dzień (gdzie „u” oznacza nieznane/niewykreślone):
- Linia A: uu 1 1 1 1 1 1 1 1 1 u
- Linia B: u 1 3 5 3 1 2 4 6 4 2 u
- Linia C: uu 2 2 2 0 -2 -6 2 0 2 u
- Linia D: u 1 2 3 4 5 6 7 8 9 10 u
Jeśli Twoje PNG pokazuje to wszystko, wiesz, że wprowadziłeś dane poprawnie, RRDtool
plik wykonywalny działa poprawnie, przeglądarka Cię nie oszuka i pomyślnie weszłeś
rok 2000 :)
Możesz wypróbować ten sam przykład cztery razy, za każdym razem tylko z jedną linią.
Przeanalizujmy jeszcze raz dane:
· Linia A: 300,600,900 300 XNUMX i tak dalej. Delta licznika jest stała i wynosi XNUMX, podobnie jak czas
delta. Liczba dzielona przez siebie zawsze wynosi 1 (z wyjątkiem dzielenia przez zero, czyli
niezdefiniowany/nielegalny).
Dlaczego pierwszy punkt jest nieznany? Wiemy, co umieścimy w bazie danych,
Prawidłowy? To prawda, ale nie mieliśmy wartości, na podstawie której moglibyśmy obliczyć deltę, więc nie wiemy
gdzie zaczęliśmy. Błędem byłoby zakładać, że zaczynaliśmy od zera, więc tego nie robimy!
· Linia B: Nie ma czego obliczać. Liczby są jakie są.
· Linia C: Ponownie wartość początkowa jest nieznana. Ta sama historia ma miejsce w przypadku linii A. In
w tym przypadku delty nie są stałe, zatem linia też nie jest. Gdybyśmy umieścili
te same liczby w bazie danych, co dla linii A, otrzymalibyśmy to samo
linia. W przeciwieństwie do licznika typów, ten typ może się zmniejszać i mam nadzieję pokazać później dlaczego
to robi różnicę.
· Linia D: Tutaj urządzenie oblicza delty. Dlatego znamy pierwszą deltę i
to jest wykreślone. Mieliśmy takie same dane wejściowe, jak w przypadku linii A, ale znaczenie tego wejścia jest takie
jest inny i dlatego linia jest inna. W tym przypadku delty za każdym razem rosną
z 300. Delta czasu pozostaje na stałym poziomie 300, co oznacza dzielenie tych dwóch
daje rosnące wartości.
Przeciwdziałać Okłady
Jest jeszcze kilka podstaw do pokazania. Niektóre ważne opcje nadal wymagają omówienia i my
nie przyglądałem się jeszcze okładkom na ladę. Najpierw oklejenie licznika: W naszym samochodzie zauważamy, że
licznik pokazuje 999987. Jedziemy 20 km i licznik powinien wskazywać 1000007. Niestety
na naszym liczniku jest tylko sześć cyfr, więc tak naprawdę pokazuje 000007. Gdybyśmy to wykreślili
w przypadku typu DERIVE oznaczałoby to, że licznik został cofnięty o 999980 km. Tak nie było i
musi być przed tym jakaś ochrona. Ta ochrona jest dostępna tylko dla typu
COUNTER, który i tak powinien być używany dla tego rodzaju licznika. Jak to działa? Typ
licznik nigdy nie powinien się zmniejszać i dlatego RRDtool musi założyć, że jest zapakowany, jeśli tak się stanie
zmniejszenie! Jeśli delta jest ujemna, można to skompensować, dodając maksimum
wartość licznika + 1. Dla naszego samochodu będzie to:
Delta = 7 - 999987 = -999980 (zamiast 1000007-999987=20)
Prawdziwa delta = -999980 + 999999 + 1 = 20
W chwili pisania tego dokumentu RRDtool zna liczniki 32-bitowe lub
Rozmiar 64 bity. Liczniki te mogą obsługiwać następujące różne wartości:
- 32 bity: 0..4294967295
- 64 bity: 0..18446744073709551615
Jeśli te liczby wydają Ci się dziwne, możesz wyświetlić je w formie szesnastkowej:
- 32 bity: 0 .. FFFFFFFF
- 64 bity: 0 .. FFFFFFFFFFFFFF
RRDtool obsługuje oba liczniki w ten sam sposób. Jeśli nastąpi przepełnienie i delta będzie
ujemny, RRDtool najpierw dodaje maksimum małego licznika + 1 do delty. Jeśli delta
jest nadal ujemny, to musiał być owinięty duży licznik. Dodaj maksimum, jakie jest możliwe
wartość dużego licznika + 1 i odejmij błędnie dodaną małą wartość.
Istnieje w tym ryzyko: załóżmy, że duży licznik zawinął się podczas dodawania ogromnej delty
teoretycznie może się zdarzyć, że dodanie mniejszej wartości spowoduje, że delta będzie dodatnia.
W tym mało prawdopodobnym przypadku wyniki nie będą prawidłowe. Wzrost powinien być mniej więcej taki
wysoka jako maksymalna wartość licznika, aby tak się stało, więc są szanse, że tak się stanie
kilka innych problemów, a ten konkretny problem nie byłby nawet warty uwagi
myśląc o. Mimo to podałem przykład, więc możesz ocenić sam.
W następnej sekcji podano kilka przykładów liczbowych przeciwowinięć. Spróbuj wykonać
obliczenia samodzielnie lub po prostu uwierz mi, jeśli Twój kalkulator nie radzi sobie z liczbami :)
Numery poprawek:
- 32 bity: (4294967295 + 1) = 4294967296
- 64 bity: (18446744073709551615 + 1)
- korekta 1 = 18446744069414584320
Przed: 4294967200
Wzrost: 100
Powinno być: 4294967300
Ale tak naprawdę jest: 4
Delta: -4294967196
Korekta 1: -4294967196 + 4294967296 = 100
Przed: 18446744073709551000
Wzrost: 800
Powinno być: 18446744073709551800
Ale tak naprawdę jest: 184
Delta: -18446744073709550816
Korekta 1: -18446744073709550816
+ 4294967296 = -18446744069414583520
Korekta 2: -18446744069414583520
+ 18446744069414584320 = 800
Przed: 18446744073709551615 (wartość maksymalna)
Zwiększenie: 18446744069414584320 (absurdalny wzrost, minimum dla
Powinno stać się: 36893488143124135935 ten przykład zadziała)
Ale tak naprawdę jest: 18446744069414584319
Delta: -4294967296
Korekta 1: -4294967296 + 4294967296 = 0
(nie negatywny -> brak korekty2)
Przed: 18446744073709551615 (wartość maksymalna)
Wzrost: 18446744069414584319 (o jeden wzrost mniej)
Powinno być: 36893488143124135934
Ale tak naprawdę jest: 18446744069414584318
Delta: -4294967297
Korekta 1: -4294967297 + 4294967296 = -1
Korekta 2: -1 + 18446744069414584320 = 18446744069414584319
Jak widać z dwóch ostatnich przykładów, potrzebne są dziwne liczby, aby RRDtool zawiódł
(oczywiście pod warunkiem, że jest wolny od błędów), więc nie powinno się to zdarzyć. Jednak SNMP lub cokolwiek innego
wybrana metoda gromadzenia danych, może również czasami zgłaszać błędne liczby. My
Nie da się zapobiec wszystkim błędom, ale jest kilka rzeczy, które możemy zrobić. RRDtool „twórz”
polecenie przyjmuje w tym celu dwa specjalne parametry. Określają dopuszczalne minimum i maksimum
wartości. Do tej pory używaliśmy „U”, co oznacza „nieznany”. Jeśli podasz wartości dla jednego lub obu
z nich i jeśli RRDtool odbierze punkty danych wykraczające poza te limity, zignoruje je
te wartości. Dla termometru w stopniach Celsjusza absolutne minimum jest tuż poniżej
-273. W przypadku mojego routera mogę założyć, że to minimum jest znacznie wyższe, więc ustawiłbym je na 10,
gdzie jako maksymalną temperaturę ustawiłbym na 80. Każda wyższa i urządzenie byłoby wyłączone
porządku.
Biorąc pod uwagę prędkość mojego samochodu, nigdy nie spodziewałbym się liczb ujemnych i też bym się nie spodziewał
prędkość wyższa niż 230. Wszystko inne i musiał być błąd. Zapamiętaj
jest odwrotnie, jeśli liczby przejdą pomyślnie tę kontrolę, nie oznacza to, że tak jest
prawidłowy. Zawsze oceniaj wykres ze zdrową dozą podejrzeń, jeśli wydaje ci się dziwny.
Dane Ponowne próbkowanie
Jedna ważna cecha RRDtool nie została jeszcze wyjaśniona: jest to praktycznie niemożliwe
zbieraj dane i wprowadzaj je do RRDtool w dokładnych odstępach czasu. Dlatego RRDtool interpoluje
danych, dzięki czemu są one przechowywane w dokładnych odstępach czasu. Jeśli nie wiesz, co to oznacza i jak
to działa, oto pomoc, której szukasz:
Załóżmy, że licznik zwiększa się o dokładnie jeden na każdą sekundę. Chcesz to zmierzyć w 300
sekundowe odstępy. Powinieneś pobrać wartości oddalone od siebie o dokładnie 300. Jednak z powodu
w różnych okolicznościach spóźnisz się o kilka sekund, a interwał wynosi 303. Delta tak
w tym przypadku również będzie 303. Oczywiście RRDtool nie powinien umieszczać 303 w bazie danych i tworzyć
wierzysz, że licznik wzrósł o 303 w ciągu 300 sekund. To tutaj RRDtool
interpoluje: zmienia wartość 303 tak, jakby była zapisana wcześniej i tak się stanie
będzie 300 w 300 sekund. Następnym razem będziesz dokładnie w odpowiednim momencie. Oznacza to, że
bieżący interwał wynosi 297 sekund, a licznik wzrósł o 297. Ponownie RRDtool
interpoluje i przechowuje 300 tak, jak powinno być.
w rzeczywistości w RRD
czas+000: 0 delta="U" czas+000: 0 delta="U"
czas+300: 300 delta=300 czas+300: 300 delta=300
czas+600: 600 delta=300 czas+603: 603 delta=303
czas+900: 900 delta=300 czas+900: 900 delta=297
Stwórzmy dwie identyczne bazy danych. Wybrałem zakres czasu od 920805000 do 920805900 jako
pasuje to bardzo dobrze do przykładowych liczb.
narzędzie rrdtool tworzy sekundy1.rrd
--rozpocznij 920804700
DS:sekundy:LICZNIK:600:U:U
RRA:ŚREDNIA:0.5:1:24
Zrób kopię
dla Uniksa: cp sekundy1.rrd sekundy2.rrd
dla Dos: skopiuj sekundy1.rrd sekundy2.rrd
dla vms: skąd mam wiedzieć :)
Wprowadź trochę danych
rrdtool aktualizacja sekund1.rrd
920805000:000 920805300:300 920805600:600 920805900:900
rrdtool aktualizacja sekund2.rrd
920805000:000 920805300:300 920805603:603 920805900:900
Utwórz dane wyjściowe
rrdtool graph sekundy1.png
--początek 920804700 --koniec 920806200
--wysokość 200
--górny limit 1.05 --dolny limit 0.95 --sztywny
DEF:sekundy=sekundy1.rrd:sekundy:ŚREDNIA
CDEF:nieznany=sekundy,UN
LINIA2:sekundy#0000FF
OBSZAR:nieznany#FF0000
rrdtool graph sekundy2.png
--początek 920804700 --koniec 920806200
--wysokość 200
--górny limit 1.05 --dolny limit 0.95 --sztywny
DEF:sekundy=sekundy2.rrd:sekundy:ŚREDNIA
CDEF:nieznany=sekundy,UN
LINIA2:sekundy#0000FF
OBSZAR:nieznany#FF0000
Obejrzyj oba obrazy razem (dodaj je do pliku Index.html) i porównaj. Obydwa wykresy
powinien pokazywać to samo, pomimo różnych danych wejściowych.
ZAKOŃCZYĆ
Nadszedł czas, aby zakończyć ten samouczek. Omówiliśmy wszystkie podstawy, abyś mógł
pracować z RRDtool i zapoznać się z dostępną dodatkową dokumentacją. Jest tego dużo więcej
dowiedzieć się o RRDtool, a znajdziesz coraz więcej zastosowań tego pakietu. Możesz
łatwo twórz wykresy, korzystając tylko z podanych przykładów i używając wyłącznie RRDtool. Możesz również
użyj jednego z dostępnych interfejsów RRDtool.
LISTA MAILINGOWA
Pamiętaj o zapisaniu się na listę mailingową RRDtool. Nawet jeśli nie odpowiadasz na maile
które się pojawią, pomoże to zarówno Tobie, jak i reszcie użytkowników. Wiele rzeczy, które znam
o MRTG (a co za tym idzie o RRDtool) dowiedziałem się czytając listę bez
zamieszczanie na nim postów. Nie musiałem zadawać podstawowych pytań, ponieważ odpowiedzi znajdują się w FAQ
(przeczytaj to!) oraz w różnych mailach od innych użytkowników. Z tysiącami użytkowników na całym świecie
świecie zawsze znajdą się ludzie zadający pytania, na które będziesz mógł odpowiedzieć, ponieważ czytasz
tę i inną dokumentację, ale tak się nie stało.
Korzystaj z rrdtutorial online, korzystając z usług onworks.net