diff options
author | Renato Botelho <renato@netgate.com> | 2015-08-25 08:08:24 -0300 |
---|---|---|
committer | Renato Botelho <renato@netgate.com> | 2015-08-25 14:49:54 -0300 |
commit | 46bc6e545a17e77202aaf01ec0cd8d5a46567525 (patch) | |
tree | 32d18dda436ec739c67c489ceb771e8629cd926f /etc/inc/rrd.inc | |
parent | 4d9801c2dbd2b3e54a39578ee62b93af66607227 (diff) | |
download | pfsense-46bc6e545a17e77202aaf01ec0cd8d5a46567525.zip pfsense-46bc6e545a17e77202aaf01ec0cd8d5a46567525.tar.gz |
Move main pfSense content to src/
Diffstat (limited to 'etc/inc/rrd.inc')
-rw-r--r-- | etc/inc/rrd.inc | 989 |
1 files changed, 0 insertions, 989 deletions
diff --git a/etc/inc/rrd.inc b/etc/inc/rrd.inc deleted file mode 100644 index 86148d6..0000000 --- a/etc/inc/rrd.inc +++ /dev/null @@ -1,989 +0,0 @@ -<?php -/* $Id$ */ -/* - rrd.inc - Copyright (C) 2010 Seth Mos <seth.mos@dds.nl> - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - - */ - -/* - pfSense_BUILDER_BINARIES: /bin/rm /usr/bin/nice /usr/local/bin/rrdtool /bin/cd - pfSense_MODULE: rrd -*/ - -/* include all configuration functions */ - -function dump_rrd_to_xml($rrddatabase, $xmldumpfile) { - $rrdtool = "/usr/bin/nice -n20 /usr/local/bin/rrdtool"; - unlink_if_exists($xmldumpfile); - - exec("$rrdtool dump " . escapeshellarg($rrddatabase) . " {$xmldumpfile} 2>&1", $dumpout, $dumpret); - if ($dumpret <> 0) { - $dumpout = implode(" ", $dumpout); - log_error(sprintf(gettext('RRD dump failed exited with %1$s, the error is: %2$s'), $dumpret, $dumpout)); - } - return($dumpret); -} - -function restore_rrd() { - global $g, $config; - - $rrddbpath = "/var/db/rrd/"; - $rrdtool = "/usr/bin/nice -n20 /usr/local/bin/rrdtool"; - - $rrdrestore = ""; - $rrdreturn = ""; - if (file_exists("{$g['cf_conf_path']}/rrd.tgz") && (isset($config['system']['use_mfs_tmpvar']) || $g['platform'] != "pfSense")) { - foreach (glob("{$rrddbpath}/*.xml") as $xml_file) { - @unlink($xml_file); - } - unset($rrdrestore); - $_gb = exec("cd /;LANG=C /usr/bin/tar -tf {$g['cf_conf_path']}/rrd.tgz", $rrdrestore, $rrdreturn); - if ($rrdreturn != 0) { - log_error("RRD restore failed exited with $rrdreturn, the error is: $rrdrestore\n"); - return; - } - foreach ($rrdrestore as $xml_file) { - $rrd_file = '/' . substr($xml_file, 0, -4) . '.rrd'; - if (file_exists("{$rrd_file}")) { - @unlink($rrd_file); - } - file_put_contents("{$g['tmp_path']}/rrd_restore", $xml_file); - $_gb = exec("cd /;LANG=C /usr/bin/tar -xf {$g['cf_conf_path']}/rrd.tgz -T {$g['tmp_path']}/rrd_restore"); - if (!file_exists("/{$xml_file}")) { - log_error("Could not extract {$xml_file} RRD xml file from archive!"); - continue; - } - $_gb = exec("$rrdtool restore -f '/{$xml_file}' '{$rrd_file}'", $output, $status); - if ($status) { - log_error("rrdtool restore -f '{$xml_file}' '{$rrd_file}' failed returning {$status}."); - continue; - } - unset($output); - @unlink("/{$xml_file}"); - } - unset($rrdrestore); - @unlink("{$g['tmp_path']}/rrd_restore"); - /* If this backup is still there on a full install, but we aren't going to use ram disks, remove the archive since this is a transition. */ - if (($g['platform'] == "pfSense") && !isset($config['system']['use_mfs_tmpvar'])) { - unlink_if_exists("{$g['cf_conf_path']}/rrd.tgz"); - } - return true; - } - return false; -} - -function create_new_rrd($rrdcreatecmd) { - $rrdcreateoutput = array(); - $rrdcreatereturn = 0; - $_gb = exec("$rrdcreatecmd 2>&1", $rrdcreateoutput, $rrdcreatereturn); - if ($rrdcreatereturn <> 0) { - $rrdcreateoutput = implode(" ", $rrdcreateoutput); - log_error(sprintf(gettext('RRD create failed exited with %1$s, the error is: %2$s'), $rrdcreatereturn, $rrdcreateoutput)); - } - unset($rrdcreateoutput); - return $rrdcreatereturn; -} - -function migrate_rrd_format($rrdoldxml, $rrdnewxml) { - if (!file_exists("/tmp/rrd_notice_sent.txt")) { - $_gb = exec("echo 'Converting RRD configuration to new format. This might take a bit...' | wall"); - @touch("/tmp/rrd_notice_sent.txt"); - } - $numrraold = count($rrdoldxml['rra']); - $numrranew = count($rrdnewxml['rra']); - $numdsold = count($rrdoldxml['ds']); - $numdsnew = count($rrdnewxml['ds']); - log_error(sprintf(gettext('Import RRD has %1$s DS values and %2$s RRA databases, new format RRD has %3$s DS values and %4$s RRA databases'), $numdsold, $numrraold, $numdsnew , $numrranew)); - - /* add data sources not found in the old array from the new array */ - $i = 0; - foreach ($rrdnewxml['ds'] as $ds) { - if (!is_array($rrdoldxml['ds'][$i])) { - $rrdoldxml['ds'][$i] = $rrdnewxml['ds'][$i]; - /* set unknown values to 0 */ - $rrdoldxml['ds'][$i]['last_ds'] = " 0.0000000000e+00 "; - $rrdoldxml['ds'][$i]['value'] = " 0.0000000000e+00 "; - $rrdoldxml['ds'][$i]['unknown_sec'] = "0"; - } - $i++; - } - - $i = 0; - $rracountold = count($rrdoldxml['rra']); - $rracountnew = count($rrdnewxml['rra']); - /* process each RRA, which contain a database */ - foreach ($rrdnewxml['rra'] as $rra) { - if (!is_array($rrdoldxml['rra'][$i])) { - $rrdoldxml['rra'][$i] = $rrdnewxml['rra'][$i]; - } - - $d = 0; - /* process cdp_prep */ - $cdp_prep = $rra['cdp_prep']; - foreach ($cdp_prep['ds'] as $ds) { - if (!is_array($rrdoldxml['rra'][$i]['cdp_prep']['ds'][$d])) { - $rrdoldxml['rra'][$i]['cdp_prep']['ds'][$d] = $rrdnewxml['rra'][$i]['cdp_prep']['ds'][$d]; - $rrdoldxml['rra'][$i]['cdp_prep']['ds'][$d]['primary_value'] = " 0.0000000000e+00 "; - $rrdoldxml['rra'][$i]['cdp_prep']['ds'][$d]['secondary_value'] = " 0.0000000000e+00 "; - $rrdoldxml['rra'][$i]['cdp_prep']['ds'][$d]['value'] = " 0.0000000000e+00 "; - $rrdoldxml['rra'][$i]['cdp_prep']['ds'][$d]['unknown_datapoints'] = "0"; - } - $d++; - } - - /* process database */ - $rows = $rra['database']; - $k = 0; - $rowcountold = count($rrdoldxml['rra'][$i]['database']['row']); - $rowcountnew = count($rrdnewxml['rra'][$i]['database']['row']); - $rowcountdiff = $rowcountnew - $rowcountold; - /* save old rows for a bit before we put the required empty rows before it */ - $rowsdata = $rows; - $rowsempty = array(); - $r = 0; - while ($r < $rowcountdiff) { - $rowsempty[] = $rrdnewxml['rra'][$i]['database']['row'][$r]; - $r++; - } - $rows = $rowsempty + $rowsdata; - /* now foreach the rows in the database */ - foreach ($rows['row'] as $row) { - if (!is_array($rrdoldxml['rra'][$i]['database']['row'][$k])) { - $rrdoldxml['rra'][$i]['database']['row'][$k] = $rrdnewxml['rra'][$i]['database']['row'][$k]; - } - $m = 0; - $vcountold = count($rrdoldxml['rra'][$i]['database']['row'][$k]['v']); - $vcountnew = count($rrdnewxml['rra'][$i]['database']['row'][$k]['v']); - foreach ($row['v'] as $value) { - if (empty($rrdoldxml['rra'][$i]['database']['row'][$k]['v'][$m])) { - if (isset($valid)) { - $rrdoldxml['rra'][$i]['database']['row'][$k]['v'][$m] = "0.0000000000e+00 "; - } else { - $rrdoldxml['rra'][$i]['database']['row'][$k]['v'][$m] = $rrdnewxml['rra'][$i]['database']['row'][$k]['v'][$m]; - } - } else { - if ($value <> " NaN ") { - $valid = true; - } else { - $valid = false; - } - } - $m++; - } - $k++; - } - $i++; - } - - $numrranew = count($rrdoldxml['rra']); - $numdsnew = count($rrdoldxml['ds']); - log_error(sprintf(gettext('The new RRD now has %1$s DS values and %2$s RRA databases'), $numdsnew, $numrranew)); - return $rrdoldxml; -} - -function enable_rrd_graphing() { - global $config, $g, $altq_list_queues; - - if (platform_booting()) { - echo gettext("Generating RRD graphs..."); - } - - $rrddbpath = "/var/db/rrd/"; - $rrdgraphpath = "/usr/local/www/rrd"; - - $traffic = "-traffic.rrd"; - $packets = "-packets.rrd"; - $states = "-states.rrd"; - $wireless = "-wireless.rrd"; - $queues = "-queues.rrd"; - $queuesdrop = "-queuedrops.rrd"; - $spamd = "-spamd.rrd"; - $proc = "-processor.rrd"; - $mem = "-memory.rrd"; - $mbuf = "-mbuf.rrd"; - $cellular = "-cellular.rrd"; - $vpnusers = "-vpnusers.rrd"; - $captiveportalconcurrent = "-concurrent.rrd"; - $captiveportalloggedin = "-loggedin.rrd"; - $ntpd = "ntpd.rrd"; - - $rrdtool = "/usr/bin/nice -n20 /usr/local/bin/rrdtool"; - $netstat = "/usr/bin/netstat"; - $awk = "/usr/bin/awk"; - $tar = "/usr/bin/tar"; - $pfctl = "/sbin/pfctl"; - $sysctl = "/sbin/sysctl"; - $php = "/usr/local/bin/php-cgi"; - $cpustats = "/usr/local/sbin/cpustats"; - $spamd_gather = "/usr/local/bin/spamd_gather_stats.php"; - $ifconfig = "/sbin/ifconfig"; - $captiveportal_gather = "/usr/local/bin/captiveportal_gather_stats.php"; - $ntpq = "/usr/local/sbin/ntpq"; - - $rrdtrafficinterval = 60; - $rrdwirelessinterval = 60; - $rrdqueuesinterval = 60; - $rrdqueuesdropinterval = 60; - $rrdpacketsinterval = 60; - $rrdstatesinterval = 60; - $rrdspamdinterval = 60; - $rrdlbpoolinterval = 60; - $rrdprocinterval = 60; - $rrdmeminterval = 60; - $rrdmbufinterval = 60; - $rrdcellularinterval = 60; - $rrdvpninterval = 60; - $rrdcaptiveportalinterval = 60; - $rrdntpdinterval = 60; - - $trafficvalid = $rrdtrafficinterval * 2; - $wirelessvalid = $rrdwirelessinterval * 2; - $queuesvalid = $rrdqueuesinterval * 2; - $queuesdropvalid = $rrdqueuesdropinterval * 2; - $packetsvalid = $rrdpacketsinterval * 2; - $statesvalid = $rrdstatesinterval*2; - $spamdvalid = $rrdspamdinterval * 2; - $lbpoolvalid = $rrdlbpoolinterval * 2; - $procvalid = $rrdlbpoolinterval * 2; - $memvalid = $rrdmeminterval * 2; - $mbufvalid = $rrdmbufinterval * 2; - $cellularvalid = $rrdcellularinterval * 2; - $vpnvalid = $rrdvpninterval * 2; - $captiveportalvalid = $rrdcaptiveportalinterval * 2; - $ntpdvalid = $rrdntpdinterval * 2; - - /* Assume 2*10GigE for now */ - $downstream = 2500000000; - $upstream = 2500000000; - - /* read the shaper config */ - read_altq_config(); - - if (isset ($config['rrd']['enable'])) { - - /* create directory if needed */ - if (!is_dir($rrddbpath)) { - mkdir($rrddbpath, 0775); - } - chown($rrddbpath, "nobody"); - - if (platform_booting()) { - restore_rrd(); - } - - /* db update script */ - $rrdupdatesh = "#!/bin/sh\n"; - $rrdupdatesh .= "\n"; - $rrdupdatesh .= "export TERM=dumb\n"; - $rrdupdatesh .= "\n"; - $rrdupdatesh .= 'echo $$ > ' . $g['varrun_path'] . '/updaterrd.sh.pid'; - $rrdupdatesh .= "\n"; - $rrdupdatesh .= "counter=1\n"; - $rrdupdatesh .= "while [ \"\$counter\" -ne 0 ]\n"; - $rrdupdatesh .= "do\n"; - $rrdupdatesh .= ""; - - $i = 0; - $ifdescrs = get_configured_interface_with_descr(); - /* IPsec counters */ - $ifdescrs['ipsec'] = "IPsec"; - /* OpenVPN server counters */ - if (is_array($config['openvpn']['openvpn-server'])) { - foreach ($config['openvpn']['openvpn-server'] as $server) { - $serverid = "ovpns" . $server['vpnid']; - $ifdescrs[$serverid] = "{$server['description']}"; - } - } - - if (platform_booting()) { - if (!is_dir("{$g['vardb_path']}/rrd")) { - mkdir("{$g['vardb_path']}/rrd", 0775); - } - - @chown("{$g['vardb_path']}/rrd", "nobody"); - } - - /* process all real and pseudo interfaces */ - foreach ($ifdescrs as $ifname => $ifdescr) { - $temp = get_real_interface($ifname); - if ($temp <> "") { - $realif = $temp; - } - - /* TRAFFIC, set up the rrd file */ - if (!file_exists("$rrddbpath$ifname$traffic")) { - $rrdcreate = "$rrdtool create $rrddbpath$ifname$traffic --step $rrdtrafficinterval "; - $rrdcreate .= "DS:inpass:COUNTER:$trafficvalid:0:$downstream "; - $rrdcreate .= "DS:outpass:COUNTER:$trafficvalid:0:$upstream "; - $rrdcreate .= "DS:inblock:COUNTER:$trafficvalid:0:$downstream "; - $rrdcreate .= "DS:outblock:COUNTER:$trafficvalid:0:$upstream "; - $rrdcreate .= "DS:inpass6:COUNTER:$trafficvalid:0:$downstream "; - $rrdcreate .= "DS:outpass6:COUNTER:$trafficvalid:0:$upstream "; - $rrdcreate .= "DS:inblock6:COUNTER:$trafficvalid:0:$downstream "; - $rrdcreate .= "DS:outblock6:COUNTER:$trafficvalid:0:$upstream "; - $rrdcreate .= "RRA:AVERAGE:0.5:1:1200 "; - $rrdcreate .= "RRA:AVERAGE:0.5:5:720 "; - $rrdcreate .= "RRA:AVERAGE:0.5:60:1860 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1440:2284 "; - - create_new_rrd($rrdcreate); - unset($rrdcreate); - } - - /* enter UNKNOWN values in the RRD so it knows we rebooted. */ - if (platform_booting()) { - mwexec("$rrdtool update $rrddbpath$ifname$traffic N:U:U:U:U:U:U:U:U"); - } - - $rrdupdatesh .= "\n"; - $rrdupdatesh .= "# polling traffic for interface $ifname $realif IPv4/IPv6 counters \n"; - $rrdupdatesh .= "$rrdtool update $rrddbpath$ifname$traffic N:"; - $rrdupdatesh .= "`$pfctl -vvsI -i {$realif} | awk '\\\n"; - $rrdupdatesh .= "/In4\/Pass/ { b4pi = \$6 };/Out4\/Pass/ { b4po = \$6 };/In4\/Block/ { b4bi = \$6 };/Out4\/Block/ { b4bo = \$6 };\\\n"; - $rrdupdatesh .= "/In6\/Pass/ { b6pi = \$6 };/Out6\/Pass/ { b6po = \$6 };/In6\/Block/ { b6bi = \$6 };/Out6\/Block/ { b6bo = \$6 };\\\n"; - $rrdupdatesh .= "END {print b4pi \":\" b4po \":\" b4bi \":\" b4bo \":\" b6pi \":\" b6po \":\" b6bi \":\" b6bo};'`\n"; - - /* PACKETS, set up the rrd file */ - if (!file_exists("$rrddbpath$ifname$packets")) { - $rrdcreate = "$rrdtool create $rrddbpath$ifname$packets --step $rrdpacketsinterval "; - $rrdcreate .= "DS:inpass:COUNTER:$packetsvalid:0:$downstream "; - $rrdcreate .= "DS:outpass:COUNTER:$packetsvalid:0:$upstream "; - $rrdcreate .= "DS:inblock:COUNTER:$packetsvalid:0:$downstream "; - $rrdcreate .= "DS:outblock:COUNTER:$packetsvalid:0:$upstream "; - $rrdcreate .= "DS:inpass6:COUNTER:$packetsvalid:0:$downstream "; - $rrdcreate .= "DS:outpass6:COUNTER:$packetsvalid:0:$upstream "; - $rrdcreate .= "DS:inblock6:COUNTER:$packetsvalid:0:$downstream "; - $rrdcreate .= "DS:outblock6:COUNTER:$packetsvalid:0:$upstream "; - $rrdcreate .= "RRA:AVERAGE:0.5:1:1200 "; - $rrdcreate .= "RRA:AVERAGE:0.5:5:720 "; - $rrdcreate .= "RRA:AVERAGE:0.5:60:1860 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1440:2284 "; - - create_new_rrd($rrdcreate); - unset($rrdcreate); - } - - /* enter UNKNOWN values in the RRD so it knows we rebooted. */ - if (platform_booting()) { - mwexec("$rrdtool update $rrddbpath$ifname$packets N:U:U:U:U:U:U:U:U"); - } - - $rrdupdatesh .= "\n"; - $rrdupdatesh .= "# polling packets for interface $ifname $realif \n"; - $rrdupdatesh .= "$rrdtool update $rrddbpath$ifname$packets N:"; - $rrdupdatesh .= "`$pfctl -vvsI -i {$realif} | awk '\\\n"; - $rrdupdatesh .= "/In4\/Pass/ { b4pi = \$4 };/Out4\/Pass/ { b4po = \$4 };/In4\/Block/ { b4bi = \$4 };/Out4\/Block/ { b4bo = \$4 };\\\n"; - $rrdupdatesh .= "/In6\/Pass/ { b6pi = \$4 };/Out6\/Pass/ { b6po = \$4 };/In6\/Block/ { b6bi = \$4 };/Out6\/Block/ { b6bo = \$4 };\\\n"; - $rrdupdatesh .= "END {print b4pi \":\" b4po \":\" b4bi \":\" b4bo \":\" b6pi \":\" b6po \":\" b6bi \":\" b6bo};'`\n"; - - /* WIRELESS, set up the rrd file */ - if ($config['interfaces'][$ifname]['wireless']['mode'] == "bss") { - if (!file_exists("$rrddbpath$ifname$wireless")) { - $rrdcreate = "$rrdtool create $rrddbpath$ifname$wireless --step $rrdwirelessinterval "; - $rrdcreate .= "DS:snr:GAUGE:$wirelessvalid:0:1000 "; - $rrdcreate .= "DS:rate:GAUGE:$wirelessvalid:0:1000 "; - $rrdcreate .= "DS:channel:GAUGE:$wirelessvalid:0:1000 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1:1200 "; - $rrdcreate .= "RRA:AVERAGE:0.5:5:720 "; - $rrdcreate .= "RRA:AVERAGE:0.5:60:1860 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1440:2284 "; - - create_new_rrd($rrdcreate); - unset($rrdcreate); - } - - /* enter UNKNOWN values in the RRD so it knows we rebooted. */ - if (platform_booting()) { - mwexec("$rrdtool update $rrddbpath$ifname$wireless N:U:U:U"); - } - - $rrdupdatesh .= "\n"; - $rrdupdatesh .= "# polling wireless for interface $ifname $realif \n"; - $rrdupdatesh .= "WIFI=`$ifconfig {$realif} list sta| $awk 'gsub(\"M\", \"\") {getline 2;print substr(\$5, 0, length(\$5)-2) \":\" $4 \":\" $3}'`\n"; - $rrdupdatesh .= "$rrdtool update $rrddbpath$ifname$wireless N:\${WIFI}\n"; - } - - /* OpenVPN, set up the rrd file */ - if (stristr($ifname, "ovpns")) { - if (!file_exists("$rrddbpath$ifname$vpnusers")) { - $rrdcreate = "$rrdtool create $rrddbpath$ifname$vpnusers --step $rrdvpninterval "; - $rrdcreate .= "DS:users:GAUGE:$vpnvalid:0:10000 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1:1200 "; - $rrdcreate .= "RRA:AVERAGE:0.5:5:720 "; - $rrdcreate .= "RRA:AVERAGE:0.5:60:1860 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1440:2284 "; - - create_new_rrd($rrdcreate); - unset($rrdcreate); - } - - /* enter UNKNOWN values in the RRD so it knows we rebooted. */ - if (platform_booting()) { - mwexec("$rrdtool update $rrddbpath$ifname$vpnusers N:U"); - } - - if (is_array($config['openvpn']['openvpn-server'])) { - foreach ($config['openvpn']['openvpn-server'] as $server) { - if ("ovpns{$server['vpnid']}" == $ifname) { - $port = $server['local_port']; - $vpnid = $server['vpnid']; - } - } - } - $rrdupdatesh .= "\n"; - $rrdupdatesh .= "# polling vpn users for interface $ifname $realif port $port\n"; - $rrdupdatesh .= "list_current_users() {\n"; - $rrdupdatesh .= " sleep 0.2\n"; - $rrdupdatesh .= " echo \"status 2\"\n"; - $rrdupdatesh .= " sleep 0.2\n"; - $rrdupdatesh .= " echo \"quit\"\n"; - $rrdupdatesh .= "}\n"; - $rrdupdatesh .= "OVPN=`list_current_users | nc -U {$g['varetc_path']}/openvpn/server{$vpnid}.sock | awk -F\",\" '/^CLIENT_LIST/ {print \$2}' | wc -l | awk '{print $1}'`\n"; - $rrdupdatesh .= "$rrdtool update $rrddbpath$ifname$vpnusers N:\${OVPN}\n"; - } - - /* QUEUES, set up the queues databases */ - if ($altq_list_queues[$ifname]) { - $altq =& $altq_list_queues[$ifname]; - /* NOTE: Is it worth as its own function?! */ - switch ($altq->GetBwscale()) { - case "Gb": - $factor = 1024 * 1024 * 1024; - break; - case "Mb": - $factor = 1024 * 1024; - break; - case "Kb": - $factor = 1024; - break; - case "b": - default: - $factor = 1; - break; - } - $qbandwidth = $altq->GetBandwidth() * $factor; - if ($qbandwidth <= 0) { - $qbandwidth = 100 * 1000 * 1000; /* 100Mbit */ - } - $qlist =& $altq->get_queue_list($notused); - if (!file_exists("$rrddbpath$ifname$queues")) { - $rrdcreate = "$rrdtool create $rrddbpath$ifname$queues --step $rrdqueuesinterval "; - /* loop list of shaper queues */ - $q = 0; - foreach ($qlist as $qname => $q) { - $rrdcreate .= "DS:$qname:COUNTER:$queuesvalid:0:$qbandwidth "; - } - - $rrdcreate .= "RRA:AVERAGE:0.5:1:1200 "; - $rrdcreate .= "RRA:AVERAGE:0.5:5:720 "; - $rrdcreate .= "RRA:AVERAGE:0.5:60:1860 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1440:2284 "; - - create_new_rrd($rrdcreate); - unset($rrdcreate); - } - - if (!file_exists("$rrddbpath$ifname$queuesdrop")) { - $rrdcreate = "$rrdtool create $rrddbpath$ifname$queuesdrop --step $rrdqueuesdropinterval "; - /* loop list of shaper queues */ - $q = 0; - foreach ($qlist as $qname => $q) { - $rrdcreate .= "DS:$qname:COUNTER:$queuesdropvalid:0:$qbandwidth "; - } - - $rrdcreate .= "RRA:AVERAGE:0.5:1:1200 "; - $rrdcreate .= "RRA:AVERAGE:0.5:5:720 "; - $rrdcreate .= "RRA:AVERAGE:0.5:60:1860 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1440:2284 "; - - create_new_rrd($rrdcreate); - unset($rrdcreate); - } - - if (platform_booting()) { - $rrdqcommand = "-t "; - $rrducommand = "N"; - $qi = 0; - foreach ($qlist as $qname => $q) { - if ($qi == 0) { - $rrdqcommand .= "{$qname}"; - } else { - $rrdqcommand .= ":{$qname}"; - } - $qi++; - $rrducommand .= ":U"; - } - mwexec("$rrdtool update $rrddbpath$ifname$queues $rrdqcommand $rrducommand"); - mwexec("$rrdtool update $rrddbpath$ifname$queuesdrop $rrdqcommand $rrducommand"); - } - - /* awk function to gather shaper data */ - /* yes, it's special */ - $rrdupdatesh .= "` pfctl -vsq -i {$realif} | awk 'BEGIN {printf \"$rrdtool update $rrddbpath$ifname$queues \" } "; - $rrdupdatesh .= "{ "; - $rrdupdatesh .= "if ((\$1 == \"queue\") && ( \$2 ~ /^q/ )) { "; - $rrdupdatesh .= " dsname = dsname \":\" \$2 ; "; - $rrdupdatesh .= " q=1; "; - $rrdupdatesh .= "} "; - $rrdupdatesh .= " else if ((\$4 == \"bytes:\") && ( q == 1 ) ) { "; - $rrdupdatesh .= " dsdata = dsdata \":\" \$5 ; "; - $rrdupdatesh .= " q=0; "; - $rrdupdatesh .= "} "; - $rrdupdatesh .= "} END { "; - $rrdupdatesh .= " dsname = substr(dsname,2); "; - $rrdupdatesh .= " dsdata = substr(dsdata,2); "; - $rrdupdatesh .= " printf \"-t \" dsname \" N:\" dsdata }' "; - $rrdupdatesh .= " dsname=\"\" dsdata=\"\"`\n\n"; - - $rrdupdatesh .= "` pfctl -vsq -i {$realif} | awk 'BEGIN {printf \"$rrdtool update $rrddbpath$ifname$queuesdrop \" } "; - $rrdupdatesh .= "{ "; - $rrdupdatesh .= "if ((\$1 == \"queue\") && ( \$2 ~ /^q/ )) { "; - $rrdupdatesh .= " dsname = dsname \":\" \$2 ; "; - $rrdupdatesh .= " q=1; "; - $rrdupdatesh .= "} "; - $rrdupdatesh .= " else if ((\$4 == \"bytes:\") && ( q == 1 ) ) { "; - $rrdupdatesh .= " dsdata = dsdata \":\" \$8 ; "; - $rrdupdatesh .= " q=0; "; - $rrdupdatesh .= "} "; - $rrdupdatesh .= "} END { "; - $rrdupdatesh .= " dsname = substr(dsname,2); "; - $rrdupdatesh .= " dsdata = substr(dsdata,2); "; - $rrdupdatesh .= " printf \"-t \" dsname \" N:\" dsdata }' "; - $rrdupdatesh .= " dsname=\"\" dsdata=\"\"`\n\n"; - } - - /* 3G interfaces */ - if (preg_match("/ppp[0-9]+/i", $realif)) { - if (!file_exists("$rrddbpath$ifname$cellular")) { - $rrdcreate = "$rrdtool create $rrddbpath$ifname$cellular --step $rrdcellularinterval "; - $rrdcreate .= "DS:rssi:GAUGE:$cellularvalid:0:100 "; - $rrdcreate .= "DS:upstream:GAUGE:$cellularvalid:0:100000000 "; - $rrdcreate .= "DS:downstream:GAUGE:$cellularvalid:0:100000000 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1:1200 "; - $rrdcreate .= "RRA:AVERAGE:0.5:5:720 "; - $rrdcreate .= "RRA:AVERAGE:0.5:60:1860 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1440:2284 "; - create_new_rrd($rrdcreate); - unset($rrdcreate); - } - - /* enter UNKNOWN values in the RRD so it knows we rebooted. */ - if (platform_booting()) { - mwexec("$rrdtool update $rrddbpath$ifname$cellular N:U:U:U"); - } - - $rrdupdatesh .= "\n"; - $rrdupdatesh .= "# polling 3G\n"; - $rrdupdatesh .= "GSTATS=`awk -F, 'getline 2 {print \$2 \":\" \$8 \":\" \$9}' < /tmp/3gstats.$ifname`\n"; - $rrdupdatesh .= "$rrdtool update $rrddbpath$ifname$cellular N:\"\$GSTATS\""; - } - - } - $i++; - - /* System only statistics */ - $ifname = "system"; - - /* STATES, create pf states database */ - if (!file_exists("$rrddbpath$ifname$states")) { - $rrdcreate = "$rrdtool create $rrddbpath$ifname$states --step $rrdstatesinterval "; - $rrdcreate .= "DS:pfrate:GAUGE:$statesvalid:0:10000000 "; - $rrdcreate .= "DS:pfstates:GAUGE:$statesvalid:0:10000000 "; - $rrdcreate .= "DS:pfnat:GAUGE:$statesvalid:0:10000000 "; - $rrdcreate .= "DS:srcip:GAUGE:$statesvalid:0:10000000 "; - $rrdcreate .= "DS:dstip:GAUGE:$statesvalid:0:10000000 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1:1200 "; - $rrdcreate .= "RRA:AVERAGE:0.5:5:720 "; - $rrdcreate .= "RRA:AVERAGE:0.5:60:1860 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1440:2284 "; - - create_new_rrd($rrdcreate); - unset($rrdcreate); - } - - /* enter UNKNOWN values in the RRD so it knows we rebooted. */ - if (platform_booting()) { - mwexec("$rrdtool update $rrddbpath$ifname$states N:U:U:U:U:U"); - } - - /* the pf states gathering function. */ - $rrdupdatesh .= "\n"; - $rrdupdatesh .= "pfctl_si_out=\"` $pfctl -si > /tmp/pfctl_si_out `\"\n"; - $rrdupdatesh .= "pfctl_ss_out=\"` $pfctl -ss > /tmp/pfctl_ss_out`\"\n"; - $rrdupdatesh .= "pfrate=\"` cat /tmp/pfctl_si_out | egrep \"inserts|removals\" | awk '{ pfrate = \$3 + pfrate } {print pfrate}'|tail -1 `\"\n"; - $rrdupdatesh .= "pfstates=\"` cat /tmp/pfctl_ss_out | egrep -v \"<\\-.*?<\\-|\\->.*?\\->\" | wc -l|sed 's/ //g'`\"\n"; - $rrdupdatesh .= "pfnat=\"` cat /tmp/pfctl_ss_out | egrep '<\\-.*?<\\-|\\->.*?\\->' | wc -l|sed 's/ //g' `\"\n"; - $rrdupdatesh .= "srcip=\"` cat /tmp/pfctl_ss_out | egrep -v '<\\-.*?<\\-|\\->.*?\\->' | grep '\\->' | awk '{print \$3}' | awk -F: '{print \$1}' | sort -u|wc -l|sed 's/ //g' `\"\n"; - $rrdupdatesh .= "dstip=\"` cat /tmp/pfctl_ss_out | egrep -v '<\\-.*?<\\-|\\->.*?\\->' | grep '<\\-' | awk '{print \$3}' | awk -F: '{print \$1}' | sort -u|wc -l|sed 's/ //g' `\"\n"; - $rrdupdatesh .= "$rrdtool update $rrddbpath$ifname$states N:\$pfrate:\$pfstates:\$pfnat:\$srcip:\$dstip\n\n"; - - /* End pf states statistics */ - - /* CPU, create CPU statistics database */ - if (!file_exists("$rrddbpath$ifname$proc")) { - $rrdcreate = "$rrdtool create $rrddbpath$ifname$proc --step $rrdprocinterval "; - $rrdcreate .= "DS:user:GAUGE:$procvalid:0:10000000 "; - $rrdcreate .= "DS:nice:GAUGE:$procvalid:0:10000000 "; - $rrdcreate .= "DS:system:GAUGE:$procvalid:0:10000000 "; - $rrdcreate .= "DS:interrupt:GAUGE:$procvalid:0:10000000 "; - $rrdcreate .= "DS:processes:GAUGE:$procvalid:0:10000000 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1:1200 "; - $rrdcreate .= "RRA:AVERAGE:0.5:5:720 "; - $rrdcreate .= "RRA:AVERAGE:0.5:60:1860 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1440:2284 "; - - create_new_rrd($rrdcreate); - unset($rrdcreate); - } - - /* enter UNKNOWN values in the RRD so it knows we rebooted. */ - if (platform_booting()) { - mwexec("$rrdtool update $rrddbpath$ifname$proc N:U:U:U:U:U"); - } - - /* the CPU stats gathering function. */ - $rrdupdatesh .= "CPU=`$cpustats | cut -f1-4 -d':'`\n"; - /* Using ps uxaH will count all processes including system threads. Top was undercounting. */ - $rrdupdatesh .= "PROCS=`ps uxaH | wc -l | awk '{print \$1;}'`\n"; - $rrdupdatesh .= "$rrdtool update $rrddbpath$ifname$proc N:\${CPU}:\${PROCS}\n"; - - /* End CPU statistics */ - - /* Memory, create Memory statistics database */ - if (!file_exists("$rrddbpath$ifname$mem")) { - $rrdcreate = "$rrdtool create $rrddbpath$ifname$mem --step $rrdmeminterval "; - $rrdcreate .= "DS:active:GAUGE:$memvalid:0:10000000 "; - $rrdcreate .= "DS:inactive:GAUGE:$memvalid:0:10000000 "; - $rrdcreate .= "DS:free:GAUGE:$memvalid:0:10000000 "; - $rrdcreate .= "DS:cache:GAUGE:$memvalid:0:10000000 "; - $rrdcreate .= "DS:wire:GAUGE:$memvalid:0:10000000 "; - $rrdcreate .= "RRA:MIN:0.5:1:1200 "; - $rrdcreate .= "RRA:MIN:0.5:5:720 "; - $rrdcreate .= "RRA:MIN:0.5:60:1860 "; - $rrdcreate .= "RRA:MIN:0.5:1440:2284 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1:1200 "; - $rrdcreate .= "RRA:AVERAGE:0.5:5:720 "; - $rrdcreate .= "RRA:AVERAGE:0.5:60:1860 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1440:2284 "; - $rrdcreate .= "RRA:MAX:0.5:1:1200 "; - $rrdcreate .= "RRA:MAX:0.5:5:720 "; - $rrdcreate .= "RRA:MAX:0.5:60:1860 "; - $rrdcreate .= "RRA:MAX:0.5:1440:2284"; - - create_new_rrd($rrdcreate); - unset($rrdcreate); - } - - /* enter UNKNOWN values in the RRD so it knows we rebooted. */ - if (platform_booting()) { - mwexec("$rrdtool update $rrddbpath$ifname$mem N:U:U:U:U:U"); - } - - /* the Memory stats gathering function. */ - $rrdupdatesh .= "MEM=`$sysctl -n vm.stats.vm.v_page_count vm.stats.vm.v_active_count vm.stats.vm.v_inactive_count vm.stats.vm.v_free_count vm.stats.vm.v_cache_count vm.stats.vm.v_wire_count | "; - $rrdupdatesh .= " $awk '{getline active;getline inactive;getline free;getline cache;getline wire;printf "; - $rrdupdatesh .= "((active/$0) * 100)\":\"((inactive/$0) * 100)\":\"((free/$0) * 100)\":\"((cache/$0) * 100)\":\"(wire/$0 * 100)}'`\n"; - $rrdupdatesh .= "$rrdtool update $rrddbpath$ifname$mem N:\${MEM}\n"; - - /* End Memory statistics */ - - /* mbuf, create mbuf statistics database */ - if (!file_exists("$rrddbpath$ifname$mbuf")) { - $rrdcreate = "$rrdtool create $rrddbpath$ifname$mbuf --step $rrdmbufinterval "; - $rrdcreate .= "DS:current:GAUGE:$mbufvalid:0:10000000 "; - $rrdcreate .= "DS:cache:GAUGE:$mbufvalid:0:10000000 "; - $rrdcreate .= "DS:total:GAUGE:$mbufvalid:0:10000000 "; - $rrdcreate .= "DS:max:GAUGE:$mbufvalid:0:10000000 "; - $rrdcreate .= "RRA:MIN:0.5:1:1200 "; - $rrdcreate .= "RRA:MIN:0.5:5:720 "; - $rrdcreate .= "RRA:MIN:0.5:60:1860 "; - $rrdcreate .= "RRA:MIN:0.5:1440:2284 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1:1200 "; - $rrdcreate .= "RRA:AVERAGE:0.5:5:720 "; - $rrdcreate .= "RRA:AVERAGE:0.5:60:1860 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1440:2284 "; - $rrdcreate .= "RRA:MAX:0.5:1:1200 "; - $rrdcreate .= "RRA:MAX:0.5:5:720 "; - $rrdcreate .= "RRA:MAX:0.5:60:1860 "; - $rrdcreate .= "RRA:MAX:0.5:1440:2284"; - - create_new_rrd($rrdcreate); - unset($rrdcreate); - } - - /* enter UNKNOWN values in the RRD so it knows we rebooted. */ - if (platform_booting()) { - mwexec("$rrdtool update $rrddbpath$ifname$mbuf N:U:U:U:U"); - } - - /* the mbuf stats gathering function. */ - $rrdupdatesh .= "MBUF=`$netstat -m | "; - $rrdupdatesh .= " $awk '/mbuf clusters in use/ { gsub(/\//, \":\", $1); print $1; }'`\n"; - $rrdupdatesh .= "$rrdtool update $rrddbpath$ifname$mbuf N:\${MBUF}\n"; - - /* End mbuf statistics */ - - /* SPAMD, set up the spamd rrd file */ - if (isset($config['installedpackages']['spamdsettings']) && - $config['installedpackages']['spamdsettings']['config'][0]['enablerrd']) { - /* set up the spamd rrd file */ - if (!file_exists("$rrddbpath$ifname$spamd")) { - $rrdcreate = "$rrdtool create $rrddbpath$ifname$spamd --step $rrdspamdinterval "; - $rrdcreate .= "DS:conn:GAUGE:$spamdvalid:0:10000 "; - $rrdcreate .= "DS:time:GAUGE:$spamdvalid:0:86400 "; - $rrdcreate .= "RRA:MIN:0.5:1:1200 "; - $rrdcreate .= "RRA:MIN:0.5:5:720 "; - $rrdcreate .= "RRA:MIN:0.5:60:1860 "; - $rrdcreate .= "RRA:MIN:0.5:1440:2284 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1:1200 "; - $rrdcreate .= "RRA:AVERAGE:0.5:5:720 "; - $rrdcreate .= "RRA:AVERAGE:0.5:60:1860 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1440:2284 "; - $rrdcreate .= "RRA:MAX:0.5:1:1200 "; - $rrdcreate .= "RRA:MAX:0.5:5:720 "; - $rrdcreate .= "RRA:MAX:0.5:60:1860 "; - $rrdcreate .= "RRA:MAX:0.5:1440:2284 "; - - create_new_rrd($rrdcreate); - unset($rrdcreate); - } - - $rrdupdatesh .= "\n"; - $rrdupdatesh .= "# polling spamd for connections and tarpitness \n"; - $rrdupdatesh .= "$rrdtool update $rrddbpath$ifname$spamd \\\n"; - $rrdupdatesh .= "`$php -q $spamd_gather`\n"; - - } - /* End System statistics */ - - /* Captive Portal statistics, set up the rrd file */ - if (is_array($config['captiveportal'])) { - foreach ($config['captiveportal'] as $cpkey => $cp) { - if (!isset($cp['enable'])) { - continue; - } - - $ifname= "captiveportal"; - $concurrent_filename = $rrddbpath . $ifname . '-' . $cpkey . $captiveportalconcurrent; - if (!file_exists("$concurrent_filename")) { - $rrdcreate = "$rrdtool create $concurrent_filename --step $rrdcaptiveportalinterval "; - $rrdcreate .= "DS:concurrentusers:GAUGE:$captiveportalvalid:0:10000 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1:1200 "; - $rrdcreate .= "RRA:AVERAGE:0.5:5:720 "; - $rrdcreate .= "RRA:AVERAGE:0.5:60:1860 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1440:2284 "; - $rrdcreate .= "RRA:MIN:0.5:1:1200 "; - $rrdcreate .= "RRA:MIN:0.5:5:720 "; - $rrdcreate .= "RRA:MIN:0.5:60:1860 "; - $rrdcreate .= "RRA:MIN:0.5:1440:2284 "; - $rrdcreate .= "RRA:MAX:0.5:1:1200 "; - $rrdcreate .= "RRA:MAX:0.5:5:720 "; - $rrdcreate .= "RRA:MAX:0.5:60:1860 "; - $rrdcreate .= "RRA:MAX:0.5:1440:2284 "; - $rrdcreate .= "RRA:LAST:0.5:1:1200 "; - $rrdcreate .= "RRA:LAST:0.5:5:720 "; - $rrdcreate .= "RRA:LAST:0.5:60:1860 "; - $rrdcreate .= "RRA:LAST:0.5:1440:2284 "; - - create_new_rrd($rrdcreate); - unset($rrdcreate); - } - - /* enter UNKNOWN values in the RRD so it knows we rebooted. */ - if (platform_booting()) { - mwexec("$rrdtool update $concurrent_filename N:U"); - } - - /* the Captive Portal stats gathering function. */ - $rrdupdatesh .= "\n"; - $rrdupdatesh .= "# polling Captive Portal for number of concurrent users\n"; - $rrdupdatesh .= "CP=`${php} -q ${captiveportal_gather} '${cpkey}' 'concurrent'`\n"; - $rrdupdatesh .= "$rrdtool update $concurrent_filename \${CP}\n"; - - $loggedin_filename = $rrddbpath . $ifname . '-' . $cpkey . $captiveportalloggedin; - if (!file_exists("$loggedin_filename")) { - $rrdcreate = "$rrdtool create $loggedin_filename --step $rrdcaptiveportalinterval "; - $rrdcreate .= "DS:loggedinusers:GAUGE:$captiveportalvalid:0:10000 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1:1200 "; - $rrdcreate .= "RRA:AVERAGE:0.5:5:720 "; - $rrdcreate .= "RRA:AVERAGE:0.5:60:1860 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1440:2284 "; - $rrdcreate .= "RRA:MIN:0.5:1:1200 "; - $rrdcreate .= "RRA:MIN:0.5:5:720 "; - $rrdcreate .= "RRA:MIN:0.5:60:1860 "; - $rrdcreate .= "RRA:MIN:0.5:1440:2284 "; - $rrdcreate .= "RRA:MAX:0.5:1:1200 "; - $rrdcreate .= "RRA:MAX:0.5:5:720 "; - $rrdcreate .= "RRA:MAX:0.5:60:1860 "; - $rrdcreate .= "RRA:MAX:0.5:1440:2284 "; - $rrdcreate .= "RRA:LAST:0.5:1:1200 "; - $rrdcreate .= "RRA:LAST:0.5:5:720 "; - $rrdcreate .= "RRA:LAST:0.5:60:1860 "; - $rrdcreate .= "RRA:LAST:0.5:1440:2284 "; - - create_new_rrd($rrdcreate); - unset($rrdcreate); - } - - /* enter UNKNOWN values in the RRD so it knows we rebooted. */ - if (platform_booting()) { - mwexec("$rrdtool update $loggedin_filename N:U"); - } - - /* the Captive Portal stats gathering function. */ - $rrdupdatesh .= "\n"; - $rrdupdatesh .= "# polling Captive Portal for number of logged in users\n"; - $rrdupdatesh .= "CP=`${php} -q ${captiveportal_gather} '${cpkey}' 'loggedin'`\n"; - $rrdupdatesh .= "$rrdtool update $loggedin_filename \${CP}\n"; - - } - } - /* End Captive Portal statistics */ - - /* NTP, set up the ntpd rrd file */ - if (isset($config['ntpd']['statsgraph'])) { - /* set up the ntpd rrd file */ - if (!file_exists("$rrddbpath$ntpd")) { - $rrdcreate = "$rrdtool create $rrddbpath$ntpd --step $rrdntpdinterval "; - $rrdcreate .= "DS:offset:GAUGE:$ntpdvalid:0:1000 "; - $rrdcreate .= "DS:sjit:GAUGE:$ntpdvalid:0:1000 "; - $rrdcreate .= "DS:cjit:GAUGE:$ntpdvalid:0:1000 "; - $rrdcreate .= "DS:wander:GAUGE:$ntpdvalid:0:1000 "; - $rrdcreate .= "DS:freq:GAUGE:$ntpdvalid:0:1000 "; - $rrdcreate .= "DS:disp:GAUGE:$ntpdvalid:0:1000 "; - $rrdcreate .= "RRA:MIN:0.5:1:1200 "; - $rrdcreate .= "RRA:MIN:0.5:5:720 "; - $rrdcreate .= "RRA:MIN:0.5:60:1860 "; - $rrdcreate .= "RRA:MIN:0.5:1440:2284 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1:1200 "; - $rrdcreate .= "RRA:AVERAGE:0.5:5:720 "; - $rrdcreate .= "RRA:AVERAGE:0.5:60:1860 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1440:2284 "; - $rrdcreate .= "RRA:MAX:0.5:1:1200 "; - $rrdcreate .= "RRA:MAX:0.5:5:720 "; - $rrdcreate .= "RRA:MAX:0.5:60:1860 "; - $rrdcreate .= "RRA:MAX:0.5:1440:2284 "; - - create_new_rrd($rrdcreate); - unset($rrdcreate); - } - - /* enter UNKNOWN values in the RRD so it knows we rebooted. */ - if (platform_booting()) { - mwexec("$rrdtool update $rrddbpath$ntpd N:U:U:U:U:U:U"); - } - - /* the ntp stats gathering function. */ - $rrdupdatesh .= "\n"; - $rrdupdatesh .= "$ntpq -c rv | $awk 'BEGIN{ RS=\",\"}{ print }' >> /tmp/ntp-rrdstats.$$\n"; - $rrdupdatesh .= "NOFFSET=`grep offset /tmp/ntp-rrdstats.$$ | awk 'BEGIN{FS=\"=\"}{print $2}'`\n"; - $rrdupdatesh .= "NFREQ=`grep frequency /tmp/ntp-rrdstats.$$ | awk 'BEGIN{FS=\"=\"}{print $2}'`\n"; - $rrdupdatesh .= "NSJIT=`grep sys_jitter /tmp/ntp-rrdstats.$$ | awk 'BEGIN{FS=\"=\"}{print $2}'`\n"; - $rrdupdatesh .= "NCJIT=`grep clk_jitter /tmp/ntp-rrdstats.$$ | awk 'BEGIN{FS=\"=\"}{print $2}'`\n"; - $rrdupdatesh .= "NWANDER=`grep clk_wander /tmp/ntp-rrdstats.$$ | awk 'BEGIN{FS=\"=\"}{print $2}'`\n"; - $rrdupdatesh .= "NDISPER=`grep rootdisp /tmp/ntp-rrdstats.$$ | awk 'BEGIN{FS=\"=\"}{print $2}'`\n"; - $rrdupdatesh .= "$rrdtool update $rrddbpath$ntpd \N:\${NOFFSET}:\${NSJIT}:\${NCJIT}:\${NWANDER}:\${NFREQ}:\${NDISPER}\n"; - $rrdupdatesh .= "rm /tmp/ntp-rrdstats.$$\n"; - $rrdupdatesh .= "\n"; - - } - /* End NTP statistics */ - - $rrdupdatesh .= "sleep 60\n"; - $rrdupdatesh .= "done\n"; - log_error(gettext("Creating rrd update script")); - /* write the rrd update script */ - $updaterrdscript = "{$g['vardb_path']}/rrd/updaterrd.sh"; - $fd = fopen("$updaterrdscript", "w"); - fwrite($fd, "$rrdupdatesh"); - fclose($fd); - - unset($rrdupdatesh); - - /* kill off traffic collectors */ - kill_traffic_collector(); - - /* start traffic collector */ - mwexec_bg("/usr/bin/nice -n20 /bin/sh $updaterrdscript"); - - } else { - /* kill off traffic collectors */ - kill_traffic_collector(); - } - - $databases = glob("{$rrddbpath}/*.rrd"); - foreach ($databases as $database) { - chown($database, "nobody"); - } - - if (platform_booting()) { - echo gettext("done.") . "\n"; - } - -} - -# Create gateway quality RRD with settings suitable for pfSense graph set. -function create_gateway_quality_rrd($rrd_file) { - global $g; - - $rrdinterval = 60; - $valid = $rrdinterval * 2; - $rrdtool = "/usr/bin/nice -n20 /usr/local/bin/rrdtool"; - - /* GATEWAY QUALITY, set up the rrd file */ - if (!file_exists("$rrd_file")) { - $rrdcreate = "$rrdtool create $rrd_file --step $rrdinterval "; - $rrdcreate .= "DS:loss:GAUGE:$valid:0:100 "; - $rrdcreate .= "DS:delay:GAUGE:$valid:0:100000 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1:1200 "; - $rrdcreate .= "RRA:AVERAGE:0.5:5:720 "; - $rrdcreate .= "RRA:AVERAGE:0.5:60:1860 "; - $rrdcreate .= "RRA:AVERAGE:0.5:1440:2284 "; - - create_new_rrd($rrdcreate); - unset($rrdcreate); - } - - /* enter UNKNOWN values in the RRD so it knows we rebooted. */ - if (platform_booting()) { - if (!is_dir("{$g['vardb_path']}/rrd")) { - mkdir("{$g['vardb_path']}/rrd", 0775); - } - - @chown("{$g['vardb_path']}/rrd", "nobody"); - - mwexec("$rrdtool update $rrd_file N:U:U"); - } - unset($rrdtool, $rrdinterval, $valid, $rrd_file); -} - -function kill_traffic_collector() { - global $g; - - killbypid("{$g['varrun_path']}/updaterrd.sh.pid"); -} - -?> |