RRDtool ja võrgugraafik
Sisukord
Sissjuhatus
RRDtool on vabavaraline andmete hoidmise ja graafikute loomise vahend. See toetab mistahes arvulisi andmemassiive. Näiteks: võrguliiklus, temperatuur, protsessori kasutus, kõvaketta ruum, aktiivsed võrguühendused, failide arv kettal jms.
Install
Paigaldame snmpd teenuse serverisse
See tegevus on kajastatud põhjalikult snmp palas net-snmp
Installime rrdtool’i ehk programmi, mis hakkab meile graafikuid joonistama
Seadistus
Loome rrdtool’i jaoks andmefaili, kuhu ta hakkab liiklusekohta infot kirjutama, selleks käivitame käsu
$ rrdtool create liiklus.rrd --step 60 DS:in:COUNTER:60:0:U DS:out:COUNTER:60:0:U \ RRA:AVERAGE:0.5:1:1440 RRA:AVERAGE:0.5:30:336 RRA:AVERAGE:0.5:120:336 RRA:AVERAGE:0.5:1440:17280
mis tekitab meile infofaili liiklus.rrd
Võtame ja paigaldame nüüd kaks skripti vastavalt siis g.sh, mis kogub snmp käest info ning kirjutab selle faili liiklus.rrd ning liiklus.sh, mis andmetest loob graafiku.
Kohandame graafikuskriptis failirajad ning võrgukaardi numbri vastavalt endale parajaks. Selleks vaatame skripti liiklus.sh
#!/bin/sh
# sisenevad bitid
sin=`/usr/local/bin/snmpget -v2c -c avalik -Oqv localhost IF-MIB::ifInOctets.3`
# väljjuvad bitid
sout=`/usr/local/bin/snmpget -v2c -c avalik -Oqv localhost IF-MIB::ifOutOctets.3`
# väljastame siseneva ja väljuva liikluse numbrid, lihtsalt ilu pärast ja kontrolliks
echo Snmp in : $sin
echo Snmp out: $sout
# uuendame infoga liiklus.rrd faili
/usr/local/bin/rrdupdate '''/home/kasutaja/rrdtool/'''liiklus.rrd N:$sin:$sout
pööra tähelepanu ridadele sin ja sout :) ehk siis sisse ja välja data vastavalt
sin=`/usr/local/bin/snmpget -v2c -c avalik -Oqv localhost IF-MIB::ifInOctets.3` sout=`/usr/local/bin/snmpget -v2c -c avalik -Oqv localhost IF-MIB::ifOutOctets.3`
number kolm (ifInOctets.3) tähistab siis siin näites võrgukaardi numbrit. Et teada saada, mis number oleks kasutada õige, kirjutame käsu
snmpwalk -v 1 -c public localhost | more
ning siis kerid alla kuni leiab read
IF-MIB::ifDescr.1 = STRING: fxp0 IF-MIB::ifDescr.2 = STRING: fxp1
ifDescr.1 on siis väline ehk fxp0 ja ifDescr.2 sisemine kaart fxp1
Nüüd paigaldame skripti g.sh, mis loob info järgi rrdtool’i andmefailis graafiku
#!/bin/sh /usr/local/bin/rrdtool graph /home/kasutaja/public_html/g-p2ev.png -a PNG -A -w 800 -h 300 -s -24h -v "Liiklus" \ 'DEF:in=/home/kasutaja/rrdtool/liiklus.rrd:in:AVERAGE' \ 'DEF:out=/home/kasutaja/rrdtool/liiklus.rrd:out:AVERAGE' \ 'CDEF:kbin=in,1024,/' \ 'CDEF:kbout=out,1024,/' \ 'CDEF:outg=out,-1,/' \ 'CDEF:background=in,POP,LTIME,7200,%,3600,LE,INF,UNKN,IF' \ 'CDEF:backgroundN=background,-1,*' \ 'AREA:background#F3F3F3' \ 'AREA:backgroundN#F3F3F3' \ 'HRULE:262144#FF0000' \ 'HRULE:131072#FF0000' \ 'HRULE:32768#FF0000' \ 'HRULE:-32768#FF0000' \ 'HRULE:-131072#FF0000' \ 'HRULE:-262144#FF0000' \ 'AREA:in#91ACF1' \ 'AREA:outg#FF9090' \ 'LINE1:in#767676' \ 'LINE1:outg#767676' \ 'GPRINT:kbin:LAST:Viimati sisse \: %3.2lf KB' \ 'GPRINT:kbout:LAST:Viimati välja \: %3.2lf KB\j' \ 'GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB' \ 'GPRINT:kbout:AVERAGE:Keskmiselt välja\: %3.2lf KB\j' /usr/local/bin/rrdtool graph /home/kasutaja/public_html/g-n2dal.png -a PNG -A -w 800 -h 300 -s -168h -v "Liiklus" \ 'DEF:in=/home/kasutaja/liiklus.rrd:in:AVERAGE' \ 'DEF:out=/home/kasutaja/liiklus.rrd:out:AVERAGE' \ 'CDEF:kbin=in,1024,/' \ 'CDEF:kbout=out,1024,/' \ 'CDEF:outg=out,-1,/' \ 'CDEF:background=in,POP,LTIME,172800,%,86400,LE,INF,UNKN,IF' \ 'CDEF:backgroundN=background,-1,*' \ 'AREA:background#F3F3F3' \ 'AREA:backgroundN#F3F3F3' \ 'HRULE:262144#FF0000' \ 'HRULE:131072#FF0000' \ 'HRULE:32768#FF0000' \ 'HRULE:-32768#FF0000' \ 'HRULE:-131072#FF0000' \ 'HRULE:-262144#FF0000' \ 'AREA:in#91ACF1' \ 'AREA:outg#FF9090' \ 'LINE1:in#767676' \ 'LINE1:outg#767676' \ 'GPRINT:kbin:LAST:Viimati sisse \: %3.2lf KB' \ 'GPRINT:kbout:LAST:Viimati välja \: %3.2lf KB\j' \ 'GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB' \ 'GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j' /usr/local/bin/rrdtool graph /home/kasutaja/public_html/g-kuu.png -a PNG -A -w 800 -h 300 -s -672h -v "Liiklus" \ 'DEF:in=/home/kasutjaa/liiklus.rrd:in:AVERAGE' \ 'DEF:out=/home/kasutaja/liiklus.rrd:out:AVERAGE' \ 'CDEF:kbin=in,1024,/' \ 'CDEF:kbout=out,1024,/' \ 'CDEF:outg=out,-1,/' \ 'CDEF:background=in,POP,LTIME,1209600,%,604800,LE,INF,UNKN,IF' \ 'CDEF:backgroundN=background,-1,*' \ 'AREA:background#F3F3F3' \ 'AREA:backgroundN#F3F3F3' \ 'HRULE:262144#FF0000' \ 'HRULE:131072#FF0000' \ 'HRULE:32768#FF0000' \ 'HRULE:-32768#FF0000' \ 'HRULE:-131072#FF0000' \ 'HRULE:-262144#FF0000' \ 'AREA:in#91ACF1' \ 'AREA:outg#FF9090' \ 'LINE1:in#767676' \ 'LINE1:outg#767676' \ 'GPRINT:kbin:LAST:Viimati sisse \: %3.2lf KB' \ 'GPRINT:kbout:LAST:Viimati välja \: %3.2lf KB\j' \ 'GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB' \ 'GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j' /usr/local/bin/rrdtool graph /home/kasutaja/public_html/g-aasta.png -a PNG -A -w 800 -h 300 -s -8064h -v "Liiklus" \ 'DEF:in=/home/kasutaja/liiklus.rrd:in:AVERAGE' \ 'DEF:out=/home/kasutaja/liiklus.rrd:out:AVERAGE' \ 'CDEF:kbin=in,1024,/' \ 'CDEF:kbout=out,1024,/' \ 'CDEF:outg=out,-1,/' \ 'HRULE:262144#FF0000' \ 'HRULE:131072#FF0000' \ 'HRULE:32768#FF0000' \ 'HRULE:-32768#FF0000' \ 'HRULE:-131072#FF0000' \ 'HRULE:-262144#FF0000' \ 'AREA:in#91ACF1' \ 'AREA:outg#FF9090' \ 'LINE1:in#767676' \ 'LINE1:outg#767676' \ 'GPRINT:kbin:LAST:Viimati sisse \: %3.2lf KB' \ 'GPRINT:kbout:LAST:Viimati välja \: %3.2lf KB\j' \ 'GPRINT:kbin:AVERAGE:Keskmiselt sisse\: %3.2lf KB' \ 'GPRINT:kbout:AVERAGE:Keskmiselt välja\:%3.2lf KB\j'
Muudame vastavalt leiduvad rajad failis õigeks. Rajad, mida vaja muuta on
/usr/local/bin/rrdtool graph /home/kasutaja/public_html/g-p2ev.png -a PNG -A -w 800 -h 300 -s -24h -v "Liiklus" \ 'DEF:in=/home/kasutaja/rrdtool/liiklus.rrd:in:AVERAGE' \ 'DEF:out=/home/kasutaja/rrdtool/liiklus.rrd:out:AVERAGE' \
Esimene on graafikupildi asukoht ja kaks teist on liiklus.rrd ehk rrdtooli andmebaasifaili asukoht.
Lisame cron’i graafikuloomis skriptide käivitamise, avame /etc/crontab, lisame read
*/1 * * * * root /usr/home/kasutaja/liiklus.sh > /dev/null */5 * * * * root /usr/home/kasutaja/g.sh > /dev/null
Nagu näha, küsime snmp’ga infot ja lisame rrdtool’i andmebaasi seda iga minut, aga graafikud joonistame iga 5 minuti järel. Praegu on see halb, et korraga loome iga kord päeva, kuu, nädala ja aasta graafiku. Võib näiteks g.sh lüüa lahti kolmeks skriptiks, mida omakorda gron käivitab vastavalt kord päev, kord nädalas, kord aastas ;)
Tulemuseks saame neli pilti. Toome esile siin päevagraafiku.
Loome mingi html faili, mis näitab tekitatud pilte
Kogu edasine info netis http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/
Andkefailide konvert enne teisele arhidektuurile tõstmist
rrdtool puhul pole võimalik kasutada samu rrd faile nii 32 kui 64bitistel masinatel ja vahepeal tuleb need ümber konvertida ja taastada. Arendajate poolt arutatakse ka uue formaadi loomist mille puhul sarnaseid konvertimisi enam ei peaks tegema kuid hetkel seda ametlikus releasis veel pole.
Esimeses masinas konverdime kõik failid xml formaati järgneva skriptiga
#!/bin/sh for g in $( ls /usr/local/var/rrdfailid ) ; do name=`echo $g | awk '{sub(/rrd/,"xml");print}'` echo $g echo $name rrdtool dump /usr/local/var/rrdfailid/$g /usr/local/var/rrdfailid/$name done
Kopeerime failid üle teise arvutisse kus Kustutame esimesena eksisteerivad rrdfailid ja seejäärel loome neist uued rrdfailid.
#!/bin/sh for g in $( ls /usr/local/var/rrdfailid ) ; do name=`echo $g | awk '{sub(/xml/,"rrd");print}'` echo $g echo $name rrdtool restore /usr/local/var/rrdfailid/$g /usr/local/var/munin/rrdfailid/$name done
Ja seejärel võime eemaldada kopeeritud failid