#!/usr/bin/ruby require 'time' syslog = '/var/log/syslog' Dir.chdir('/var/www/html/rrd') rrd = 'cpi.rrd' $VERBOSE = true if STDERR.tty? lavg = wifi = temp = now = nil File.open(syslog){|fp| last = nil for line in fp begin next unless / cherrypie loadrrd / =~ line rescue ArgumentError end last = line end STDERR.puts last if $VERBOSE lavg = $1.to_f if /load=([.0-9]+)/ =~ last wifi = $1.to_i if /wifi=([.0-9]+)/ =~ last if / t=([-.0-9]+)\/([-.0-9]+)\/([-.0-9]+)/ =~ last temp = ($1.to_i+$2.to_i+$3.to_i)/300.0 end if /(\w\w\w .\d \d\d:\d\d:\d\d|\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d\.\d+[-+]\d\d:\d\d)/ =~ last stime = $1 time = Time.parse(stime) now = time.to_i STDERR.puts time.to_s if $VERBOSE end } exit if now.nil? if not File.exist?(rrd) then cmd = %W< #{rrd} DS:load:GAUGE:600:U:U RRA:AVERAGE:0.5:1:512 RRA:AVERAGE:0.5:12:512 RRA:AVERAGE:0.5:288:512 DS:wifi:GAUGE:600:U:U RRA:AVERAGE:0.5:1:512 RRA:AVERAGE:0.5:12:512 RRA:AVERAGE:0.5:288:512 DS:temp:GAUGE:600:U:U RRA:AVERAGE:0.5:1:512 RRA:AVERAGE:0.5:12:512 RRA:AVERAGE:0.5:288:512 > STDERR.puts "+ rrdcreate #{cmd.join(' ')}" if $VERBOSE system("rrdcreate", *cmd) end cmd = [rrd, '-s', [now,lavg,wifi,temp].join(':')] STDERR.puts "+ rrdupdate #{cmd.join(' ')}" if $VERBOSE system("rrdupdate", *cmd) STDOUT.reopen("/dev/null") cmd = %W< graph cpiload.png -t cherrypie.load DEF:load=#{rrd}:load:AVERAGE CDEF:cload=load,100,* LINE1:cload#FF0000 > STDERR.puts "+ rrdtool #{cmd.join(' ')}" if $VERBOSE system("rrdtool", *cmd) cmd = %W< graph cpiloadd10.png --end now --start now-864000s -t cherrypie.load DEF:load=#{rrd}:load:AVERAGE CDEF:cload=load,100,* LINE1:cload#FF0000 > STDERR.puts "+ rrdtool #{cmd.join(' ')}" if $VERBOSE system("rrdtool", *cmd) cmd = %W< graph cpitempd10.png --end now --start now-864000s -t cherrypie.temp DEF:temp=#{rrd}:temp:AVERAGE CDEF:ctemp=temp,0.1,* LINE1:ctemp#FF0000 > STDERR.puts "+ rrdtool #{cmd.join(' ')}" if $VERBOSE system("rrdtool", *cmd) cmd = %W< graph cpiwifi.png -t cherrypie.wifi DEF:wifi=#{rrd}:wifi:AVERAGE LINE1:wifi#FF0000 > STDERR.puts "+ rrdtool #{cmd.join(' ')}" if $VERBOSE system("rrdtool", *cmd) cmd = %W< graph cpiwifid10.png --end now --start now-864000s -t cherrypie.wifi.10days DEF:wifi=#{rrd}:wifi:AVERAGE LINE1:wifi#FF0000 > STDERR.puts "+ rrdtool #{cmd.join(' ')}" if $VERBOSE system("rrdtool", *cmd) cmd = %W< graph cpitemp.png -t cherrypie.temp DEF:temp=#{rrd}:temp:AVERAGE CDEF:ctemp=temp,0.1,* LINE1:ctemp#FF0000 > STDERR.puts "+ rrdtool #{cmd.join(' ')}" if $VERBOSE system("rrdtool", *cmd)