From 713e8c50879010038602a781a03a77d745769bfa Mon Sep 17 00:00:00 2001 From: Olaf Rempel Date: Sat, 7 Apr 2007 19:49:04 +0200 Subject: [PATCH] update graphs --- network.c | 1 + sammler.php | 215 +++++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 189 insertions(+), 27 deletions(-) diff --git a/network.c b/network.c index 4940111..dbcf036 100644 --- a/network.c +++ b/network.c @@ -189,6 +189,7 @@ static int net_init_srv_cb(const char *value, void *privdata) } entry->event = event_add_readfd(NULL, entry->socket, net_receive, NULL); + list_add(&entry->list, &srv_list); log_print(LOG_INFO, "listen on %s:%d", inet_ntoa(entry->addr.sin_addr), ntohs(entry->addr.sin_port)); diff --git a/sammler.php b/sammler.php index 10a4371..d681481 100644 --- a/sammler.php +++ b/sammler.php @@ -161,36 +161,84 @@ function get_rrdfiles($directory) { return $retval; } +function get_rrd_type($filename) { + $types = array_flip(array( + "cpu", + "load", + "memory", + "swap", + "proc", + "vmstat", + "random", + "uptime", + "net", + "rtstat", + "rtcache", + "ctstat", + "conntrack", + "disk", + "mount", + "apache", + "mysql", + )); + + $tmp1 = explode('-', $filename); + $tmp2 = explode('_', $tmp1[0]); + $type = $tmp2[0]; + + if (isset($types[$type])) + return $types[$type]; + + return $filename; +} + +function rrd_sort($a, $b) { + if (!is_numeric($a['type']) && !is_numeric($b['type'])) + return strcmp($a['type'], $b['type']); + + if (is_numeric($a['type']) && !is_numeric($b['type'])) + return -1; + + if (!is_numeric($a['type']) && is_numeric($b['type'])) + return +1; + + if ($a['type'] > $b['type']) + return +1; + + if ($a['type'] < $b['type']) + return -1; + + return strcmp($a['title'], $b['title']); +} + function create_config() { $conf = array(); $conf['default_view'] = 86400; - $conf['views'] = array("6 hours" => 21600, "1 day" => 86400, "1 week" => 604800, "1 month" => 2678400); - $conf['height'] = 80; - $conf['width'] = 400; + $conf['views'] = array("1 hour" => 3600, + "6 hours" => 21600, + "1 day" => 86400, + "1 week" => 604800, + "1 month" => 2678400); + $conf['height'] = 120; + $conf['width'] = 800; $conf['hosts'] = array(); - $rrds = array(); - $tmp = get_rrdfiles(''); - foreach ($tmp as $file) { - $rrds[] = array( - 'show' => true, - 'title' => str_replace(".rrd", "", basename($file)), - 'rrd' => $file, - ); - } - $hosts = get_hostdirs(); foreach ($hosts as $host) { $rrds = array(); $tmp = get_rrdfiles($host); foreach ($tmp as $file) { + $basename = str_replace(".rrd", "", basename($file)); $rrds[] = array( 'show' => true, - 'title' => str_replace(".rrd", "", basename($file)), + 'title' => $basename, 'rrd' => "$host/$file", + 'type' => get_rrd_type($basename), ); } + uasort($rrds, rrd_sort); + $conf['hosts'][] = array( 'hostname' => $host, 'show' => true, @@ -306,11 +354,13 @@ function show_rrd($conf) { "DEF:c={$rrdfile}:busy_workers:AVERAGE ". "DEF:d={$rrdfile}:idle_workers:AVERAGE ". 'CDEF:a=aa,60,* '. + 'CDEF:err=aa,UN,INF,UNKN,IF '. + 'AREA:err#FFD0D0 '. 'AREA:c#FF0000:"Busy Workers" GPRINT:c:LAST:"Current\:%8.2lf %s" GPRINT:c:AVERAGE:"Average\:%8.2lf %s" GPRINT:c:MAX:"Maximum\:%8.2lf %s\n" '. 'STACK:d#00CF00:"Idle Workers" GPRINT:d:LAST:"Current\:%8.2lf %s" GPRINT:d:AVERAGE:"Average\:%8.2lf %s" GPRINT:d:MAX:"Maximum\:%8.2lf %s\n" '. 'LINE2:a#0000FF:"Accesses " GPRINT:a:LAST:"Current\:%8.2lf %s" GPRINT:a:AVERAGE:"Average\:%8.2lf %s" GPRINT:a:MAX:"Maximum\:%8.2lf %s" '. ''; - break; + break; case 'cpu': $height *= 2; @@ -330,17 +380,75 @@ function show_rrd($conf) { "DEF:gmax={$rrdfile}:softirq:MAX ". "DEF:hmax={$rrdfile}:steal:MAX ". "CDEF:allmax=amax,bmax,cmax,emax,fmax,gmax,hmax,+,+,+,+,+,+ ". + 'CDEF:err=allmax,UN,INF,UNKN,IF '. + 'AREA:err#FFD0D0 '. 'AREA:allmax#C0C0C0 LINE1:allmax#808080 '. - 'AREA:h#000000:"Stolen " GPRINT:h:LAST:"Current\:%8.2lf %s" GPRINT:h:AVERAGE:"Average\:%8.2lf %s" GPRINT:h:MAX:"Maximum\:%8.2lf %s\n" '. - 'STACK:c#FF0000:"System " GPRINT:c:LAST:"Current\:%8.2lf %s" GPRINT:c:AVERAGE:"Average\:%8.2lf %s" GPRINT:c:MAX:"Maximum\:%8.2lf %s\n" '. + 'AREA:c#FF0000:"System " GPRINT:c:LAST:"Current\:%8.2lf %s" GPRINT:c:AVERAGE:"Average\:%8.2lf %s" GPRINT:c:MAX:"Maximum\:%8.2lf %s\n" '. 'STACK:f#EA8F00:"IRQ " GPRINT:f:LAST:"Current\:%8.2lf %s" GPRINT:f:AVERAGE:"Average\:%8.2lf %s" GPRINT:f:MAX:"Maximum\:%8.2lf %s\n" '. 'STACK:g#FFFF00:"Soft-IRQ" GPRINT:g:LAST:"Current\:%8.2lf %s" GPRINT:g:AVERAGE:"Average\:%8.2lf %s" GPRINT:g:MAX:"Maximum\:%8.2lf %s\n" '. - 'STACK:e#0000FF:"IO-Wait " GPRINT:e:LAST:"Current\:%8.2lf %s" GPRINT:e:AVERAGE:"Average\:%8.2lf %s" GPRINT:e:MAX:"Maximum\:%8.2lf %s\n" '. + 'STACK:h#0040FF:"IO-Wait " GPRINT:e:LAST:"Current\:%8.2lf %s" GPRINT:e:AVERAGE:"Average\:%8.2lf %s" GPRINT:e:MAX:"Maximum\:%8.2lf %s\n" '. 'STACK:a#00CFCF:"User " GPRINT:a:LAST:"Current\:%8.2lf %s" GPRINT:a:AVERAGE:"Average\:%8.2lf %s" GPRINT:a:MAX:"Maximum\:%8.2lf %s\n" '. - 'STACK:b#00CF00:"Nice " GPRINT:b:LAST:"Current\:%8.2lf %s" GPRINT:b:AVERAGE:"Average\:%8.2lf %s" GPRINT:b:MAX:"Maximum\:%8.2lf %s\n" '; + 'STACK:b#00CF00:"Nice " GPRINT:b:LAST:"Current\:%8.2lf %s" GPRINT:b:AVERAGE:"Average\:%8.2lf %s" GPRINT:b:MAX:"Maximum\:%8.2lf %s\n" '. + 'STACK:h#FF00FF:"Stolen " GPRINT:h:LAST:"Current\:%8.2lf %s" GPRINT:h:AVERAGE:"Average\:%8.2lf %s" GPRINT:h:MAX:"Maximum\:%8.2lf %s\n" '; break; + case 'conntrack': + $tmp3 = explode('.', $tmp1[1]); + switch ($tmp3[0]) { + case 'proto': + $cmd .= "--base=1000 --height={$height} --width={$width} --alt-autoscale-max --vertical-label=\"Connections\" ". + "DEF:a={$rrdfile}:tcp:AVERAGE ". + "DEF:b={$rrdfile}:udp:AVERAGE ". + "DEF:c={$rrdfile}:unknown:AVERAGE ". + 'CDEF:err=a,UN,INF,UNKN,IF '. + 'AREA:err#FFD0D0 '. + 'AREA:a#00CF00:"tcp " GPRINT:a:LAST:"Current\:%8.2lf %s" GPRINT:a:AVERAGE:"Average\:%8.2lf %s" GPRINT:a:MAX:"Maximum\:%8.2lf %s\n" '. + 'STACK:b#0000FF:"udp " GPRINT:b:LAST:"Current\:%8.2lf %s" GPRINT:b:AVERAGE:"Average\:%8.2lf %s" GPRINT:b:MAX:"Maximum\:%8.2lf %s\n" '. + 'STACK:c#FF0000:"unknown" GPRINT:c:LAST:"Current\:%8.2lf %s" GPRINT:c:AVERAGE:"Average\:%8.2lf %s" GPRINT:c:MAX:"Maximum\:%8.2lf %s\n" '; + break; + + case 'tcp': + $cmd .= "--base=1000 --height={$height} --width={$width} --alt-autoscale-max --vertical-label=\"TCP Connections\" ". + "DEF:a={$rrdfile}:none:AVERAGE ". + "DEF:b={$rrdfile}:syn_sent:AVERAGE ". + "DEF:c={$rrdfile}:syn_recv:AVERAGE ". + "DEF:d={$rrdfile}:established:AVERAGE ". + "DEF:e={$rrdfile}:fin_wait:AVERAGE ". + "DEF:f={$rrdfile}:close_wait:AVERAGE ". + "DEF:g={$rrdfile}:last_ack:AVERAGE ". + "DEF:h={$rrdfile}:time_wait:AVERAGE ". + "DEF:i={$rrdfile}:close:AVERAGE ". + "DEF:j={$rrdfile}:listen:AVERAGE ". + 'CDEF:err=a,UN,INF,UNKN,IF '. + 'AREA:err#FFD0D0 '. + 'AREA:b#FF0000:"SYN_SEND " GPRINT:b:LAST:"Current\:%8.2lf" GPRINT:b:AVERAGE:"Average\:%8.2lf" GPRINT:b:MAX:"Maximum\:%8.2lf\n" '. + 'STACK:f#FF00FF:"CLOSE_WAIT " GPRINT:f:LAST:"Current\:%8.2lf" GPRINT:f:AVERAGE:"Average\:%8.2lf" GPRINT:f:MAX:"Maximum\:%8.2lf\n" '. + 'STACK:g#0000FF:"LAST_ACK " GPRINT:g:LAST:"Current\:%8.2lf" GPRINT:g:AVERAGE:"Average\:%8.2lf" GPRINT:g:MAX:"Maximum\:%8.2lf\n" '. + 'STACK:h#007FFF:"TIME_WAIT " GPRINT:h:LAST:"Current\:%8.2lf" GPRINT:h:AVERAGE:"Average\:%8.2lf" GPRINT:h:MAX:"Maximum\:%8.2lf\n" '. + 'STACK:c#00FFFF:"SYN_RECV " GPRINT:c:LAST:"Current\:%8.2lf" GPRINT:c:AVERAGE:"Average\:%8.2lf" GPRINT:c:MAX:"Maximum\:%8.2lf\n" '. + 'STACK:d#00FF00:"ESTABLISHED" GPRINT:d:LAST:"Current\:%8.2lf" GPRINT:d:AVERAGE:"Average\:%8.2lf" GPRINT:d:MAX:"Maximum\:%8.2lf\n" '. + 'STACK:e#FFFF00:"FIN_WAIT " GPRINT:e:LAST:"Current\:%8.2lf" GPRINT:e:AVERAGE:"Average\:%8.2lf" GPRINT:e:MAX:"Maximum\:%8.2lf\n" '. + 'STACK:i#FF7F00:"CLOSE " GPRINT:i:LAST:"Current\:%8.2lf" GPRINT:i:AVERAGE:"Average\:%8.2lf" GPRINT:i:MAX:"Maximum\:%8.2lf\n" '; + break; + + default: + $cmd .= "--base=1000 --height={$height} --width={$width} --alt-autoscale-max --vertical-label=\"Connections\" ". + "DEF:a={$rrdfile}:total:AVERAGE ". + "DEF:b={$rrdfile}:local:AVERAGE ". + "DEF:c={$rrdfile}:nated:AVERAGE ". + "DEF:d={$rrdfile}:unreplied:AVERAGE ". + 'CDEF:err=a,UN,INF,UNKN,IF '. + 'AREA:err#FFD0D0 '. + 'LINE1:a#000000:"Total " GPRINT:a:LAST:"Current\:%8.2lf %s" GPRINT:a:AVERAGE:"Average\:%8.2lf %s" GPRINT:a:MAX:"Maximum\:%8.2lf %s\n" '. + 'AREA:b#00CF00:"Local " GPRINT:b:LAST:"Current\:%8.2lf %s" GPRINT:b:AVERAGE:"Average\:%8.2lf %s" GPRINT:b:MAX:"Maximum\:%8.2lf %s\n" '. + 'STACK:c#0000FF:"NATed " GPRINT:c:LAST:"Current\:%8.2lf %s" GPRINT:c:AVERAGE:"Average\:%8.2lf %s" GPRINT:c:MAX:"Maximum\:%8.2lf %s\n" '. + 'LINE1:d#FF0000:"Unreplied" GPRINT:d:LAST:"Current\:%8.2lf %s" GPRINT:d:AVERAGE:"Average\:%8.2lf %s" GPRINT:d:MAX:"Maximum\:%8.2lf %s\n" '; + break; + } + break; + case 'ctstat': + $height *= 2; $cmd .= "--base=1000 --height={$height} --width={$width} --alt-autoscale-max --vertical-label=\"calls\" ". "DEF:a={$rrdfile}:searched:AVERAGE ". "DEF:b={$rrdfile}:found:AVERAGE ". @@ -364,6 +472,8 @@ function show_rrd($conf) { 'CDEF:mm=m,-1,* '. 'CDEF:nn=n,-1,* '. 'CDEF:oo=o,-1,* '. + 'CDEF:err=a,UN,INF,UNKN,IF '. + 'AREA:err#FFD0D0 '. 'LINE1:a#FF0000:"searched " GPRINT:a:LAST:"Current\:%8.0lf" GPRINT:a:AVERAGE:"Average\:%8.0lf" GPRINT:a:MAX:"Maximum\:%8.0lf\n" '. 'LINE1:b#FF00FF:"found " GPRINT:b:LAST:"Current\:%8.0lf" GPRINT:b:AVERAGE:"Average\:%8.0lf" GPRINT:b:MAX:"Maximum\:%8.0lf\n" '. 'LINE1:c#0000FF:"new " GPRINT:c:LAST:"Current\:%8.0lf" GPRINT:c:AVERAGE:"Average\:%8.0lf" GPRINT:c:MAX:"Maximum\:%8.0lf\n" '. @@ -382,12 +492,37 @@ function show_rrd($conf) { 'LINE1:oo#FFFF00:"expect_delete " GPRINT:o:LAST:"Current\:%8.0lf" GPRINT:o:AVERAGE:"Average\:%8.0lf" GPRINT:o:MAX:"Maximum\:%8.0lf\n" '; break; + case 'disk': + $height *= 2; + $cmd .= "--base=1000 --height={$height} --width={$width} --alt-autoscale-max --vertical-label=\"sectors\" ". + "DEF:a={$rrdfile}:read_cnt:AVERAGE ". + "DEF:b={$rrdfile}:read_sec:AVERAGE ". + "DEF:c={$rrdfile}:read_ms:AVERAGE ". + "DEF:dd={$rrdfile}:write_cnt:AVERAGE ". + "DEF:ee={$rrdfile}:write_cnt:AVERAGE ". + "DEF:ff={$rrdfile}:write_ms:AVERAGE ". + 'CDEF:d=dd,-1,* '. + 'CDEF:e=ee,-1,* '. + 'CDEF:f=ff,-1,* '. + 'CDEF:oerr=a,UN,INF,UNKN,IF CDEF:ierr=dd,UN,-INF,UNKN,IF '. + 'HRULE:0#FF0000 AREA:ierr#FFD0D0 AREA:oerr#FFD0D0 '. + 'LINE1:a#FF0000:"read_count " GPRINT:a:LAST:"Current\:%8.0lf" GPRINT:a:AVERAGE:"Average\:%8.0lf" GPRINT:a:MAX:"Maximum\:%8.0lf\n" '. + 'LINE1:b#FF00FF:"read_sectors " GPRINT:b:LAST:"Current\:%8.0lf" GPRINT:b:AVERAGE:"Average\:%8.0lf" GPRINT:b:MAX:"Maximum\:%8.0lf\n" '. + 'LINE1:c#0000FF:"sectors / ms " GPRINT:c:LAST:"Current\:%8.0lf" GPRINT:c:AVERAGE:"Average\:%8.0lf" GPRINT:c:MAX:"Maximum\:%8.0lf\n" '. + 'LINE1:d#FF0000:"write_count " GPRINT:dd:LAST:"Current\:%8.0lf" GPRINT:dd:AVERAGE:"Average\:%8.0lf" GPRINT:dd:MAX:"Maximum\:%8.0lf\n" '. + 'LINE1:e#FF00FF:"write_sectors " GPRINT:ee:LAST:"Current\:%8.0lf" GPRINT:ee:AVERAGE:"Average\:%8.0lf" GPRINT:ee:MAX:"Maximum\:%8.0lf\n" '. + 'LINE1:f#0000FF:"writes / ms " GPRINT:ff:LAST:"Current\:%8.0lf" GPRINT:ff:AVERAGE:"Average\:%8.0lf" GPRINT:ff:MAX:"Maximum\:%8.0lf\n" '. + ''; + break; + case 'load': $cmd .= "--base=1000 --height={$height} --width={$width} --alt-autoscale-max --lower-limit=0 --vertical-label=\"load\" ". "DEF:a={$rrdfile}:1min:MAX ". "DEF:b={$rrdfile}:5min:MAX ". "DEF:c={$rrdfile}:15min:MAX ". 'CDEF:x=a,b,c,MAX,MAX '. + 'CDEF:err=x,UN,INF,UNKN,IF '. + 'AREA:err#FFD0D0 '. 'AREA:a#EACC00:" 1 Minute Maximum " GPRINT:a:LAST:"Current\:%8.2lf %s\n" '. 'AREA:b#EA8F00:" 5 Minute Maximum " GPRINT:b:LAST:"Current\:%8.2lf %s\n" '. 'AREA:c#FF0000:"15 Minute Maximum " GPRINT:c:LAST:"Current\:%8.2lf %s\n" '. @@ -407,6 +542,8 @@ function show_rrd($conf) { 'CDEF:x=aa,bb,cc,dd,+,+,-,1024,* '. 'CDEF:xc=x,c,+ '. 'CDEF:xcd=x,c,d,+,+ '. + 'CDEF:err=xcd,UN,INF,UNKN,IF '. + 'AREA:err#FFD0D0 '. 'LINE1:a#000000:"Total Memory " GPRINT:a:LAST:"Current\:%8.2lf %s\n" '. 'AREA:x#FF0000:"Used Memory " GPRINT:x:LAST:"Current\:%8.2lf %s" GPRINT:x:AVERAGE:"Average\:%8.2lf %s" GPRINT:x:MAX:"Maximum\:%8.2lf %s\n" '. 'STACK:c#FF7D00:"Buffer Memory " GPRINT:c:LAST:"Current\:%8.2lf %s" GPRINT:c:AVERAGE:"Average\:%8.2lf %s" GPRINT:c:MAX:"Maximum\:%8.2lf %s\n" '. @@ -422,6 +559,8 @@ function show_rrd($conf) { 'CDEF:a=aa,1024,* '. 'CDEF:b=aa,cc,-,1024,* '. 'CDEF:c=cc,1024,* '. + 'CDEF:err=a,UN,INF,UNKN,IF '. + 'AREA:err#FFD0D0 '. 'LINE1:a#000000:"Total " GPRINT:a:LAST:"Current\:%8.2lf %s\n" '. 'AREA:b#FF0000:"Used " GPRINT:b:LAST:"Current\:%8.2lf %s" GPRINT:b:AVERAGE:"Average\:%8.2lf %s" GPRINT:b:MAX:"Maximum\:%8.2lf %s\n" '. 'STACK:c#00CF00:"Free " GPRINT:c:LAST:"Current\:%8.2lf %s" GPRINT:c:AVERAGE:"Average\:%8.2lf %s" GPRINT:c:MAX:"Maximum\:%8.2lf %s" '. @@ -442,6 +581,8 @@ function show_rrd($conf) { 'CDEF:c=cc,60,* '. 'CDEF:d=dd,60,* '. 'CDEF:e=ee,60,* '. + 'CDEF:err=a,UN,INF,UNKN,IF '. + 'AREA:err#FFD0D0 '. 'AREA:e#0000FF:"All Commands " GPRINT:e:LAST:"Current\:%8.2lf %s" GPRINT:e:AVERAGE:"Average\:%8.2lf %s" GPRINT:e:MAX:"Maximum\:%8.2lf %s\n" '. 'AREA:a#FF0000:"DELETE ... " GPRINT:a:LAST:"Current\:%8.2lf %s" GPRINT:a:AVERAGE:"Average\:%8.2lf %s" GPRINT:a:MAX:"Maximum\:%8.2lf %s\n" '. 'STACK:b#FF7D00:"INSERT ... " GPRINT:b:LAST:"Current\:%8.2lf %s" GPRINT:b:AVERAGE:"Average\:%8.2lf %s" GPRINT:b:MAX:"Maximum\:%8.2lf %s\n" '. @@ -449,7 +590,7 @@ function show_rrd($conf) { 'STACK:c#00CF00:"SELECT ... " GPRINT:c:LAST:"Current\:%8.2lf %s" GPRINT:c:AVERAGE:"Average\:%8.2lf %s" GPRINT:c:MAX:"Maximum\:%8.2lf %s\n" '. ''; break; - + case 'qcache': $cmd .= "--base=1024 --height={$height} --width={$width} --alt-autoscale-max --lower-limit=0 --vertical-label=\"???\" ". "DEF:a={$rrdfile}:qc_free_blocks:AVERAGE ". @@ -464,6 +605,8 @@ function show_rrd($conf) { 'CDEF:d=dd,60,* '. 'CDEF:e=ee,60,* '. 'CDEF:f=ff,60,* '. + 'CDEF:err=a,UN,INF,UNKN,IF '. + 'AREA:err#FFD0D0 '. 'LINE1:a#FF0000:"qc_free_blocks " GPRINT:a:LAST:"Current\:%8.2lf %s" GPRINT:a:AVERAGE:"Average\:%8.2lf %s" GPRINT:a:MAX:"Maximum\:%8.2lf %s\n" '. 'LINE1:b#FFFF00:"qc_free_memory " GPRINT:b:LAST:"Current\:%8.2lf %s" GPRINT:b:AVERAGE:"Average\:%8.2lf %s" GPRINT:b:MAX:"Maximum\:%8.2lf %s\n" '. 'LINE1:c#00FF00:"qc_hits " GPRINT:c:LAST:"Current\:%8.2lf %s" GPRINT:c:AVERAGE:"Average\:%8.2lf %s" GPRINT:c:MAX:"Maximum\:%8.2lf %s\n" '. @@ -474,7 +617,7 @@ function show_rrd($conf) { 'LINE1:h#000000:"qc_total_blocks " GPRINT:h:LAST:"Current\:%8.2lf %s" GPRINT:h:AVERAGE:"Average\:%8.2lf %s" GPRINT:h:MAX:"Maximum\:%8.2lf %s\n" '. ''; break; - + case 'threads': $cmd .= "--base=1024 --height={$height} --width={$width} --alt-autoscale-max --lower-limit=0 --vertical-label=\"threads\" ". "DEF:a={$rrdfile}:threads_cached:AVERAGE ". @@ -482,13 +625,15 @@ function show_rrd($conf) { "DEF:cc={$rrdfile}:threads_created:AVERAGE ". "DEF:d={$rrdfile}:threads_running:AVERAGE ". 'CDEF:c=cc,60,* '. + 'CDEF:err=a,UN,INF,UNKN,IF '. + 'AREA:err#FFD0D0 '. 'LINE1:c#00CF00:"threads created " GPRINT:c:LAST:"Current\:%8.2lf %s" GPRINT:c:AVERAGE:"Average\:%8.2lf %s" GPRINT:c:MAX:"Maximum\:%8.2lf %s\n" '. 'LINE1:d#FF0000:"threads running " GPRINT:d:LAST:"Current\:%8.2lf %s" GPRINT:d:AVERAGE:"Average\:%8.2lf %s" GPRINT:d:MAX:"Maximum\:%8.2lf %s\n" '. 'LINE1:b#00FFFF:"threads connected" GPRINT:b:LAST:"Current\:%8.2lf %s" GPRINT:b:AVERAGE:"Average\:%8.2lf %s" GPRINT:b:MAX:"Maximum\:%8.2lf %s\n" '. 'LINE1:a#0000FF:"threads cached " GPRINT:a:LAST:"Current\:%8.2lf %s" GPRINT:a:AVERAGE:"Average\:%8.2lf %s" GPRINT:a:MAX:"Maximum\:%8.2lf %s\n" '. ''; break; - + case 'traffic': $cmd .= "--base=1000 --height={$height} --width={$width} --alt-autoscale-max --vertical-label=\"bytes per second\" ". "DEF:imax={$rrdfile}:bytes_received:MAX ". @@ -499,7 +644,8 @@ function show_rrd($conf) { "DEF:omin={$rrdfile}:bytes_sent:MIN ". 'CDEF:omaxn=omax,-1,* CDEF:oavgn=oavg,-1,* CDEF:ominn=omin,-1,* '. 'CDEF:imid=imax,imin,- CDEF:omid=omaxn,ominn,- '. - 'HRULE:0#FF0000 '. + 'CDEF:oerr=oavg,UN,INF,UNKN,IF CDEF:ierr=iavg,UN,-INF,UNKN,IF '. + 'HRULE:0#FF0000 AREA:ierr#FFD0D0 AREA:oerr#FFD0D0 '. 'AREA:imin STACK:imid#A0FFA0:"min/max Inbound " GPRINT:imin:MIN:"%6.2lf%s" GPRINT:imax:MAX:"%6.2lf%s" '. 'LINE1:imin#a0a0a0 LINE1:imax#a0a0a0 LINE1:iavg#008000:"avg Inbound " '. 'GPRINT:iavg:MIN:"min\: %6.2lf%s" GPRINT:iavg:AVERAGE:"avg\: %6.2lf%s" GPRINT:iavg:MAX:"max\: %6.2lf%s\n" '. @@ -507,7 +653,7 @@ function show_rrd($conf) { 'LINE1:ominn#a0a0a0 LINE1:omaxn#a0a0a0 LINE1:oavgn#000080:"avg Outbound" '. 'GPRINT:oavg:MIN:"min\: %6.2lf%s" GPRINT:oavg:AVERAGE:"avg\: %6.2lf%s" GPRINT:oavg:MAX:"max\: %6.2lf%s\n" '; break; - + } break; @@ -522,11 +668,12 @@ function show_rrd($conf) { "DEF:omin={$rrdfile}:byte_out:MIN ". 'CDEF:omaxn=omax,-1,* CDEF:oavgn=oavg,-1,* CDEF:ominn=omin,-1,* '. 'CDEF:imid=imax,imin,- CDEF:omid=omaxn,ominn,- '. - 'HRULE:0#FF0000 '. - 'AREA:imin STACK:imid#A0FFA0:"min/max Inbound " GPRINT:imin:MIN:"%6.2lf%s" GPRINT:imax:MAX:"%6.2lf%s" '. + 'CDEF:oerr=oavg,UN,INF,UNKN,IF CDEF:ierr=iavg,UN,-INF,UNKN,IF '. + 'HRULE:0#FF0000 AREA:ierr#FFD0D0 AREA:oerr#FFD0D0 '. + 'AREA:imin#E0FFE0 STACK:imid#A0FFA0:"min/max Inbound " GPRINT:imin:MIN:"%6.2lf%s" GPRINT:imax:MAX:"%6.2lf%s" '. 'LINE1:imin#a0a0a0 LINE1:imax#a0a0a0 LINE1:iavg#008000:"avg Inbound " '. 'GPRINT:iavg:MIN:"min\: %6.2lf%s" GPRINT:iavg:AVERAGE:"avg\: %6.2lf%s" GPRINT:iavg:MAX:"max\: %6.2lf%s\n" '. - 'AREA:ominn STACK:omid#C0C0FF:"min/max Outbound" GPRINT:omin:MIN:"%6.2lf%s" GPRINT:omax:MAX:"%6.2lf%s" '. + 'AREA:ominn#E0E0FF STACK:omid#C0C0FF:"min/max Outbound" GPRINT:omin:MIN:"%6.2lf%s" GPRINT:omax:MAX:"%6.2lf%s" '. 'LINE1:ominn#a0a0a0 LINE1:omaxn#a0a0a0 LINE1:oavgn#000080:"avg Outbound" '. 'GPRINT:oavg:MIN:"min\: %6.2lf%s" GPRINT:oavg:AVERAGE:"avg\: %6.2lf%s" GPRINT:oavg:MAX:"max\: %6.2lf%s\n" '; break; @@ -536,6 +683,8 @@ function show_rrd($conf) { "DEF:a={$rrdfile}:intr:AVERAGE ". "DEF:b={$rrdfile}:ctxt:AVERAGE ". "DEF:c={$rrdfile}:fork:AVERAGE ". + 'CDEF:err=a,UN,INF,UNKN,IF '. + 'AREA:err#FFD0D0 '. 'AREA:b#00AF00:"Context " GPRINT:b:LAST:"Current\:%8.2lf %s" GPRINT:b:AVERAGE:"Average\:%8.2lf %s" GPRINT:b:MAX:"Maximum\:%8.2lf %s\n" '. 'LINE1:a#FF0000:"Interrupts" GPRINT:a:LAST:"Current\:%8.2lf %s" GPRINT:a:AVERAGE:"Average\:%8.2lf %s" GPRINT:a:MAX:"Maximum\:%8.2lf %s\n" '. 'LINE1:c#0000FF:"Forks " GPRINT:c:LAST:"Current\:%8.2lf %s" GPRINT:c:AVERAGE:"Average\:%8.2lf %s" GPRINT:c:MAX:"Maximum\:%8.2lf %s\n" '; @@ -544,6 +693,8 @@ function show_rrd($conf) { case 'random': $cmd .= "--base=1000 --height={$height} --width={$width} --alt-autoscale-max --lower-limit 0 --vertical-label=\"bytes\" ". "DEF:a={$rrdfile}:entropy:AVERAGE ". + 'CDEF:err=a,UN,INF,UNKN,IF '. + 'AREA:err#FFD0D0 '. 'AREA:a#00CF00:"Available Entropy" GPRINT:a:LAST:"Current\:%8.2lf %s" GPRINT:a:AVERAGE:"Average\:%8.2lf %s" GPRINT:a:MAX:"Maximum\:%8.2lf %s" '. 'LINE1:a#404040 '; break; @@ -555,6 +706,8 @@ function show_rrd($conf) { "DEF:c={$rrdfile}:gc_ignored:AVERAGE ". "DEF:d={$rrdfile}:gc_goal_miss:AVERAGE ". "DEF:e={$rrdfile}:gc_dst_overflow:AVERAGE ". + 'CDEF:err=a,UN,INF,UNKN,IF '. + 'AREA:err#FFD0D0 '. 'LINE1:a#FF0000:"entries " GPRINT:a:LAST:"Current\:%8.0lf" GPRINT:a:AVERAGE:"Average\:%8.0lf" GPRINT:a:MAX:"Maximum\:%8.0lf\n" '. 'LINE1:b#FF00FF:"gc_total " GPRINT:b:LAST:"Current\:%8.0lf" GPRINT:b:AVERAGE:"Average\:%8.0lf" GPRINT:b:MAX:"Maximum\:%8.0lf\n" '. 'LINE1:c#0000FF:"gc_ignored " GPRINT:c:LAST:"Current\:%8.0lf" GPRINT:c:AVERAGE:"Average\:%8.0lf" GPRINT:c:MAX:"Maximum\:%8.0lf\n" '. @@ -581,6 +734,8 @@ function show_rrd($conf) { 'CDEF:jj=j,-1,* '. 'CDEF:kk=k,-1,* '. 'CDEF:ll=l,-1,* '. + 'CDEF:oerr=a,UN,INF,UNKN,IF CDEF:ierr=i,UN,-INF,UNKN,IF '. + 'AREA:ierr#FFD0D0 AREA:oerr#FFD0D0 '. 'LINE1:a#FF0000:"in_hit " GPRINT:a:LAST:"Current\:%8.0lf" GPRINT:a:AVERAGE:"Average\:%8.0lf" GPRINT:a:MAX:"Maximum\:%8.0lf\n" '. 'LINE1:b#FF00FF:"in_slow_tot " GPRINT:b:LAST:"Current\:%8.0lf" GPRINT:b:AVERAGE:"Average\:%8.0lf" GPRINT:b:MAX:"Maximum\:%8.0lf\n" '. 'LINE1:c#0000FF:"in_slow_mc " GPRINT:c:LAST:"Current\:%8.0lf" GPRINT:c:AVERAGE:"Average\:%8.0lf" GPRINT:c:MAX:"Maximum\:%8.0lf\n" '. @@ -603,6 +758,8 @@ function show_rrd($conf) { 'CDEF:a=aa,1024,* '. 'CDEF:b=bb,1024,* '. 'CDEF:x=aa,bb,-,1024,* '. + 'CDEF:err=a,UN,INF,UNKN,IF '. + 'AREA:err#FFD0D0 '. 'LINE1:a#000000:"Total Swap " GPRINT:a:LAST:"Current\:%8.2lf %s\n" '. 'AREA:x#FF0000:"Used Swap " GPRINT:x:LAST:"Current\:%8.2lf %s" GPRINT:x:AVERAGE:"Average\:%8.2lf %s" GPRINT:x:MAX:"Maximum\:%8.2lf %s\n" '. 'STACK:b#00CF00:"Free Swap " GPRINT:b:LAST:"Current\:%8.2lf %s" GPRINT:b:AVERAGE:"Average\:%8.2lf %s" GPRINT:b:MAX:"Maximum\:%8.2lf %s\n" '; @@ -614,6 +771,8 @@ function show_rrd($conf) { "DEF:idles={$rrdfile}:idletime:AVERAGE ". 'CDEF:up=ups,86400,/ '. 'CDEF:idle=idles,86400,/ '. + 'CDEF:err=ups,UN,INF,UNKN,IF '. + 'AREA:err#FFD0D0 '. 'AREA:up#00CF00:"Uptime " '. 'LINE1:idle#002A97:"Idletime "'; break; @@ -627,6 +786,8 @@ function show_rrd($conf) { "DEF:d={$rrdfile}:pgfree:AVERAGE ". "DEF:e={$rrdfile}:pgfault:AVERAGE ". "CDEF:ee=e,-1,* ". + 'CDEF:oerr=a,UN,INF,UNKN,IF CDEF:ierr=e,UN,-INF,UNKN,IF '. + 'AREA:ierr#FFD0D0 AREA:oerr#FFD0D0 '. 'HRULE:0#FF0000: '. 'AREA:c#FF0000:"pgalloc_dma " GPRINT:c:LAST:"Current\:%8.2lf %s" GPRINT:c:AVERAGE:"Average\:%8.2lf %s" GPRINT:c:MAX:"Maximum\:%8.2lf %s\n" '. 'STACK:b#00CF00:"pgalloc_normal " GPRINT:b:LAST:"Current\:%8.2lf %s" GPRINT:b:AVERAGE:"Average\:%8.2lf %s" GPRINT:b:MAX:"Maximum\:%8.2lf %s\n" '.