Hlavní navigace

Prechádzame na RRDTOOL (2)

4. 1. 2002
Doba čtení: 4 minuty

Sdílet

V minulej časti sme si v skratke priblížili nástroj RRDTOOL, dnes sa začneme bližšie venovať jednotlivým možnostiam.
I. Tvorba RRD databázy

Pre ukladanie dát je potrebné najskôr si požadovanú databázu vytvoriť. Je dobré vopred si premyslieť, koľko hodnôt chceme sledovať, či nás zaujímajú maximálne, minimálne alebo priemerné hodnoty, v akých časových intervaloch budeme dáta zaznamenávať a aké obdobie sledujeme. Vytvorenie realizujeme príkazom

rrdtool create filename [--start|-b start time] [--step|-s step]
 [DS:ds-name DST:heartbeat:min:max] [RRA: CF:xff:steps:rows]

-start udáva počiatočnú časovú bázu, od kedy sa začínajú dáta zapisovať. Implicitná hodnota je aktuálny čas –10s. Čas je potrebné udávať ako počet sekúnd ubehnutých od 1.1.1970
-step udáva časový rozstup medzi jednotlivými údajmi v sekundách implicitne 5 minúť

DS:ds-name: DST:heartbeat:min:max nám definuje sledovanú premennú. Jej názov môže byť až 19 znakov dlhý. DST určuje typ hodnoty. K dispozícii sú GAUGE, COUNTER, DERIVE a ABSOLUTE. GAUGE sa používa pre aktuálne hodnoty, COUNTER pre súčtové hodnoty v časovom rade, DERIVE zaznamenáva zmenu medzi poslednými dvomi hodnotami a ABSOLUTE pre súčtové hodnoty v časovom rade, ktoré sa po každom čítaní nulujú. Heartbeat nám určuje maximálny čas medzi dvoma hodnotami, a nakoniec položky min a max predpokladaný definičný obor, nie je potrebné ho však špecifikovať. Toľko k dátam, teraz však prichádzajú RRA tabuľky.

RRA: CF:xff:steps:rows

RRA definuje Round Robin archív, kde CF môže byť typu AVERAGE, MIN, MAX alebo LAST. Tu si určujeme tvorbu archívov pre priemerné hodnoty, minimálne, maximálne, alebo aktuálne. Samozrejme RRA archívov môže byť viacero, je to iba na nás. Xff určuje, ktorá časť konsolidačného intervalu môže byť vytvorená z dát typu UNKNOWN, pokiaľ je konsolidovaná hodnota stále známa. Väčšinou sa používa hodnoty 0.5. Steps definuje koľko primárnych dátových hodnôt sa použije pre vytvorenie konsolidovanej hodnoty, ktorá sa uloží do RRA archívu a hodnota rows definuje, koľko konsolidovaných generácií sa v RRA ukladá.

Použijeme dokonalý príklad priamo z domovskej stránky pre vysvetlenie v praxi:

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

Daný ilustračný príklad nám vytvorí databázu teplôt s časovým intervalom hodnôt 5 minút s názvom premennej temp. Prípustné hodnoty sú od –273 do 5000. Ak nezozbierame žiadne hodnoty po dobu 10 minút, dáta v tabuľke budú mať hodnotu UNKNOWN, čo je možné potom v grafe náležite znázorniť. Vytvoríme si 4 RRA archívy. V prvom budú dáta 5 minútového priemeru pre 100 hodín (t.j. 300s x 1200), v druhom budú minimálne hodnoty za posledných 100 dní, v ďalších dvoch maximálne a priemerné hodnoty za 100 dní.

Ukážeme si ešte tvorbu databázy s viacerými premennými pre hodnoty miním maxím a priemer odoziev pri pingu nasledovne:

rrdtool create pingtimes.rrd --step 300 \
DS:min:GAUGE:600:U:U \
DS:avg:GAUGE:600:U:U \
DS:max:GAUGE:600:U:U \
RRA:AVERAGE:0.5:1:600 \

Sledujú sa premenné min, avg a max s nedefinovaným oborom prípustných hodnôt s časovým intervalom hodnôt 5 minút. Pre všetky premenné sa vytvorí RRA archív priemerných 5 minútových hodnôt. Ak nezozbierame žiadne hodnoty po dobu 10 minút, hodnota dosiahne stav UNKNOWN. Dáta sa budú zbierať pre obdobie posledných 50 hodín.

Na prvý pohľad oproti MRTG zložité, avšak vo svojej podstate skoro triviálne. Dúfam že vám príklady situáciu prakticky objasnili. Hor sa teda do plnenia.

II. Plnenie databázy

Ak máme databázu vytvorenú podľa našich požiadaviek (čo vyzerá asi najzložitejšie z celého RRDTOOL), ako sme si ukázali v predchádzajúcej kapitole, môžeme sa pustiť do plnenia:

root_podpora

rrdtool update filename [--template|-t ds-name[:ds-name]...]
 N|timestamp:value[:value...] [timestamp:value[:value...] ...]

Filename určuje názov RRA/D databázy, ktorá už musí byť vopred vytvorená. Voľba -=template slúži na definovanie zmeneného poradia premenných. Keďže však spracovávame dáta aj tak v perl skriptoch, tak táto voľba nejako moc dôležitá nie je. Nasleduje definícia hodnôt v tvare timestamp:hod­nota1:hodnota2:hod­nota3. Timestamp určuje počet sekúnd ubehnutých od 1.1. 1970, čo je vlastne bežný formát časového údaje, za ktorým dvojbodkami oddelené nasledujú hodnoty v rovnakom poradí, ako sme ich definovali pri vytváraní databázy alebo explicitne špecifikovali parametrom template. Na jednom riadku môžeme zadávať aj viacero hodnôt v časovom rade oddelených medzerou. Nie je nutné hodnoty zadávať v časovom rade, avšak pri typoch COUNTER, DERIVE a ABSOLUTE by dochádzalo k chybám, takže radšej postupnosť dodržiavajme. Hodnoty je nutné zadávať v jednotkovom množstve, nakoľko prepočty na osi y počítajú so základom. Automatické násobky 1024 sú označované ako k, M, G, takže ak ukladáte dáta o priestore na disku, ktoré získavate v kb, je vhodné pred uložením do RRD databázy vynásobiť ich hodnotou 1024, aby ste dostali jednotkovú mieru.

Uff, takže spracovanie dát máme za sebou, v budúcej časti si ukážeme ako tvoriť výstupné grafy a budeme žať plody svojej práce. Máme sa aj na čo tešiť…

Byl pro vás článek přínosný?