Erinevus lehekülje "RRDtool ja võrgugraafik" redaktsioonide vahel
(→Andmefaili loomine) |
(→Andmete uuendamine) |
||
70. rida: | 70. rida: | ||
===Andmete uuendamine=== | ===Andmete uuendamine=== | ||
+ | |||
+ | Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (SNMP) käest andmeid ning salvestab need andmebaasi. | ||
+ | |||
+ | Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt konfiguratsioonile parajaks. | ||
<source lang=bash> | <source lang=bash> | ||
87. rida: | 91. rida: | ||
</source> | </source> | ||
− | + | Pööra tähelepanu ridadele '''sin''' ja '''sout'''! | |
− | sin=`/usr/local/bin/snmpget -v2c -c | + | sin=`/usr/local/bin/snmpget -v2c -c <parool> -Oqv localhost IF-MIB::ifInOctets.3` |
− | sout=`/usr/local/bin/snmpget -v2c -c | + | sout=`/usr/local/bin/snmpget -v2c -c <parool> -Oqv localhost IF-MIB::ifOutOctets.3` |
− | + | Number kolm (ifInOctets.3) tähistab antud konfiguratsioonis võrgukaardi numbrit. | |
snmpwalk -v 1 -c public localhost | more | snmpwalk -v 1 -c public localhost | more | ||
− | + | Nimekirjas leiad read | |
IF-MIB::ifDescr.1 = STRING: fxp0 | IF-MIB::ifDescr.1 = STRING: fxp0 | ||
IF-MIB::ifDescr.2 = STRING: fxp1 | IF-MIB::ifDescr.2 = STRING: fxp1 | ||
− | ifDescr.1 | + | Antud konfiguratsioonis on '''ifDescr.1''' väline (fxp0) ja '''ifDescr.2''' sisemine (fxp1) võrgukaartkaart. |
===Graafikute loomine=== | ===Graafikute loomine=== |
Redaktsioon: 18. aprill 2013, kell 13:37
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 serverisse SNMP teenuse. Täpsemalt on selle paigaldamisest juttu palas net-snmp.
Paigaldame ka rakenduse RRDtool.
Andmefaili loomine
Kõige keerulisem osa RRDtooli juures on andmebaas, kus andmeid hoitakse. Järgmised parameetrid on väga olulised:
1. kui tihti andmeid lisatakse [--step X] (samm on vaikimisi 300 sekundit) 2. muutujate nimed andmebaasis 3. kui pika aja kohta me infot andmebaasis hoiame
Esmalt teeme võrguliikluse andmebaasi, kus andmete uuendamine toimub iga 300 sekundi (5 minutit) tagant. Meil on vaja graafikut nii ööpäeva, nädala, kuu ning aasta jaoks.
Loome andmefaili, kuhu salvestame võrguliikluse andmed. Selleks käivitamie järgmise käsu
rrdtool create liiklus.rrd \ --step 300 \ DS:in:COUNTER:600:U:U \ DS:out:COUNTER:600:U:U \ RRA:AVERAGE:0.5:1:288 \ RRA:AVERAGE:0.5:6:336 \ RRA:AVERAGE:0.5:24:372 \ RRA:AVERAGE:0.5:288:365 \ RRA:MAX:0.5:1:288 \ RRA:MAX:0.5:6:336 \ RRA:MAX:0.5:24:372 \ RRA:MAX:0.5:288:365 \
Selle tulemusel tekib anmebaasi fail nimega liiklus.rrd. Nüüd natuke lähemalt, mida me siin tegime.
DS:in:COUNTER:600:U:U tekitab andmevoo (muutuja nimega in), mis on COUNTER tüüpi, tekitab andmepunkti iga 600 sekundi tagant, mille minimaalne ja maksimaale väärtus on teadmata (U)
RRA:AVERAGE:0.5:1:288
288 andmeühikut! 1 (iga uuendus) * 300 sekundit (uuenduse samm) * 288 (andmepunkti) = 86400 sekundit 86400 sekundit / 60 => 1440 minutit 1440 minutit / 60 => 24 tundi
RRA:AVERAGE:0.5:6:336
336 andmeühikut! 6 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 336 (andmepunkti) = 604800 sekundit 604800 sekundit / 60 => 10080 minutit 10080 minutit / 60 => 168 tundi 168 tundi / 24 => 7 ööpäeva
RRA:AVERAGE:0.5:24:372
336 andmeühikut! 24 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 372 (andmepunkti) = 2678400 sekundit 2678400 sekundit / 60 => 44640 minutit 44640 minutit / 60 => 744 tundi 744 tundi / 24 => 31 ööpäeva
RRA:AVERAGE:0.5:288:365
288 (uuenduste keskmine) * 300 sekundit (uuenduse samm) * 365 (andmepunkti) = 31536000 sekundit 31536000 sekundit / 60 => 525600 minutit 525600 minutit / 60 => 8760 tundi 8760 tundi / 24 => 365 ööpäeva
Sarnaselt eelnevale on defineeritud ka maksimaalsete väärtuste hoidmine samas ajaskaalas (MAX).
Andmete uuendamine
Andmete uuendamiseks on otstarbekas luua skript, mis küsib operatsioonisüsteemi (SNMP) käest andmeid ning salvestab need andmebaasi.
Kohandame skriptis failirajad ning võrgukaardi numbri vastavalt konfiguratsioonile parajaks.
#!/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!
sin=`/usr/local/bin/snmpget -v2c -c <parool> -Oqv localhost IF-MIB::ifInOctets.3` sout=`/usr/local/bin/snmpget -v2c -c <parool> -Oqv localhost IF-MIB::ifOutOctets.3`
Number kolm (ifInOctets.3) tähistab antud konfiguratsioonis võrgukaardi numbrit.
snmpwalk -v 1 -c public localhost | more
Nimekirjas leiad read
IF-MIB::ifDescr.1 = STRING: fxp0 IF-MIB::ifDescr.2 = STRING: fxp1
Antud konfiguratsioonis on ifDescr.1 väline (fxp0) ja ifDescr.2 sisemine (fxp1) võrgukaartkaart.
Graafikute loomine
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.
CRON
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