RRDTool
RRDTool (zkratka pro round-robin database tool) je v informatice opensource nástroj, který se zaměřuje na zpracování a ukládání časově závislých dat (například teplota, zatížení procesoru, síťový provoz a další). Tato data jsou uložena v databázi typu round-robin, která má konstantní velikost v čase. RRDTool je nová generace nástroje MRTG, obsahuje také nástroje pro získání dat v grafické podobě. Zásadní rozdíl oproti MRTG je, že se v principu již nejedná o úzce zaměřený program na sběr a vykreslení dat, jehož činnost je pouze modifikována parametry na příkazové řádce, ale o komplexní programovací prostředí pro archivaci a grafování dat, kterážto činnost se zcela řídí (i velmi dlouhým) programem zadaným v parametru příkazu. Lze zde oproti MRTG daleko snadněji dosáhnout stavu kdy je vygenerován prázdný graf aniž by přitom program vypsal nějakou chybovou hlášku, což může být velmi matoucí pro neprogramátory. Dále oproti MRTG chybí SNMP modul na sběr dat ze sítě.
Vývojář | Tobi Oetiker |
---|---|
Aktuální verze | 1.7.2 (27. května 2019) |
Vyvíjeno v | C |
Typ softwaru | databáze |
Licence | GNU General Public License |
Web | http://oss.oetiker.ch/rrdtool/ |
Některá data mohou pocházet z datové položky. |
Postup k vytvoření nové databáze a grafů
- vytvoření prázdné databáze pomocí
rrdtool create
- pomocí skriptu a/nebo cronu opakovaně přidávat data do databáze pomocí
rrdtool update
- vytvořit, obvykle pomocí skriptu, jakkoliv modifikovaný graf pomocí
rrdtool graph
Funkce
Vytvoření databáze
Funkce create
vytvoří nový soubor s databází RRD. Takto vytvořená databáze je naplněna neznámými daty pro všechny vzorky.
Syntaxe k vytvoření databáze:
rrdtool create filename [--start|-b start time] [--step|-s step] [--no-overwrite] [DS:ds-name:DST:dst arguments] [RRA:CF:xff:steps:rows]
- filename je název souboru, který se nám vytvoří. Název by měl končit příponou .rrd, nástroj ale přijme jakýkoliv název souboru.
- --start|-b start time určuje čas od 1.1.1970 UTC, kdy by měla být přidána první hodnota do databáze. Hodnoty přidané před tímto datem budou ignorovány. Přednastavená hodnota je aktuální čas – 10 sekund.
- --step|-s step určuje základní časový interval po kterém budou vkládána data do databáze. Přednastavená hodnota je 300 sekund.
- --no-overwrite zajistí, že se již existující soubor se stejným názvem nepřepíše touto databází.
- DS: Jedna RRD databáze může obsahovat vstupy z vícero zdrojů dat (DS), například příchozí a odchozí provoz na síťové kartě. Můžeme tedy do jedné databáze vkládat více hodnot (proměnných). Pro každou proměnnou musíme definovat její základní parametry:
- ds-name je název, který se bude používat k odkazu na konkrétní zdroj dat. Název musí být maximálně 19 znaků dlouhý a může obsahovat pouze malá a velká písmena anglické abecedy, čísla a podtržítko (a-zA-Z0-9_).
- DST určuje typ zdroje dat. Další parametry závisí na typu zdroje dat.
- GAUGE, COUNTER, DERIVE, ABSOLUTE
- syntaxe: DS:ds-name:GAUGE | COUNTER | DERIVE | ABSOLUTE:heartbeat:min:max
- GAUGE je určen pro hodnoty jako je teplota, počet lidí v místnosti. Do databáze se zapíše ta hodnota, kterou zadáme.
- COUNTER bere rozdíl aktuální hodnoty a předchozí hodnoty. COUNTER předpokládá, že se hodnoty neustále zvyšují. Hodnota se sníží pouze, pokud čítač přeteče, o to se ale nástroj postará sám. Například počítadla síťové karty, které mohou jen stoupat.
- DERIVE je to samé co COUNTER, jen může nabývat záporných hodnot. Například odchozí provoz na síťové kartě.
- ABSOLUTE
- heartbeat je počet sekund, po kterých je hodnota určena jako neznámá. Když například vypneme počítač, do databáze se nezapíší nesmyslné hodnoty, ale neznámá hodnota.
- min a max určuje rozsah hodnot. Pokud hodnota překročí daný rozsah, zapíše se neznámá hodnota (UNKNOWN). Pokud rozsah neznáme, můžeme zadat U pro neznámou hodnotu.
- COMPUTE
- syntaxe: DS:ds-name:COMPUTE:rpn-expression
- rpn-expression definuje vzorec použitý pro výpočet hodnoty z jiných zdrojových dat ve stejné RRD databázi. Vzorec je podobný příkazu CDEF funkce graph.
- GAUGE, COUNTER, DERIVE, ABSOLUTE
- RRA (zkratka pro round-robin archive) určuje, jak se budou data ukládat. Pomocí RRA si určujeme, kolik hodnot na určený interval si databáze uchová. Můžeme tedy uchovat více hodnot pro interval jednoho měsíce, méně hodnot pak pro interval jednoho roku. V závislosti na RRA a počtu proměnných DS je určena velikost souboru.
- CF nám určuje typ konsolidační funkce použité na hodnoty.
- AVERAGE – průměr z hodnot
- MAX – maximální hodnota
- MIN – minimální hodnota
- LAST – poslední hodnota
- xff určuje, jaká část konsolidačního intervalu se může skládat z neznámých hodnot zatímco výsledná konsolidační hodnota je stále považována za známou. Hodnota xff je tudíž v rozmezí od 0 do 1.
- steps určí, kolik hodnot se použije k vytvoření konsolidované hodnoty, která se poté uloží do databáze
- rows určí, kolik řádků dat bude uloženo v databázi. Hodnota musí být větší než 0.
- CF nám určuje typ konsolidační funkce použité na hodnoty.
Příklad vytvořené databáze:
rrdtool create temperature.rrd --step 300 DS:temp:GAUGE:600:-273:5000 RRA:AVERAGE:0.5:1:1200 RRA:MIN:0.5:12:2400 RRA:MAX:0.5:12:2400 RRA:AVERAGE:0.5:12:2400
- Vytvoří soubor s názvem temperature.rrd
- Základní krok bude 300 sekund
- jediná proměnná se jmenuje temp, minimální hodnota bude -273 a maximální 5000
- sbírané hodnoty:
- 1. archiv bude sbírat každou hodnotu, těchto hodnot bude 1200. Maximální časový interval je proto 360 000 sekund (100 hodin), starší hodnoty budou smazány.
- 2. archiv bude sbírat minimální hodnotu z 12 hodnot, takovýchto hodnot bude 2400. Maximální časový interval je 8 640 000 sekund (100 dní).
- Obdobně pro zbylé archivy jen s jinou konsolidační funkcí (maximální hodnota, průměr z hodnot)
Vložení dat do databáze
Příkaz update slouží k vkládání nových dat do databáze. Data jsou v databázi automaticky přeskládána podle zadaných parametrů při vytvoření databáze.
Syntaxe:
rrdtool update filename [--template|-t ds-name[:ds-name]…] [--daemon address] [--] N|timestamp:value[:value...]
- filename je název aktualizovaného souboru
[--template|-t ds-name[:ds-name]...]
nám určí, které data budou aktualizována a v jakém pořadí. Nemusíme tudíž aktualizovat všechny hodnoty najednou.- [--daemon address] se pokusí připojit k cache daemonovi a předat hodnoty ke zpracování jemu. [1]
- N|timestamp:value[:value...] jsou čas a data vkládané do databáze. První je vždy čas dat (určené pomocí timestampu nebo hodnotou N určující aktuální čas) a poté data seřazená podle toho, v jakém pořadí jsme je definovali při vytvoření databáze, nebo podle určené šablony.
Vytvoření grafu v obrázkové podobě
Používá se k reprezentaci dat v podobě čitelné pro člověka. Hlavním cílem je vytvoření grafické podoby dat, může ale generovat i číselné zprávy.
Příkaz potřebuje k práci nějaké hodnoty, je tedy nutné připojit alespoň jednu proměnnou z RRD souboru. Hodnot může být více z vícero souborů. Syntaxe:
rrdtool graph filename [option …] [data definition …] [data calculation …] [variable definition …] [graph element …] [print element …]
- filename je název souboru, který bude vytvořen k zobrazení. Doporučené formáty jsou PNG, SVG a EPS. Výsledek můžeme rovnou poslat na výstup, v tomto případě nebude soubor vytvořen.
- Parametrů option může být více. Jejich veškerý souhrn je na stránce programu.[2]
- Základní parametry:
- časový interval:
[-s|--start time] [-e|--end time] [-S|--step seconds]
- štítky:
[-t|--title string] [-v|--vertical-label string]
- velikost:
[-w|--width pixels] [-h|--height pixels] [-j|--only-graph] [-D|--full-size-mode]
- popisky, barvy, velikost a typ písma a další
- časový interval:
- Základní parametry:
- data definition definují proměnné vyčtené přímo z RRD souborů.
- syntaxe:
'''DEF''':<''vname''>=<''rrdfile''>:<''ds-name''>:<''CF''>[:''step=<step>''][:''start=<time>''][:''end=<time>''][:''reduce=<CF>'']
- vname je název proměnné použité pro vykreslení do grafu. Maximální délka je 255 znaků a složená může bát z malých a velkých písmen anglické abecedy, čísel a podtržítka (a-zA-Z0-9_).
- rrdfile je název RRD souboru
- ds-name je název proměnné v souboru
- CF je konsolidační funkce proměnné v souboru
- step=<step> určí krok, po kterém se budou brát data
- start=<time> a end=<time> nám umožňuje vybrat časové rozpětí dat
- reduce=<CF> je použito pro zredukování vykreslovaných dat pomocí některé konsolidační funkce
- syntaxe:
- data calculation slouží k vytvoření nových proměnných pomocí příslušných operátorů
- syntaxe: CDEF:vname=RPN expression
- vname je lokální název nové proměnné
- RPN expression [3]
- logické operace
- porovnávání hodnot
- aritmetické operace
- a další operace
- syntaxe: CDEF:vname=RPN expression
- variable definition slouží k vytvoření nových proměnných pomocí příslušných operátorů
- syntaxe: VDEF:vname=RPN expression
- vname je lokální název nové proměnné
- RPN expresison [4]
- MAXIMUM, MINIMUM, AVERAGE – vrátí maximální, minimální nebo průměrnou hodnotu v rozsahu grafu
- STDEV – vrací směrodatnou odchylku hodnot
- LAST, FIRST – vrací první/poslední hodnotu v rozsahu grafu
- a další
- syntaxe: VDEF:vname=RPN expression
- graph element slouží k vykreslení grafových prvků [5]
- základní prvky:
- GPRINT:vname:format – to samé co PRINT níže, ale vykreslí data do grafu
LINE[width]:value[#color][:[legend][:STACK]][:dashes[=on_s[,off_s[,on_s,off_s]...]][:dash-offset=offset]]
- Vykreslí čáru na hodnotě value o zadané tloušťce pomocí width. Čára může být určena proměnnou nebo číslem, nemusí být tedy vždy rovná. Můžeme určit barvu.
- Pokud použijeme volitelný modifikátor STACK, je tento prvek naskládaný na předchozí LINE nebo AREA.
- volitelně se pod graf může vypsat legenda nebo můžeme čáru vykreslit čárkovaně.
- '
AREA':value[#color][:[legend][:STACK]]
- Stejné jako LINE, jen bude vykreslena i oblast mezi osou X a vrchní hodnotou.
- a další
- základní prvky:
- print element vypisuje hodnoty pod graf [6]
- syntaxe: PRINT:vname:format[:strftime]
- vname určí vypisovanou proměnnou
- format slouží k určení formátu vypisovaných dat
- strftime – pokud chceme vypsat proměnnou získanou pomocí VDEF, můžeme tímto vypsat i čas této hodnoty
- syntaxe: PRINT:vname:format[:strftime]
Další funkce
Historie verzí
Barva | Význam |
---|---|
Červená | Vydání není podporované |
Zelená | Vydání je stále podporované |
Modrá | Budoucí vydání |
Vývoj RRDTool je od verze 1.2 sponzorován. S každou novou verzí se objeví i seznam sponzorů.
Níže je historie verzí programu. Zobrazovány jsou pouze hlavní aktualizace.
Číslo verze | Datum aktualizace | Odkaz | Hlavní poznámky k vydání |
---|---|---|---|
1.0 | Červenec 16, 1999 | Plná verze poznámek, Oznámení | První vydání. V podstatě opravené MRTG. |
1.1 | Duben 25, 2005 | Plná verze poznámek, Oznámení | výstup v EPS, PDF a SVG; VDEF; percentiles; updatev; COMPUTE; změna formátu .rrd. |
1.3 | Červen 11, 2008 | Plná verze poznámek, Oznámení | bezpečnější a rychlejší přístup k souborům; anti-aliasing; TEXTALIGN; přerušované čáry; nový HWPREDICT; export do XML formátu; |
1.4 | Říjen 27, 2009 | Plná verze poznámek[nedostupný zdroj], Oznámení | Kešovací daemon; VDEF PERCENTNAN; CDEF PREDICT & PREDICTSIGMA; libDBI; pozice grafové legendy; vazba na Lua; 3D rámeček; |
1.5 | Leden 8, 2015 | Oznámení | Nové datové typy DCOUNTER a DDERIVE, výrazné zvýšení výkonu u souborů se 100 a více datasourcy. |
Reference
- více o RRD cache daemonovi
- option na stránce nástroje
- RPN výraz pro CDEF na stránce nástroje
- RPN výraz pro VDEF na stránce nástroje
- více o grafových prvcích na stránce nástroje
- více o tištěných prvcích na stránce nástroje
- dump na stránce nástroje
- fetch na stránce nástroje
- resize na stránce nástroje
- restore na stránce nástroje
Související články
Ostatní nástroje, které se dají použít stejně jako RRDTool nebo používají RRDTool jako zobrazovač grafů
Externí odkazy
- Obrázky, zvuky či videa k tématu RRDTool na Wikimedia Commons
- RRDTtool domácí stránka
- RRDTool galerie
- RRDTool návod
- LPAR2RRD
- STOR2RRD