Prechádzame na RRDTOOL (3)

11. 1. 2002
Doba čtení: 7 minut

Sdílet

Ilustrační obrázek
Autor: Depositphotos – stori
Ilustrační obrázek
V minulej časti sme si priblížili návrh a tvorbu RRD databázy, ukázali sme si ako zozbierané dáta do tejto štruktúry ukladať, dnes si priblížime, ako sa tvoria jednotlivé grafické výstupy. Aj keď na prvý pohľad bude syntax vyzerať zložito, treba si uvedomiť, že tvorba grafov oplýva mnohými možnosťami, ktoré si priblížime pre pochopenie príkladov, ktoré si ukážeme v ďalších častiach.

Oproti MRTG, kde sú parametre definované v konfiguračnom súbore, tu je nutné všetky možnosti špecifikovať pri požiadavke tvorby grafického výstupu z databázy zozbieraných dát. Na prvý pohľad sa to zdá byť trochu neprehľadné, ale ako ste videli v úvode k tomuto seriálu, nie je to o nič zložitejšie ako pri MRTG a naskytajú sa nám tu ďaleko širšie možnosti.

Hor sa teda do priblíženia jednotlivých možností, ktoré bude na prvý pohľad vyzerať trochu vyčerpávajúce, aby sme sa mohli venovať praktickým príkladom.

rrdtool graph filename [-s|--start seconds] [-e|--end seconds]
[-x|--x-grid x-axis grid and label] [-y|--y-grid y-axis grid and label]
[--alt-y-grid] [--alt-autoscale] [--alt-autoscale-max]
[--units-exponent] value]> [-v|--vertical-label text]
[-w|--width pixels] [-h|--height pixels] [-i|--interlaced]
[-f|--imginfo formatstring] [-a|--imgformat GIF| PNG] [-z|--lazy]
[-o|--logarithmic] [-u|--upper-limit value] [-l|--lower-limit value]
[-g|--no-legend] [-r|--rigid] [--step value] [-b|--base value]
[-c|--color COLORTAG#rrggbb] [-t|--title title] [DEF:vname=rrd:ds-name: CF]
[CDEF:vname=rpn-expression] [ < PRINT:vname: CF:format]
[GPRINT:vname: CF:format] [COMMENT:text] [HRULE:value#rrggbb[:legend]]
[VRULE:time#rrggbb[:legend]] [LINE{1|2|3}:vname[#rrggbb[:legend]]]
[AREA:vname[#rrggbb[:legend]]] [STACK:vname[#rrggbb[:legend]]]

filename určuje názov výstupného grafického súboru, ktorý sa má generovať. Podporovanými formátmi sú GIF a PNG, odporúča sa však formát PNG kvôli vyššej rýchlosti pri generovaní grafického výstupu a nižšej konečnej veľkosti

--start a –end určujú časový rozsah pre obdobie, za ktoré sa má výstupný graf vytvoriť. Údaje za zadávajú v počte sekúnd ubehnutých od 1.1.1970, implicitne je však určené obdobie za posledných 24 hodín v databáze. Časové údaje je možné definovať aj symbolicky, ako napríklad now-1d pre zjednodušenie.

x|--x-grid x-axis grid and label je vo väčšine prípadov automaticky spracovaná a nevyžaduje dodatočné nastavenie. Ak gridu na osi x nepotrebujeme vôbec, je možné parametrom none jej generovanie úplne potlačiť. Jej špecifickú definíciu je však možné vykonať formátom GTM: GST: MTM: MST: LTM: LST: LPR: LFM, čím vlastne definujeme intervaly medzi jednotlivými segmentami grid. Takže napríklad pri definícii MINUTE:10:HOUR:1:HO­UR:1:0:%X dosiahneme grid čiaru na každých 10 minútach, hlavnú každú celú hodinu s popismi hodnôt na každej celej hodine, pre ktorých popis sa použije definícia osi x. Na prvý pohľad zložité, no po krátkom príklade je to viac ako jasné.

y|--y-grid grid step:label factor nastavuje grid čiary pre os y. Vo väčšine prípadov je zasa automaticky konfigurovaná priamo RRDTOOLom, ale pri špecifických zobrazeniach je možné buď ich potlačiť hodnotou none, alebo definovať hodnotu reprezentujúcu ich rozstup.

--alt-y-grid Alternatívne rozdelenie grid siete pre os y dosiahneme použitím tohto parametra, ktorý má za následok dynamické rozdelenie grid siete pre os y na základe zobrazovaných hodnôt.

--alt-autoscale poslúži pre alternatívne škálovanie hodnôt osi y kde sú odchýlky hodnôt v časovom rade rádovo minimálne na úrovní desatín a menej avšak podstatné.

--units-exponent value použijeme pre vynútenie zobrazenia hodnôt na osi y v mocninách desiatky, ktoré potrebujeme. Štandardne sú hodnoty v najvhodnejších jednotkách ako Kb, Mb, Gb, avšak ak chceme napríklad jednotky, ktoré by boli zobrazené ako Mb zobraziť ako Kb, zadáme exponent 3, čiže 103 a tým dosiahneme prepočet jednotiek na osi y podľa nášho želania. Treba si uvedomiť, že pre správnu funkciu je potrebné plniť databázu jednotkovými hodnotami, ako sme si ukázali v minulom dieli.

-v|--vertical-label text určuje vertikálnu popisku na ľavej strane grafu, ktorá môže mať aj viacero riadkov. Štandardne sa používa na uvedenie jednotiek.

-w|--width pixels a -h|--height pixels určujú veľkosť generovaného grafu. Defaultnými hodnotami sú 400×300 pixelov.

-i|--interlaced a -a|--imgformat GIF| PNG určujú výsledný formát grafu. Defaultným výsledným formátom je GIF bez vlastnosti interlaced.

-f|--imginfo formatstring Tento parameter na štandardný výstup STDOUT zapíše definovaný reťazec, čo sa môže hodiť napríklad pre generovanie tagu na vloženie obrázku do html dokumentu pri spolupráci s .cgi skriptami, takže napríklad nasledovne: –imginfo ‚<img SRC=„/img/%s“ WIDTH=„%lu“ HEIGHT=„%lu“ ALT=„Demo“>‘

-z|--lazy Pre ušetrenie strojového času slúži tento argument, ktorý spôsobý, že výsledný graf bude generovaný iba vtedy ak neexistuje, alebo je neaktuálny.

-u|--upper-limit value a -l|--lower-limit value určujú rozsah hodnôt preos y. Hodnoty sú štandardne určené aj bez definovania, pre špecifické aplikácie je však možné implicitne rozsah určiť. Prípustné sú aj záporné hodnoty.

-r|--rigid Ak sme určili hornú a dolnú hranicu a niektorá z hodnôt je mimo rozsahu, štandardne rozsah bude rozšírený. Pre zamedzenie tejto vlastnosti slúži práve táto voľba.

-b|--base value určuje násobiteľa pre kilá, takže si môžete zadefinovať 1024 pre hodnoty diskového priestoru a kapacity operačnej pamäte, alebo 1000 pre hodnoty týkajúce sa trafficu.

-o|--logarithmic zabezpečí logaritmické škálovanie osi y

Pre definovanie farieb jednotlivých komponentov slúži parameter |--color COLORTAG#rrggbb. Jednotlivými elementami, pre ktoré môžeme definovať farbu sú BACK, CANVAS, SHADEA, SHADEB, GRID, MGRID, FONT, FRAME a nakoniec ARROW. Pre každú jednotlivú definíciu je potrebné tento parameter zadať samostatne.

-g|--no-legend potlačí generovanie legendy vytváraného grafu.

-t|--title text určí nadpis grafu, ktorý môže mať viacero riadkov.

--step value určuje krokový rozsah medzi jednotlivými hodnotami. Štandardne sa automaticky vypočítava v závislosti od časového rozsahu a rozlíšenia, ak si však želáte urobiť napríklad iba hodinové rozlíšenie hodnôt, stači si za hodnotu určiť 3600 a hodnoty budú reprezentované pre každú hodinu iba jeden krát.

DEF:vname=rrd:ds-name: CF určuje virtuálny názov pre zdroj dát. Toto meno môže byť neskôr použité vo výpočtoch pomocou CDEF. Príkladom nám môže byť napríklad DEF:odozva=pin­gy.rrd:average, kde sa nám do hodnoty odozva načítava hodnota average z príslušného časového RRA rámca z databázy pingy.rrd

oproti DEF, CDEF:vname=rpn-expression slúži pre výpočet jednotlivých hodnôt s použitím matematických operácií na báze RPN, čiže obrátenej poľskej notácie, ktorú si vysvetlíme niekedy nabudúce. Takže majte na pamäti, že počas spracovávania príslušných hodnôt je možné oproti MRTG ich aj matematicky spracovávať a logicky vyhodnocovať, čo sa nám bude hodiť.

parameter PRINT:vname: CF:format slúži pre spracovávanie hodnôt počas jednotlivých priebehov a ich výstup na STDOUT pre využitie v rôznych skriptoch z ktorých RRDTOOL voláte. Tým máme k dispozícii hodnoty, ktoré môžeme do súčasne generovaného html dokumentu vlastným cgi skriptom vložiť a to jednoduchým spôsobom.

na rozdiel od PRINT: nám GPRINT:vname: CF:format umožní vypočítavané hodnoty integrovať priamo do generovaného grafického súboru priamo pod graf. Hodí sa pre sumarizáciu dát, ich priemerovanie a podobne. Pre zobrazenie dvojbodky je nutné ju escapovať na \: pre zarovnávanie textov použijeme \j zarovnanie na oboch stranách, \l pre zarovnanie vľavo, \r pre zarovnanie vpravo, \c pre centrovanie textu, \s rozšíri medzeru medzi jednotlivými riadkami, \g potlačí nadbytočné medzery v reťazci a nakoniec %s potlačí zobrazenie prázdnych jednotkových reťazcov.

COMMENT:text slúži pre vypisovanie textov pod samotný graf, podobne ako funkcie GPRINT pre jednotlivé premenné.

HRULE:value#rrggbb[:le­gend] a VRULE:time#rrggbb[:l­egend] slúžia na generovanie horizontálnej a vertikálnej čiary definovanej farby s prípadnou definovanou legendou na úrovni hodnoty y ako napríklad, linku pre priemernú hodnotu alebo na časovom údaje, ako napríklad prechod dňa.

linux_sprava_tip

LINE{1|2|3}:vn­ame[#rrggbb[:­legend]], AREA:vname[#rrggbb[:­legend]] a STACK:vname[#rrggbb[:­legend]] určujú aký typ grafu sa má pre jednotlivé hodnoty vytvoriť. Treba si uvedomiť že s príchodnom možnosti zobrazenia viacerých hodnôt v grafe ako dvoch nám tým pádom pribudli širšie grafické možnosti. vname definuje popisný názov premennej, ktorej hodnota sa má graficky stvárniť, legenda jej názov. Typ Line určuje čiaru o hrúbke od 1 do 3, area zasa vyplnenú oblasť pre kladné aj záporné čísla po hodnotu nula. Viacero premenných definuje viacero čiar, niekedy však chceme jednotlivé čiastkové hodnoty kumulovať, ako napríklad pri obsadenosti jednotlivých partícií na disku a podobne. Vtedy prichádza typ grafu STACK, ktorý jednotlivé hodnoty v časovom rade na seba vrství a výsledne kumuluje. Prvá premenná musí byť vždy grafom typu LINE alebo AREA, za ňou môžu nasledovať ostatné dielčie premenné typu STACK, ktoré sa budú nad ňou vrstviť.

Takže možnosti sme statočne vyčerpali, v ďalších častiach si ukážeme praktické využitie RRDTOOLu na konkrétnych príkladoch a hneď uvidíte, že obmedzenia MRTG sa s týmto nástrojom dajú hravo prekonať pri použití jednoduchých modelových skriptov v perle.

Autor článku