RRDTUTORIAL(1) rrdtool RRDTUTORIAL(1) (NAME) rrdtutorial - RRDtool (DESCRIPTION) RRDtool . RRDtool . RRDtool . RRDtool . . (TUTORIAL) (Important) ! . . "0.04" "4.00000e-02" . . rrdtool . 1.2.0 RRDtool . () . speed4.png ( if ). ( rrdtool ) NaN INF . . speed4.png ( ). . . . RRDtool (What is RRDtool?) RRDtool (Round Robin Database tool) . () . . . . . . . RRDtool (RRD) . RRD (What data can be put into an RRD?) (time-series) . RRDtool . RRDtool . MRTG ( ). SNMP (Simple Network Management Protocol) . <<>> . . SNMP RRD . (What can I do with this tool?) RRDtool MRTG (Multi Router Traffic Grapher) . MRTG . MRTG ( !) . RRDtool SNMP . ( ) . . () RRDtool . RRDtool PNG . PNG . (What if I still have problems after reading this document?) : ! . RRDtool . . . . () . . ! . RRDtool . "subscribe" . "unsubscribe" . (How will you help me?) . RRDtool . . . () . bin_dec_hex . (Your first Round Robin Database) . . . () ( ) . : . . . () . . . (bits per second) . . ! SNMP . 0 4294967295 . . . *** *** . : 1. . 2. ( ) . 3. () () . (bps) . bps = (counter_now - counter_before) / (time_now - time_before) * 8 . ! 1.6 ( ) . : m: meter km: kilometer (= 1000 meters). h: hour s: second km/h: kilometers per hour m/s: meters per second . 12:05 12345 . 12:10 12357 . 12 . ( ) ( ) . 12 12000 . 300 . 12000 300 40 . : 12 5 12 12 144 . : 90 :) : . . . . k k 1000 . . . ( ) '\' . rrdtool create test.rrd \ --start 920804400 \ DS:speed:COUNTER:600:U:U \ RRA:AVERAGE:0.5:1:24 \ RRA:AVERAGE:0.5:6:10 ( : "rrdtool create test.rrd --start 920804400 DS ...") (What has been created?) test ( test.rrd) ( 920804400 ). (DS) "speed" . ( "--step=300" ). (RRA) ( ) ( ). ( ) ( ). RRDtool . 00:00:00 (UTC) . . . . . . : "12:05" "11:05" . . : 12:05 12345 km 12:10 12357 km 12:15 12363 km 12:20 12363 km 12:25 12363 km 12:30 12373 km 12:35 12383 km 12:40 12393 km 12:45 12399 km 12:50 12405 km 12:55 12411 km 13:00 12415 km 13:05 12420 km 13:10 12422 km 13:15 12423 km : rrdtool update test.rrd 920804700:12345 920805000:12357 920805300:12363 rrdtool update test.rrd 920805600:12363 920805900:12363 920806200:12373 rrdtool update test.rrd 920806500:12383 920806800:12393 920807100:12399 rrdtool update test.rrd 920807400:12405 920807700:12411 920808000:12415 rrdtool update test.rrd 920808300:12420 920808600:12422 920808900:12423 : time 920804700, value 12345 time 920805000, value 12357 . . . "rrdtool fetch" : rrdtool fetch test.rrd AVERAGE --start 920804400 --end 920809200 : speed 920804700: nan 920805000: 4.0000000000e-02 920805300: 2.0000000000e-02 920805600: 0.0000000000e+00 920805900: 0.0000000000e+00 920806200: 3.3333333333e-02 920806500: 3.3333333333e-02 920806800: 3.3333333333e-02 920807100: 2.0000000000e-02 920807400: 2.0000000000e-02 920807700: 2.0000000000e-02 920808000: 1.3333333333e-02 920808300: 1.6666666667e-02 920808600: 6.6666666667e-03 920808900: 3.3333333333e-03 920809200: nan 920809500: nan . 920809200 . :920809200 920808900 920809200 920809200. 920809200 920809500 920809200 . "nan" "NaN" . "NaN" "Not A Number" ( / ) . "U" "UNKN" . ( :-) ). : . . (Time to create some graphics) : rrdtool graph speed.png \ --start 920804400 --end 920808000 \ DEF:myspeed=test.rrd:speed:AVERAGE \ LINE2:myspeed#FF0000 speed.png 12:00 13:00 . myspeed RRA "speed" "test.rrd" . myspeed . ( rgb ). 12:00 12:05 . . . : ! . (red) (green) (blue) . () 00 FF . <<>> : FFFFFF <<>> : 000000 red #FF0000 green #00FF00 blue #0000FF magenta #FF00FF (mixed red with blue) gray #555555 (one third of all components) ( RRDtool) ( / transparency) . "FF" () . PNG . PNG "file:///the/path/to/speed.png" . (Graphics with some math) 12:10 12:20 12:30 12:40 12:50 . (12:00 13:00 ) . . 300 . 12 (12345 - 12357) 300 0.04 RRDtool "40 m" "40/1000" () . "m" () ( m ) ! RRDtool . (12357000 - 12345000) 300 12000 300 40 . . : PNG! rrdtool graph speed2.png \ --start 920804400 --end 920808000 \ --vertical-label m/s \ DEF:myspeed=test.rrd:speed:AVERAGE \ CDEF:realspeed=myspeed,1000,\* \ LINE2:realspeed#FF0000 : * . . : "CDEF:realspeed=myspeed,1000,*" \ : RRDtool * \ RRDtool. . PNG "m" () . . . PNG . CDEF ("RPN") . RRDtool : " myspeed 1000 ". RPN . CDEF Steve Rader RPN . ! 1000 ! : Calculate meters per hour: value * 3600 Calculate kilometers per hour: value / 1000 Together this makes: value * (3600/1000) or value * 3.6 1000 . : value * 3.6 * 1000 == value * 3600 PNG ... rrdtool graph speed3.png \ --start 920804400 --end 920808000 \ --vertical-label km/h \ DEF:myspeed=test.rrd:speed:AVERAGE \ "CDEF:kmh=myspeed,3600,*" \ CDEF:fast=kmh,100,GT,kmh,0,IF \ CDEF:good=kmh,100,GT,0,kmh,IF \ HRULE:100#0000FF:"Maximum allowed" \ AREA:good#00FF00:"Good speed" \ AREA:fast#FF0000:"Too fast" : * . . ( ) . (area) . . : Check if kmh is greater than 100 ( kmh,100 ) GT If so, return 0, else kmh ((( kmh,100 ) GT ), 0, kmh) IF : Check if kmh is greater than 100 ( kmh,100 ) GT If so, return kmh, else return 0 ((( kmh,100) GT ), kmh, 0) IF (Graphics Magic) rrdtool graph . PNG : rrdtool graph speed4.png \ --start 920804400 --end 920808000 \ --vertical-label km/h \ DEF:myspeed=test.rrd:speed:AVERAGE \ CDEF:nonans=myspeed,UN,0,myspeed,IF \ CDEF:kmh=nonans,3600,* \ CDEF:fast=kmh,100,GT,100,0,IF \ CDEF:over=kmh,100,GT,kmh,100,-,0,IF \ CDEF:good=kmh,100,GT,0,kmh,IF \ HRULE:100#0000FF:"Maximum allowed" \ AREA:good#00FF00:"Good speed" \ AREA:fast#550000:"Too fast" \ STACK:over#FF0000:"Over speed" . CDEF 'nonans' ( ) 'CDEF:kmh=myspeed,3600,*' . HTML PNG : Speed Speed in meters per second
Speed in kilometers per hour
Traveled too fast? "speed.html" . . PNG (refresh) . (: shift ctrl-F5 ). (Updates in Reality) "update" : "