Hlavní navigace

Prechádzame na RRDTOOL

Milan Gigel

Softwarový prostriedok MRTG pre tvorbu grafických prehľadov sa teší širokej popularite administrátorov. Postupom vývoja sa však usúdilo, že má limitácie v počte zobrazovaných premenných v časových radoch, ako aj v možnosti ich grafického stvárnenia, tak tvorcovia už dávnejšie začali pracovať na projekte RRDTOOL, ktorý má ukončením rady MRTG2 s nástupom MRTG3 do značnej miery zmeniť prístup k danej problematike.

Nová rada MRTG3 má byť celá založená na RRDTOOL, takže je lepšie sa do prechodu pustiť už teraz a vychutnať si široké možnosti tohto nástroja priamo vo svojom monitorovacom systéme. Na základe viacerých žiadostí čitateľov root.cz sa budeme tejto problematike v tomto miniseriáli venovať.

Dnes si ukážeme na jednoduchom príklade logiku, ktorou tento nástroj pracuje, a v ďalších častiach si presne zdokumentujeme jednotlivé možnosti a ukážeme si na praktických príkladoch jednotlivé možnosti použitia a nové formy stvárnenia, ako aj vyhodnocovanie.

Prvou zmenou oproti mrtg je prístup k spracovaniu. Spracovanie v podstate pozostáva z prvotného vytvorenia Round Robin databázy (z toho vznikol aj názov RRDTOOL), následne prichádza cyklické plnenie databázy údajmi v časovom rade a následne nezávisle od plnenia na základe požiadavky tvorba grafického výstupu s možnosťou špecifikovania časového rozsahu. Nie je tomu teda tak, ako pri mrtg, kde sa zber údajov automaticky spájal s tvorbou grafov, ale sú to dve samostatné činnosti. Ďalšou zmenou je zadávanie hodnôt aj s časovým údajom vo formáte timestamp. Možno vás prekvapí, že zmizli staré známe konfiguračné súbory, takže plnenie je nutné obstarať vlastnými skriptami. Vďaka knižniciam pre perl to nie je problémom a po prvom pokuse na modeli uvidíte, že je to úplne jednoduché. Na základnej konštrukcii je možné stavať ľubovoľné grafické aplikácie, takže hor sa do práce.

Po stiahnutí z domovskej stránky a skompilovaní, ktoré by malo prebehnúť na strojoch, kde už predtým bolo mrtg úspešne inštalované, bezproblémovo, si vytvoríme prvý modelový skript, ktorý nám bude do vytvorenej databázy ukladať časy odozvy pri pingovaní testovacieho hosta v sieti a pri každom zbere nových dát vytvorí grafické stvárnenie. Modelový skript bude vyzerať nasledovne:

#! /usr/bin/perl

  use lib qw( /rrdtool/perl-shared/blib/lib /rrdtool/perl-shared/blib/arch );
  use lib qw( /usr/local/rrdtool-1.0.33/lib/perl /rrdtool/lib/perl );
  use RRDs;

  my $start=time;
  my $rrd=   "/home/httpd/mrtg.domena.sk-443/html/rrdtool/test/pingtest.rrd";
  my $name = "/home/httpd/mrtg.domena.sk-443/html/rrdtool/test/pingtest.png";

  if (not -f $rrd){
  RRDs::create ($rrd, "--start",$start-1, "--step",300,
          "DS:pingtime:GAUGE:600:U:U",
          "RRA:AVERAGE:0.5:1:200",
  );
  my $ERROR = RRDs::error;
  die "$0: unable to create `$rrd': $ERROR\n" if $ERROR;
  };

  my $t;
  $t=`ping -c3 111.111.111.111 | grep round-trip|awk
    '{\$c=split(\$4,i,"/");print i[1]}'`;

  RRDs::update $rrd,"$start:$t";

  RRDs::graph "$name",
    "--title", "Demo ping prehladu",
    "--start", "now-1d",
    "--end", "now",
    "--imgformat","PNG",
    "--width=600",
    "--height=300",
    "DEF:a=$rrd:pingtime:AVERAGE",
    "LINE2:pingtime#00b6e4:real",
    "COMMENT:Aktuálna hodnota odozvy=$t",
  ;
  if ($ERROR = RRDs::error) {
    print "ERROR: $ERROR\n";
  };

Ako vidíte, jeho funkcia je jednoduchá. Máme dve premenné $rrd a $name, v ktorých máme uložené názov RRD databázy a názov výsledného grafického súboru. RRDTOOL sprievodné html dokumenty nevytvára, ako tomu bolo pri MRTG, texty je možné vkladať priamo do generovaného grafického súboru. Nasleduje kontrola existencie databázy. Ak neexistuje, vytvoríme si ju. V tomto prípade s jednou premennou s názvom pingtime, pre ktorú sa bude generovať päťminútová priemerná hodnota. Nasleduje získanie aktuálnej hodnoty odozvy a jej uloženie do premennej $t. Na rade je zápis do databázy. Všimnite si že dáta sa zapisujú vo formáte time:premenná1:pre­menná2:premen­ná3:…, takže je možné do databázy plniť údaje aj v dávkach z rôznych logových súborov, vždy však v časovom slede. Nakoniec prichádza na rad tvorba grafického výstupu, kde môžeme mnohými parametrami ovplyvňovať výsledok. V príklade použijeme nadpis, časový rozsah za posledných 24 hodín, čo je možné ľubovoľne špecifikovať, výsledný formát súboru (podporované sú .gif a .png), veľkosť výsledného obrázku, a premennú, ktorej graf sa má vytvoriť. My máme iba jednu, ktorú zobrazíme ako líniu hrúbky 2 s legendou umiestnenou pod grafom. Škálovanie osi hodnôt necháme pre automatickú definíciu v závislosti na hodnotách. Do komentára si umiestnime aktuálnu hodnotu odozvy.

Pri spúšťaní v crone v 5 minútovom intervale môže výsledok vyzerať nasledovne:

Graf

A máme za sebou úspešný prvý príklad na ktorom sme si ukázali, že RRDTOOL, ktorý vypadá na prvý pohľad oproti MRTG zložito, je v podstate jednoduchý. Nabudúce si vysvetlíme jednotlivé voľby, ktoré máme k dispozícii a poukazujeme si mnohé praktické využitia, ktoré v MRTG nebolo možné realizovať, ako napríklad grafické stvárnenie priemernej, maximálnej a minimálnej hodnoty, súčtovanie jednotlivých hodnôt čiastkových premenných, detekciu a stvárnenie nezistenej hodnoty v časových úsekoch, ako aj spoluprácu s vyhodnocovaním prevádzky postfix mail servera.

Našli jste v článku chybu?