function create_graph($output, $start, $title) { $rrd = '/opt/minepeon/var/rrd/'; $png = '/opt/minepeon/http/rrd/'; $options = array('--slope-mode', '--start', $start, '--title=' . $title, '--vertical-label=Hash per second', '--lower=0', '--color=BACK#fff', '--color=CANVAS#fff', '--color=SHADEB#fff', '--color=SHADEA#fff', 'DEF:hashrate=' . $rrd . 'hashrate.rrd:hashrate:AVERAGE', 'CDEF:realspeed=hashrate,1000,*', 'AREA:realspeed#ddd', 'LINE:realspeed#000'); return rrd_graph($png . $output, $options); }
public static function createRRDGraph($filename, $options) { $config = json_decode(file_get_contents("config.json"), true); $options[] = "--watermark"; $options[] = $config["communityName"] . " - " . date("c"); $ret = rrd_graph($filename, $options); echo rrd_error(); }
function create_graph($output, $start, $title) { $options = array("--slope-mode", "--start", $start, "--title={$title}", "--vertical-label=Load 0 -> 30", "--alt-autoscale-max", "--lower-limit=0", "--lower=0", "DEF:load2mn=/usr/share/artica-postfix/ressources/databases/rrd/load.rrd:load:AVERAGE", "LINE:load2mn#00FF00:Load average", "GPRINT:load2mn:AVERAGE:Avg\\: %3.2lf", "GPRINT:load2mn:MAX:Max\\:%3.2lf"); $ret = rrd_graph($output, $options, count($options)); if (!$ret) { echo "<b>Graph error: </b>" . rrd_error() . "\n"; } }
function create_graph($output, $start, $title) { $RRDPATH = '/opt/minepeon/var/rrd/'; $options = array("--slope-mode", "--start", $start, "--title={$title}", "--vertical-label=Hash per second", "--lower=0", "DEF:hashrate=" . $RRDPATH . "hashrate.rrd:hashrate:AVERAGE", "CDEF:realspeed=hashrate,1000,*", "LINE2:realspeed#FF0000"); $ret = rrd_graph("/opt/minepeon/http/rrd/" . $output, $options); if (!$ret) { //echo "<b>Graph error: </b>".rrd_error()."\n"; } }
function execute($filename) { $return = rrd_graph($this->graphics_path . $filename, $this->options, count($this->options)); if (!is_array($return)) { throw new Rrdtool_Exception("rrd_graph() ERROR: " . rrd_error()); } else { return $return; } }
function storagegraphWin($rrd, $graph, $from = "-2d", $descr) { $database = "rrd/" . $rrd; $imgfile = "graphs/" . "{$graph}"; $opts = array("--start", $from, "-v MB", "-b 1024", "--rigid", "--title", $descr, "--alt-autoscale-max", "-l 0", "--width", "335", "--height", "100", "DEF:size={$database}:size:AVERAGE", "DEF:used={$database}:used:AVERAGE", "AREA:size#80ee80:Total", "GPRINT:size:LAST:Cur\\:%8.2lf %s", "GPRINT:size:AVERAGE: Avg\\:%8.2lf %s", "GPRINT:size:MAX: Max\\:%8.2lf %s\\n", "AREA:used#ec9900:Used", "GPRINT:used:LAST: Cur\\:%8.2lf %s", "GPRINT:used:AVERAGE: Avg\\:%8.2lf %s", "GPRINT:used:MAX: Max\\:%8.2lf %s\\n", "LINE1:size#000000:"); $ret = rrd_graph("{$imgfile}", $opts, count($opts)); if (!is_array($ret)) { $err = rrd_error(); echo "rrd_graph() ERROR: {$err}\n"; return FALSE; } else { return $imgfile; } }
function create_image($rrd_file, $image_file, $time = '1d', $type = 'traffic') { switch ($type) { case 'traffic': $opts = array("--imgformat=PNG", "--start=-" . $time, "--end=-300", "--title=Traffic graph", "--rigid", "--base=1000", "--height=120", "--width=500", "--alt-autoscale-max", "--lower-limit=0", "--vertical-label=bits per second", "--slope-mode", "DEF:a=" . $rrd_file . ":traffic_in:AVERAGE", "DEF:b=" . $rrd_file . ":traffic_out:AVERAGE", "CDEF:cdefa=a,8,*", "CDEF:cdefe=b,8,*", "AREA:cdefa#00E600: Inbound", "GPRINT:cdefa:LAST:Current\\:%8.2lf %s", "GPRINT:cdefa:AVERAGE:Average\\:%8.2lf %s", "GPRINT:cdefa:MAX:Maximum\\:%8.2lf %s\\n", "LINE1:cdefe#002A97:Outbound", "GPRINT:cdefe:LAST:Current\\:%8.2lf %s", "GPRINT:cdefe:AVERAGE:Average\\:%8.2lf %s", "GPRINT:cdefe:MAX:Maximum\\:%8.2lf %s\\n"); break; } $ret = rrd_graph($image_file, $opts, count($opts)); if (!is_array($ret)) { $error = rrd_error(); print $error; return false; } else { return true; } }
function callsgraphSNOM($rrd, $graph, $from, $to, $width, $height, $title, $vertical) { global $config; $database = $config['rrd_dir'] . '/' . $rrd; $imgfile = 'graphs/' . "{$graph}"; $optsa = array('--start', $from, '--end', $to, '--width', $width, '--height', $height, '--vertical-label', $vertical, '--alt-autoscale-max', '-l 0', '-E', '--title', $title, "DEF:call={$database}:CALLS:AVERAGE", 'CDEF:calls=call,360,*', 'LINE1.25:calls#FF9900:Calls', 'GPRINT:calls:LAST:Cu\\: %2.0lf/min', 'GPRINT:calls:AVERAGE:Av\\: %2.0lf/min', "GPRINT:calls:MAX:Mx\\: %2.0lf/min\\n"); if ($width <= '300') { $optsb = array('--font', 'LEGEND:7:' . $config['mono_font'] . '', '--font', 'AXIS:6:' . $config['mono_font'] . '', '--font-render-mode', 'normal'); } $opts = array_merge($config['rrdgraph_defaults'], $optsa, $optsb); $ret = rrd_graph("{$imgfile}", $opts, count($opts)); if (!is_array($ret)) { $err = rrd_error(); echo "rrd_graph() ERROR: {$err}\n"; return false; } else { return $imgfile; } }
function memgraphHP($rrd, $graph, $from, $to, $width, $height, $title, $vertical) { global $config, $installdir; $database = "rrd/" . $rrd; $memrrd = $database; $opts = array("--start", "{$from}", "--alt-autoscale-max", "--width", "{$width}", "--height", "{$height}", "-l", "0", "-E", "-b", "1024", "DEF:TOTAL={$memrrd}:TOTAL:AVERAGE", "DEF:FREE={$memrrd}:FREE:AVERAGE", "DEF:USED={$memrrd}:USED:AVERAGE", "AREA:USED#ee9900:Used", "AREA:FREE#FAFDCE:Free:STACK", "LINE1.5:TOTAL#cc0000:"); if ($width <= "300") { $optsb = array("--font", "LEGEND:7:" . $config['mono_font'] . "", "--font", "AXIS:6:" . $config['mono_font'] . "", "--font-render-mode", "normal"); } $opts = array_merge($config['rrdgraph_defaults'], ${$opts}, $optsb); $ret = rrd_graph("{$graph}", $opts, count($opts)); if (!is_array($ret)) { $err = rrd_error(); #echo "rrd_graph() ERROR: $err\n"; return FALSE; } else { return $graph; } }
function callsgraphSNOM($rrd, $graph, $from, $to, $width, $height, $title, $vertical) { global $config; $database = $config['rrd_dir'] . "/" . $rrd; $imgfile = "graphs/" . "{$graph}"; $optsa = array("--start", $from, "--end", $to, "--width", $width, "--height", $height, "--vertical-label", $vertical, "--alt-autoscale-max", "-l 0", "-E", "--title", $title, "DEF:call={$database}:CALLS:AVERAGE", "CDEF:calls=call,360,*", "LINE1.25:calls#FF9900:Calls", "GPRINT:calls:LAST:Cu\\: %2.0lf/min", "GPRINT:calls:AVERAGE:Av\\: %2.0lf/min", "GPRINT:calls:MAX:Mx\\: %2.0lf/min\\n"); if ($width <= "300") { $optsb = array("--font", "LEGEND:7:" . $config['mono_font'] . "", "--font", "AXIS:6:" . $config['mono_font'] . "", "--font-render-mode", "normal"); } $opts = array_merge($config['rrdgraph_defaults'], $optsa, $optsb); $ret = rrd_graph("{$imgfile}", $opts, count($opts)); if (!is_array($ret)) { $err = rrd_error(); echo "rrd_graph() ERROR: {$err}\n"; return FALSE; } else { return $imgfile; } }
$nameg = "Req/sec"; } elseif ($smet == "B_S") { $namel = "Bytes/second"; $nameg = "B/sec"; } elseif ($smet == "B_R") { $namel = "Bytes/request"; $nameg = "B/req"; } echo "<br>{$name}"; $rrdgraph = array("--slope-mode", "--start", "-1h", "--end", "{$time}", "--vertical-label", "{$namel}"); $an = 1; foreach ($server as $servername) { $color = str_pad(dechex(mt_rand(0, 0xffffff)), 6, '0', STR_PAD_LEFT); array_push($rrdgraph, "DEF:{$smet}{$an}={$path}/{$servername}.rrd:{$smet}:AVERAGE", "LINE:{$smet}{$an}#{$color}:{$namel}-{$servername}", "GPRINT:{$smet}{$an}:LAST:Current {$nameg} = %6.2lf {$nameg}"); $an++; } $ret = rrd_graph("{$path}/{$smet}.png", $rrdgraph); echo rrd_error(); echo "<br><img src='view.php?name={$smet}'/><br>"; } } ?> </table> </center> </table> </div> </body> </html>
public function build($action, $settings) { global $config, $_theme, $argv; if (!$settings) { error('This theme is not currently installed.'); } $this->boards = explode(' ', $settings['boards']); $this->spans = array('hour', 'day', 'week', 'month', 'year'); // exclude boards from the "combined" graph $this->combined_exclude = array(); if ($action == 'cron') { if (!file_exists($settings['path'])) { mkdir($settings['path']); } if (!file_exists($settings['images'])) { mkdir($settings['images']); } foreach ($this->boards as &$board) { $file = $settings['path'] . '/' . $board . '.rrd'; if (!file_exists($file)) { // Create graph if (!rrd_create($file, array('-s 60', 'DS:posts:COUNTER:86400:0:10000', 'RRA:AVERAGE:0:1:60', 'RRA:AVERAGE:0:1:1440', 'RRA:AVERAGE:0:30:10080', 'RRA:AVERAGE:0:120:43829', 'RRA:AVERAGE:0:1440:525948', 'RRA:AVERAGE:0:2880:1051897', 'RRA:MAX:0:1:60', 'RRA:MAX:0:1:1440', 'RRA:MAX:0:30:10080', 'RRA:MAX:0:120:43829', 'RRA:MAX:0:1440:525948', 'RRA:MAX:0:2880:1051897'))) { error('RRDtool failed: ' . htmlentities(rrd_error())); } } // debug just the graphing (not updating) with the --debug switch if (!isset($argv[1]) || $argv[1] != '--debug') { // Update graph $query = query(sprintf("SELECT MAX(`id`) AS `count` FROM `posts_%s`", $board)); $count = $query->fetch(); $count = $count['count']; if (!rrd_update($file, array('-t', 'posts', 'N:' . $count))) { error('RRDtool failed: ' . htmlentities(rrd_error())); } } foreach ($this->spans as &$span) { // Graph graph if (!rrd_graph($settings['images'] . '/' . $board . '-' . $span . '.png', array('-s -1' . $span, '-t Posts on ' . sprintf($config['board_abbreviation'], $board) . ' this ' . $span, '--lazy', '-l 0', '-h', $settings['height'], '-w', $settings['width'], '-a', 'PNG', '-R', 'mono', '-W', 'Powered by Tinyboard', '-E', '-X', '0', '-Y', '-v posts/' . $settings['rate'], 'DEF:posts-second=' . $file . ':posts:AVERAGE', 'CDEF:posts-minute=posts-second,60,*', 'CDEF:posts-hour=posts-minute,60,*', 'CDEF:posts-day=posts-hour,24,*', 'CDEF:posts-week=posts-day,7,*', 'CDEF:posts-month=posts-day,28,*', 'CDEF:posts-year=posts-day,365,*', 'DEF:posts=' . $file . ':posts:AVERAGE', 'LINE2:posts-' . $settings['rate'] . '#663300:Posts', 'GPRINT:posts-' . $settings['rate'] . ':MAX:Max\\: %5.2lf', 'GPRINT:posts-' . $settings['rate'] . ':AVERAGE:Average\\: %5.2lf', 'GPRINT:posts-' . $settings['rate'] . ':LAST:Current\\: %5.2lf posts/' . $settings['rate'], 'HRULE:0#000000'))) { error('RRDtool failed: ' . htmlentities(rrd_error())); } } } // combined graph foreach ($this->spans as &$span) { $options = array('-s -1' . $span, '-t Posts this ' . $span, '--lazy', '-l 0', '-h', $settings['height'], '-w', $settings['width'], '-a', 'PNG', '-R', 'mono', '-W', 'Powered by Tinyboard', '-E', '-X', '0', '-Y', '-v posts/' . $settings['rate']); $red = 0; $green = 0; $blue = 0; $c = 0; $cc = 0; $c = 1; $cc = 0; $red = 2; foreach ($this->boards as &$board) { if (in_array($board, $this->combined_exclude)) { continue; } $color = str_pad(dechex($red * 85), 2, '0', STR_PAD_LEFT) . str_pad(dechex($green * 85), 2, '0', STR_PAD_LEFT) . str_pad(dechex($blue * 85), 2, '0', STR_PAD_LEFT); $options[] = 'DEF:posts' . $board . '-second=' . $settings['path'] . '/' . $board . '.rrd' . ':posts:AVERAGE'; $options[] = 'CDEF:posts' . $board . '-minute=posts' . $board . '-second,60,*'; $options[] = 'CDEF:posts' . $board . '-hour=posts' . $board . '-minute,60,*'; $options[] = 'CDEF:posts' . $board . '-day=posts' . $board . '-hour,24,*'; $options[] = 'CDEF:posts' . $board . '-week=posts' . $board . '-day,7,*'; $options[] = 'CDEF:posts' . $board . '-month=posts' . $board . '-day,28,*'; $options[] = 'CDEF:posts' . $board . '-year=posts' . $board . '-day,365,*'; $options[] = 'LINE2:posts' . $board . '-' . $settings['rate'] . '#' . $color . ':' . sprintf($config['board_abbreviation'], $board); // Randomize colors using this horrible undocumented algorithm I threw together while debugging if ($c == 0) { $red++; } elseif ($c == 1) { $green++; } elseif ($c == 2) { $blue++; } elseif ($c == 3) { $green--; } elseif ($c == 4) { $red--; } $cc++; if ($cc > 2) { $c++; $cc = 0; } if ($c > 4) { $c = 0; } if ($red > 3) { $red = 0; } if ($green > 3) { $green = 0; } if ($blue > 3) { $blue = 0; } } $options[] = 'HRULE:0#000000'; if (!rrd_graph($settings['images'] . '/combined-' . $span . '.png', $options)) { error('RRDtool failed: ' . htmlentities(rrd_error())); } } } }
function tool_graphs_build_rrd($fname, $period = 0) { $rrdperiod = '-' . $period; $rrdfile = RRD_PATH . $fname; $webimage = GFX_PATH . $fname . '_' . $period . '.gif'; $opts = array("--start", $rrdperiod, "DEF:val=" . $rrdfile . ":var:AVERAGE", "LINE2:val#0000FF"); $ret = rrd_graph($webimage, $opts, count($opts)); if (is_array($ret)) { return array('status' => true, 'img' => $webimage); } $err = rrd_error(); return array('status' => false, 'error' => "Error: rrd_graph() -- {$err}"); }
function pre_graph($img, $opts, $count) { $tmp = "rrd_graph"; ${$img} = $opts; ${$tmp} = array("{$img}" => $opts); aslog(${$tmp}, 0, 'rrd_graph'); $pre_ret = rrd_graph($img, $opts, $count); aslog($pre_ret, 0, 'ret'); return $pre_ret; }
/* Вывод графиков загрузки порта */ /* За час */ $rrh = array("--start", "-1h", "--title={$row['1']}", "DEF:in={$homedir}/rrd/" . $id . "_" . $port . ".rrd:in:AVERAGE", "DEF:out={$homedir}/rrd/" . $id . "_" . $port . ".rrd:out:AVERAGE", "CDEF:inbits=in,8,*", "CDEF:outbits=out,8,*", "AREA:inbits#00CF00FF:In", "GPRINT:inbits:LAST: Current\\:%8.2lf %s", "GPRINT:inbits:AVERAGE:Average\\:%8.2lf %s", "GPRINT:inbits:MAX:Max\\:%8.2lf %s\\n", "LINE1:outbits#002A97FF:Out", "GPRINT:outbits:LAST:Current\\:%8.2lf %s", "GPRINT:outbits:AVERAGE:Average\\:%8.2lf %s", "GPRINT:outbits:MAX:Max\\:%8.2lf %s"); $resh = rrd_graph("{$homedir}/tmp/" . $id . "_" . $port . "_1h.png", $rrh, count($rrh)); /* За день */ $rrd = array("--start", "-1d", "--title={$row['1']}", "DEF:in={$homedir}/rrd/" . $id . "_" . $port . ".rrd:in:AVERAGE", "DEF:out={$homedir}/rrd/" . $id . "_" . $port . ".rrd:out:AVERAGE", "CDEF:inbits=in,8,*", "CDEF:outbits=out,8,*", "AREA:inbits#00CF00FF:In", "GPRINT:inbits:LAST: Current\\:%8.2lf %s", "GPRINT:inbits:AVERAGE:Average\\:%8.2lf %s", "GPRINT:inbits:MAX:Max\\:%8.2lf %s\\n", "LINE1:outbits#002A97FF:Out", "GPRINT:outbits:LAST:Current\\:%8.2lf %s", "GPRINT:outbits:AVERAGE:Average\\:%8.2lf %s", "GPRINT:outbits:MAX:Max\\:%8.2lf %s"); $resd = rrd_graph("{$homedir}/tmp/" . $id . "_" . $port . "_1d.png", $rrd, count($rrd)); /* За неделю */ $rrw = array("--start", "-1w", "--title={$row['1']}", "DEF:in={$homedir}/rrd/" . $id . "_" . $port . ".rrd:in:AVERAGE", "DEF:out={$homedir}/rrd/" . $id . "_" . $port . ".rrd:out:AVERAGE", "CDEF:inbits=in,8,*", "CDEF:outbits=out,8,*", "AREA:inbits#00CF00FF:In", "GPRINT:inbits:LAST: Current\\:%8.2lf %s", "GPRINT:inbits:AVERAGE:Average\\:%8.2lf %s", "GPRINT:inbits:MAX:Max\\:%8.2lf %s\\n", "LINE1:outbits#002A97FF:Out", "GPRINT:outbits:LAST:Current\\:%8.2lf %s", "GPRINT:outbits:AVERAGE:Average\\:%8.2lf %s", "GPRINT:outbits:MAX:Max\\:%8.2lf %s"); $resw = rrd_graph("{$homedir}/tmp/" . $id . "_" . $port . "_1w.png", $rrw, count($rrw)); /* За месяц */ $rrm = array("--start", "-1m", "--title={$row['1']}", "DEF:in={$homedir}/rrd/" . $id . "_" . $port . ".rrd:in:AVERAGE", "DEF:out={$homedir}/rrd/" . $id . "_" . $port . ".rrd:out:AVERAGE", "CDEF:inbits=in,8,*", "CDEF:outbits=out,8,*", "AREA:inbits#00CF00FF:In", "GPRINT:inbits:LAST: Current\\:%8.2lf %s", "GPRINT:inbits:AVERAGE:Average\\:%8.2lf %s", "GPRINT:inbits:MAX:Max\\:%8.2lf %s\\n", "LINE1:outbits#002A97FF:Out", "GPRINT:outbits:LAST:Current\\:%8.2lf %s", "GPRINT:outbits:AVERAGE:Average\\:%8.2lf %s", "GPRINT:outbits:MAX:Max\\:%8.2lf %s"); $resm = rrd_graph("{$homedir}/tmp/" . $id . "_" . $port . "_1m.png", $rrm, count($rrm)); /* За год */ $rry = array("--start", "-1y", "--title={$row['1']}", "DEF:in={$homedir}/rrd/" . $id . "_" . $port . ".rrd:in:AVERAGE", "DEF:out={$homedir}/rrd/" . $id . "_" . $port . ".rrd:out:AVERAGE", "CDEF:inbits=in,8,*", "CDEF:outbits=out,8,*", "AREA:inbits#00CF00FF:In", "GPRINT:inbits:LAST: Current\\:%8.2lf %s", "GPRINT:inbits:AVERAGE:Average\\:%8.2lf %s", "GPRINT:inbits:MAX:Max\\:%8.2lf %s\\n", "LINE1:outbits#002A97FF:Out", "GPRINT:outbits:LAST:Current\\:%8.2lf %s", "GPRINT:outbits:AVERAGE:Average\\:%8.2lf %s", "GPRINT:outbits:MAX:Max\\:%8.2lf %s"); $resy = rrd_graph("{$homedir}/tmp/" . $id . "_" . $port . "_1y.png", $rry, count($rry)); /* Вывод графиков */ print "<h4>За час</h4>"; print "<img src=tmp/" . $id . "_" . $port . "_1h.png>"; print "<h4>За День</h4>"; print "<img src=tmp/" . $id . "_" . $port . "_1d.png>"; print "<h4>За Неделю</h4>"; print "<img src=tmp/" . $id . "_" . $port . "_1w.png>"; print "<h4>За Месяц</h4>"; print "<img src=tmp/" . $id . "_" . $port . "_1m.png>"; print "<h4>За Год</h4>"; print "<img src=tmp/" . $id . "_" . $port . "_1y.png>"; print "<br />"; print "<br />"; print "| <a href=/yamaps.php>Карта</a> | <a href=/>Полотенце</a> |<br /><br />"; ?>
function drawCurrentVsActualTempGraph($period, $peerId) { $options = $this->tempGraphOptions; $options[] = "--title=Actual Temp vs. Configured Temp on Peer " . $peerId . " (" . $period . ")"; $options[] = "--vertical-label=°C"; $options[] = "--start"; $options[] = $this->graphPeriods[$period]; $options[] = "--upper-limit=30"; $i = 0; $this->colorIndex = 0; foreach ($this->devices as $device) { if ($device["type"] == "valve" && intval($device["peerId"]) == intval($peerId)) { $rrdPath = $this->rrdBasePath . "valves/peer_" . $device["peerId"] . ".rrd"; if (isset($device["tempSensor"]) && file_exists($rrdPath)) { $options[] = "DEF:temp" . $i . "=" . $rrdPath . ":temp:LAST"; $options[] = "LINE2:temp" . $i . $this->getColor() . ": Actual Temperature"; $options[] = "GPRINT:temp" . $i . ":LAST:%2.1lf°C"; $options[] = "DEF:configuredTemp" . $i . "=" . $rrdPath . ":configuredTemp:LAST"; $options[] = "LINE2:configuredTemp" . $i . $this->getColor() . ": Configured Temperature"; $options[] = "GPRINT:configuredTemp" . $i . ":LAST:%2.1lf°C"; $options[] = "COMMENT:\\n"; $i++; } } } if ($i == 0) { $options[] = "ERROR: Device " . $peerId . " not found or not a valve!"; } if (!rrd_graph($this->rrdBasePath . "output/" . $peerId . "_CurrentVsActual_" . $period . ".gif", $options)) { echo "RRD ERROR: " . rrd_error() . "\n"; print_r($options); } }
function graph_err($range, $file) { global $points_per_sample, $xpoints, $ypoints_err, $rrd, $rrd_virus, $color; $step = $range * $points_per_sample / $xpoints; rrd_graph($range, $file, $ypoints_err, " DEF:bounced={$rrd}:bounced:AVERAGE" . " DEF:mbounced={$rrd}:bounced:MAX" . " CDEF:rbounced='bounced,60,*'" . " CDEF:dbounced='bounced,UN,0,bounced,IF,{$step},*'" . " CDEF:sbounced='PREV,UN,dbounced,PREV,IF,dbounced,+'" . " CDEF:rmbounced='mbounced,60,*'" . " AREA:rbounced#" . $color['bounced'] . ":'Bounced '" . " GPRINT:sbounced:MAX:'total\\: %8.0lf msgs'" . " GPRINT:rbounced:AVERAGE:'avg\\: %5.2lf msgs/min'" . " GPRINT:rmbounced:MAX:'max\\: %4.0lf msgs/min\\l'" . " DEF:virus='{$rrd_virus}:virus:AVERAGE'" . " DEF:mvirus='{$rrd_virus}:virus:MAX'" . " CDEF:rvirus='virus,60,*'" . " CDEF:dvirus='virus,UN,0,virus,IF,{$step},*'" . " CDEF:svirus='PREV,UN,dvirus,PREV,IF,dvirus,+'" . " CDEF:rmvirus='mvirus,60,*'" . " STACK:rvirus#" . $color['virus'] . ":'Viruses '" . " GPRINT:svirus:MAX:'total\\: %8.0lf msgs'" . " GPRINT:rvirus:AVERAGE:'avg\\: %5.2lf msgs/min'" . " GPRINT:rmvirus:MAX:'max\\: %4.0lf msgs/min\\l'" . " DEF:spam='{$rrd_virus}:spam:AVERAGE'" . " DEF:mspam='{$rrd_virus}:spam:MAX'" . " CDEF:rspam='spam,60,*'" . " CDEF:dspam='spam,UN,0,spam,IF,{$step},*'" . " CDEF:sspam='PREV,UN,dspam,PREV,IF,dspam,+'" . " CDEF:rmspam='mspam,60,*'" . " STACK:rspam#" . $color['spam'] . ":'Spam '" . " GPRINT:sspam:MAX:'total\\: %8.0lf msgs'" . " GPRINT:rspam:AVERAGE:'avg\\: %5.2lf msgs/min'" . " GPRINT:rmspam:MAX:'max\\: %4.0lf msgs/min\\l'" . " DEF:rejected='{$rrd}:rejected:AVERAGE'" . " DEF:mrejected='{$rrd}:rejected:MAX'" . " CDEF:rrejected='rejected,60,*'" . " CDEF:drejected='rejected,UN,0,rejected,IF,{$step},*'" . " CDEF:srejected='PREV,UN,drejected,PREV,IF,drejected,+'" . " CDEF:rmrejected='mrejected,60,*'" . " LINE2:rrejected#" . $color['rejected'] . ":'Rejected'" . " GPRINT:srejected:MAX:'total\\: %8.0lf msgs'" . " GPRINT:rrejected:AVERAGE:'avg\\: %5.2lf msgs/min'" . " GPRINT:rmrejected:MAX:'max\\: %4.0lf msgs/min\\l'"); }
$in = $name[0]; $COMMUNITY = $name[1]; $IP = $name[2]; $PORT = $name[3]; $now = time(); $path = dirname(__FILE__); $device = "{$COMMUNITY}" . "_" . "{$IP}" . "_" . "{$PORT}"; echo "<br>Graphs for the device with IP {$IP}, COMMUNITY {$COMMUNITY} and PORT {$PORT}<br>"; $a = array("-1d:Daily", "-1w:Weekly", "-1m:Monthly", "-1y:Yearly"); foreach ($a as $x) { $b = explode(':', $x); $span = $b[0]; $name = $b[1]; $rrdgraph = array("--slope-mode", "--start", "{$span}", "--end", $now, "--vertical-label", "Bytes per second"); $color = str_pad(dechex(mt_rand(0, 0xffffff)), 6, '0', STR_PAD_LEFT); array_push($rrdgraph, "DEF:input{$in}={$device}.rrd:input{$in}:AVERAGE", "LINE:input{$in}#{$color}:Input{$in}", "GPRINT:input{$in}:LAST:Current Input = %6.2lf %SBps"); $color = str_pad(dechex(mt_rand(0, 0xffffff)), 6, '0', STR_PAD_LEFT); array_push($rrdgraph, "DEF:output{$in}={$device}.rrd:output{$in}:AVERAGE", "LINE:output{$in}#{$color}:Output{$in}", "GPRINT:output{$in}:LAST:Current Output = %6.2lf %SBps"); $ret = rrd_graph("{$path}/{$device}{$span}.png", $rrdgraph); echo rrd_error(); echo "<br> {$name} Graph"; echo "<br><img src='view.php?name={$device}{$span}'/><br>"; } ?> </center> </table> </div> </body> </html>
protected static function getItemValue($hostname, $categoryId, $item, $param) { if (isset($item["VALUE"])) { return $item["VALUE"]; } if (isset($item["VALUE_FUNC"])) { return call_user_func_array($item["VALUE_FUNC"], isset($item["FUNC_PARAMS"]) ? $item["FUNC_PARAMS"] : array()); } if ((!$item["RRD"] || !$item["CF"]) && !$item["OPTIONS"]) { throw new \Exception("Monitoring param item in category " . $categoryId . " has no RRD or CF fields."); } if (isset($item["RRD"])) { $rrdFile = str_replace('##HOSTNAME##', $hostname, $item["RRD"]); $rrdPath = static::$rrdPath . "/" . $hostname . "/" . $rrdFile; $file = new \Bitrix\Main\IO\File($rrdPath); if (!$file->isExists()) { throw new \Bitrix\Main\IO\FileNotFoundException($rrdPath); } $first = \rrd_first($rrdPath); $last = \rrd_last($rrdPath); } if (isset($item["OPTIONS"])) { $arOpts = $item["OPTIONS"]; $arOpts = str_replace('##HOSTNAME##', $hostname, $arOpts); } else { if ($item["CF"] == "MIN") { $agr = "MINIMUM"; } elseif ($item["CF"] == "MAX") { $agr = "MAXIMUM"; } else { $agr = $item["CF"]; } if ($item["CF"] == "LAST") { $item["CF"] = "AVERAGE"; } $format = isset($item["FORMAT"]) ? $item["FORMAT"] : "%6.2lf"; $arOpts = array("DEF:val=" . $rrdPath . ":42:" . $item["CF"], "VDEF:vval=val," . $agr, "PRINT:vval:" . $format); } if (isset($item["RRD"])) { $arOpts[] = "--start"; $arOpts[] = $first; $arOpts[] = "--end"; $arOpts[] = $last; } $data = \rrd_graph("/dev/null", $arOpts); if (isset($item["DATA_FUNC"])) { $func = create_function('$data', $item["DATA_FUNC"]); if (is_callable($func)) { $result = $func($data); } } else { if (isset($data["calcpr"])) { $data["data"] = $data["calcpr"]; } $result = static::extractRrdValue($data); } return $result; }