Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    RRD Graphs

    2.0-RC Snapshot Feedback and Problems - RETIRED
    19
    72
    33.7k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      johnnybe
      last edited by

      @PeterK2003:

      My RRD graphs are non-existent also which isn't a big deal but is the data still being collected?  I'd like to have the data for future reference.

      And i am on the latest build from 6ish this morning.

      All graphs are working here since I've deleted the current status_rrd_graph.php and got back the old one (yep, I had a backup).
      But it works up to four hours being collected only… no more than that.  >:(
      If you want it back, delete  /usr/local/www/status_rrd_graph.php and save the script below with the same name.

      /* $Id$ */
      /*
      	status_rrd_graph.php
      	Part of pfSense
      	Copyright (C) 2007 Seth Mos <seth.mos@xs4all.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:	/usr/bin/find
      	pfSense_MODULE:	system
      */
      
      ##|+PRIV
      ##|*IDENT=page-status-rrdgraphs
      ##|*NAME=Status: RRD Graphs page
      ##|*DESCR=Allow access to the 'Status: RRD Graphs' page.
      ##|*MATCH=status_rrd_graph.php*
      ##|-PRIV
      
      require("guiconfig.inc");
      require_once("filter.inc");
      require("shaper.inc");
      require_once("rrd.inc");
      
      /* if the rrd graphs are not enabled redirect to settings page */
      if(! isset($config['rrd']['enable'])) {
      	header("Location: status_rrd_graph_settings.php");
      }
      
      $rrddbpath = "/var/db/rrd/";
      /* XXX: (billm) do we have an exec() type function that does this type of thing? */
      exec("cd $rrddbpath;/usr/bin/find -name *.rrd", $databases);
      
      if ($_GET['cat']) {
      	$curcat = $_GET['cat'];
      } else {
      	if(! empty($config['rrd']['category'])) {
      		$curcat = $config['rrd']['category'];
      	} else {
      		$curcat = "system";
      	}
      }
      
      if ($_GET['option']) {
      	$curoption = $_GET['option'];
      } else {
      	switch($curcat) {
      		case "system":
      			$curoption = "processor";
      			break;
      		case "queues":
      			$curoption = "queues";
      			break;
      		case "queuedrops":
      			$curoption = "queuedrops";
      			break;
      		case "quality":
      			foreach($databases as $database) {
      				if(preg_match("/[-]quality\.rrd/i", $database)) {
      					/* pick off the 1st database we find that matches the quality graph */
      					$name = explode("-", $database);
      					$curoption = "$name[0]";
      					continue 2;
      				}
      			}
      		case "wireless":
      			foreach($databases as $database) {
      				if(preg_match("/[-]wireless\.rrd/i", $database)) {
      					/* pick off the 1st database we find that matches the wireless graph */
      					$name = explode("-", $database);
      					$curoption = "$name[0]";
      					continue 2;
      				}
      			}
      		case "cellular":
      			foreach($databases as $database) {
      				if(preg_match("/[-]cellular\.rrd/i", $database)) {
      					/* pick off the 1st database we find that matches the celullar graph */
      					$name = explode("-", $database);
      					$curoption = "$name[0]";
      					continue 2;
      				}
      			}
      		default:
      			$curoption = "wan";
      			break;
      	}
      }
      
      if ($_GET['style']) {
      	$curstyle = $_GET['style'];
      } else {
      	if(! empty($config['rrd']['style'])) {
      		$curstyle = $config['rrd']['style'];
      	} else {
      		$curstyle = "inverse";
      	}
      }
      
      /* sort names reverse so WAN comes first */
      rsort($databases);
      
      /* these boilerplate databases are required for the other menu choices */
      $dbheader = array("allgraphs-traffic.rrd",
      		"allgraphs-quality.rrd",
      		"allgraphs-wireless.rrd",
      		"allgraphs-cellular.rrd",
      		"allgraphs-packets.rrd",
      		"system-allgraphs.rrd",
      		"system-throughput.rrd",
      		"outbound-quality.rrd",
      		"outbound-packets.rrd",
      		"outbound-traffic.rrd");
      
      foreach($databases as $database) {
      	if(stristr($database, "wireless")) {
      		$wireless = true;
      	}
      	if(stristr($database, "queues")) {
      		$queues = true;
      	}
      	if(stristr($database, "cellular")) {
      		$cellular = true;
      	}
      }
      /* append the existing array to the header */
      $ui_databases = array_merge($dbheader, $databases);
      
      $styles = array('inverse' => 'Inverse',
      		'absolute' => 'Absolute');
      $periods = array("4h", "16h", "48h", "32d", "6m", "1y", "4y");
      
      $pgtitle = array("Status","RRD Graphs");
      include("head.inc");
      
      ?>
      
      | 
      
      <form name="form1" action="status_rrd_graph.php" method="get">
      			">
      						        $tab_array = array();
      				if($curcat == "system") { $tabactive = True; } else { $tabactive = False; }
      			        $tab_array[] = array("System", $tabactive, "status_rrd_graph.php?cat=system");
      				if($curcat == "traffic") { $tabactive = True; } else { $tabactive = False; }
      			        $tab_array[] = array("Traffic", $tabactive, "status_rrd_graph.php?cat=traffic");
      				if($curcat == "packets") { $tabactive = True; } else { $tabactive = False; }
      			        $tab_array[] = array("Packets", $tabactive, "status_rrd_graph.php?cat=packets");
      				if($curcat == "quality") { $tabactive = True; } else { $tabactive = False; }
      			        $tab_array[] = array("Quality", $tabactive, "status_rrd_graph.php?cat=quality");
      				if($queues) {
      					if($curcat == "queues") { $tabactive = True; } else { $tabactive = False; }
      					$tab_array[] = array("Queues", $tabactive, "status_rrd_graph.php?cat=queues");
      					if($curcat == "queuedrops") { $tabactive = True; } else { $tabactive = False; }
      					$tab_array[] = array("QueueDrops", $tabactive, "status_rrd_graph.php?cat=queuedrops");
      				}
      				if($wireless) {
      					if($curcat == "wireless") { $tabactive = True; } else { $tabactive = False; }
      				        $tab_array[] = array("Wireless", $tabactive, "status_rrd_graph.php?cat=wireless");
      				}
      				if($cellular) {
      					if($curcat == "cellular") { $tabactive = True; } else { $tabactive = False; }
      				        $tab_array[] = array("Cellular", $tabactive, "status_rrd_graph.php?cat=cellular");
      				}
      				if($curcat == "settings") { $tabactive = True; } else { $tabactive = False; }
      			        $tab_array[] = array("Settings", $tabactive, "status_rrd_graph_settings.php");
      			        display_top_tabs($tab_array);
      			?>
                      </form>
      
       |
      | 
      
                                              \n";
      							}
      						}
      					}
      					?>
      
      |  |								
      | 
      
      					 <select name="option" class="formselect" style="z-index: -10;" onchange="document.form1.submit()">foreach ($ui_databases as $db => $database) {						if(! preg_match("/($curcat)/i", $database)) {							continue;						}						$optionc = split("-", $database);						$search = array("-", ".rrd", $optionc);						$replace = array(" :: ", "", $friendly);						switch($curcat) {							case "system":								$optionc = str_replace($search, $replace, $optionc[1]);								echo " <option value="\&quot;$optionc\&quot;&quot;;<br">$prettyprint = ucwords(str_replace($search, $replace, $optionc));								break;							default:								/* Deduce a interface if possible and use the description */								$optionc = "$optionc[0]";								$friendly = convert_friendly_interface_to_friendly_descr(strtolower($optionc));								if(empty($friendly)) {									$friendly = $optionc;								}								$search = array("-", ".rrd", $optionc);								$replace = array(" :: ", "", $friendly);								echo "</option> <option value="\&quot;$optionc\&quot;&quot;;<br">$prettyprint = ucwords(str_replace($search, $replace, $friendly));						}						if($curoption == $optionc) {							echo " selected ";						}						echo ">" . htmlspecialchars($prettyprint) . "</option>\n";					}					?></select> 
      
      					 <select name="style" class="formselect" style="z-index: -10;" onchange="document.form1.submit()">foreach ($styles as $style => $styled) {						echo " <option value="\&quot;$style\&quot;&quot;;<br">if ($style == $curstyle) echo " selected";						echo ">" . htmlspecialchars($styled) . "</option>\n";					}					?></select> 
      
      					foreach($periods as $period => $interval) {
      						/* check which databases are valid for our category */
      						foreach($ui_databases as $curdatabase) {
      							if(! preg_match("/($curcat)/i", $curdatabase)) {
      								continue;
      							}
      							$optionc = split("-", $curdatabase);
      							$search = array("-", ".rrd", $optionc);
      							$replace = array(" :: ", "", $friendly);
      							switch($curoption) {
      								case "outbound":
      									/* only show interfaces with a gateway */
      									$optionc = "$optionc[0]";
      									if(!interface_has_gateway($optionc)) {
      										if(!preg_match("/($optionc)-(quality)/", $curdatabase)) {
      											continue 2;
      										}
      									}
      									if(! preg_match("/($optionc)[-.]/i", $curdatabase)) {
      										continue 2;
      									}
      									break;
      								case "allgraphs":
      									/* make sure we do not show the placeholder databases in the all view */
      									if((stristr($curdatabase, "outbound")) || (stristr($curdatabase, "allgraphs"))) {
      										continue 2;
      									}
      									break;
      								default:
      									/* just use the name here */
      									if(! preg_match("/($curoption)[-.]/i", $curdatabase)) {
      										continue 2;
      									}
      							}
      							if(in_array($curdatabase, $databases)) {
      								echo " |
      | \n";
      								echo "								echo "id='{$interval}-{$curoption}-{$curdatabase}' ALT=\"$prettydb Graph\" ";
      								echo "SRC=\"status_rrd_graph_img.php?interval=$interval&database={$curdatabase}&style={$curstyle}\" />\n";
      								echo "
      
      * * *
      
      \n";								
      								echo " |													
      
      					 |							
      
      		 |</seth.mos@xs4all.nl> 
      

      you would not believe the view up here

      1 Reply Last reply Reply Quote 0
      • B
        BlueMatt
        last edited by

        Fixed by Revision 002bc4ab. Either wait for a new build or download the two files from redmine and replace those on your box with these commands:

        cd /usr/local/www/; fetch http://redmine.pfsense.org/projects/pfsense/repository/revisions/002bc4ab3268e6e5cb3a01ce73a4c1624d09050a/raw/usr/local/www/status_rrd_graph_img.php
        cd /usr/local/www/; fetch http://redmine.pfsense.org/projects/pfsense/repository/revisions/9dc3798253279a13ddaae6d6a04269f85c27de5b/raw/usr/local/www/status_rrd_graph.php
        

        Note that the second command actually downloads from revision 9dc37982 which makes further modifications for week graphs to work.

        1 Reply Last reply Reply Quote 0
        • A
          adx442
          last edited by

          @BlueMatt:

          Fixed by Revision 002bc4ab. Either wait for a new build or download the two files from redmine and replace those on your box with these commands:

          cd /usr/local/www/; fetch http://redmine.pfsense.org/projects/pfsense/repository/revisions/002bc4ab3268e6e5cb3a01ce73a4c1624d09050a/raw/usr/local/www/status_rrd_graph_img.php
          cd /usr/local/www/; fetch http://redmine.pfsense.org/projects/pfsense/repository/revisions/9dc3798253279a13ddaae6d6a04269f85c27de5b/raw/usr/local/www/status_rrd_graph.php
          

          Note that the second command actually downloads from revision 9dc37982 which makes further modifications for week graphs to work.

          Worked for me on the July 22nd snapshot.  Needed to go to the RRD settings page, and click Save, then everything populated out correctly.  Thanks!

          1 Reply Last reply Reply Quote 0
          • D
            databeestje
            last edited by

            I've been working on the graphs today

            • Fixed the week graph. It was tracking the wrong week. And it now starts on monday.
            • Added a custom graph page for a start and end date. Which is missing a date picker currently.
            • OpenVPN now has traffic and packets stats for all OpenVPN servers.
            • Added backend for tracking openvpn users, graph is missing, data is collected though.
            • Synced the tabs on settings page.

            All the graphs now start on boundaries for day, week, month, quarter, year and 4 years.
            You can also select "previous period" which means you get the last full period instead of the current one.

            1 Reply Last reply Reply Quote 0
            • B
              BlueMatt
              last edited by

              Yes you have been, and you have fixed all my problems, though for some reason your updates did not make it into the Fri Jul 23 05:17:16 EDT 2010 build.  Or at least I had to re-download the versions from redmine in order for my rrd graphs to work after upgrading.  Oh well I guess they will appear sometime later.

              1 Reply Last reply Reply Quote 0
              • C
                cmb
                last edited by

                @BlueMatt:

                Yes you have been, and you have fixed all my problems, though for some reason your updates did not make it into the Fri Jul 23 05:17:16 EDT 2010 build.  Or at least I had to re-download the versions from redmine in order for my rrd graphs to work after upgrading.  Oh well I guess they will appear sometime later.

                That snapshot run started shortly before those changes.

                1 Reply Last reply Reply Quote 0
                • A
                  adx442
                  last edited by

                  @databeestje:

                  • OpenVPN now has traffic and packets stats for all OpenVPN servers.

                  Thanks so much for this.  I've wanted that graph for a long time.

                  1 Reply Last reply Reply Quote 0
                  • D
                    databeestje
                    last edited by

                    The online users graph should be coming fairly soon, it only has 1 datasource.

                    1 Reply Last reply Reply Quote 0
                    • J
                      johnnybe
                      last edited by

                      @databeestje:

                      I've been working on the graphs today
                      …

                      • Added a custom graph page for a start and end date. Which is missing a date picker currently.
                        ...

                      You've been doing a hard work, databeestje. Thanks, indeed.

                      But what kind of date is that below? That's what I have from the custom graph page:

                      Start: 1279989697 End: 1280004097

                      Please, don't get me wrong, just wanna understand.

                      you would not believe the view up here

                      1 Reply Last reply Reply Quote 0
                      • D
                        databeestje
                        last edited by

                        that is the number of seconds since epoch, which is jan 1 1970.

                        We'll be fine until we get to a tuesday in 2038 though.

                        1 Reply Last reply Reply Quote 0
                        • D
                          databeestje
                          last edited by

                          Online openvpn users graph per server is now available as well.

                          1 Reply Last reply Reply Quote 0
                          • R
                            rlai000
                            last edited by

                            It seems its ok and I could see the graphs.

                            But in the log, I've got this:
                            php: /status_rrd_graph_img.php: rrdcolors.inc.php for theme pfsense_ng does not exist, using defaults!

                            -Raylund

                            1 Reply Last reply Reply Quote 0
                            • _
                              _igor_
                              last edited by

                              Quality graph still doesn't work. All other graphs are working.

                              Only one small part of a graph is displayed, some time ago.

                              I too have the message "php: /status_rrd_graph_img.php: rrdcolors.inc.php for theme metallic does not exist, using defaults!"

                              quality.gif
                              quality.gif_thumb

                              1 Reply Last reply Reply Quote 0
                              • D
                                databeestje
                                last edited by

                                The quality graph databases are updated from apinger, so if that's broken you will see that exact behaviour.

                                The graphing front end can only work with the data in the RRD file.

                                1 Reply Last reply Reply Quote 0
                                • _
                                  _igor_
                                  last edited by

                                  hmmm, apinger works. Do you have any idea where to look? I'm a bit lost here. Since a new install of the beta3 never worked…

                                  1 Reply Last reply Reply Quote 0
                                  • I
                                    itsmorefun
                                    last edited by

                                    Hello

                                    With pfSense 2.0-BETA4 built on Sun Aug 1 20:29:11 EDT 2010 FreeBSD 8.1-RELEASE

                                    RDD graphs don't work:
                                    "There has been an error creating the graphs. Please check your systemlogs for further details."

                                    And in logs:
                                    Aug 2 16:33:24 php: /status_rrd_graph_img.php: rrdcolors.inc.php for theme pfsense_ng does not exist, using defaults!
                                    Aug 2 16:33:24 php: /status_rrd_graph_img.php: Failed to create graph with error code 1, the error is: ERROR: This RRD was created on other architecture/usr/bin/nice -n20 /usr/local/bin/rrdtool graph /tmp/system-processor.rrd-day.png –start 1280700000 --end 1280786400 --vertical-label "utilization, number" --color SHADEA#eeeeee --color SHADEB#eeeeee --title "hostname - System :: Processor - 1 day - 5 minutes average" --height 200 --width 620 DEF:"user=/var/db/rrd/system-processor.rrd:user:AVERAGE" DEF:"nice=/var/db/rrd/system-processor.rrd:nice:AVERAGE" DEF:"system=/var/db/rrd/system-processor.rrd:system:AVERAGE" DEF:"interrupt=/var/db/rrd/system-processor.rrd:interrupt:AVERAGE" DEF:"processes=/var/db/rrd/system-processor.rrd:processes:AVERAGE" AREA:"user#990000:user" AREA:"nice#a83c3c:nice:STACK" AREA:"system#b36666:system:STACK" AREA:"interrupt#bd9090:interrupt:STACK" LINE2:"processes#cccccc:processes" COMMENT:"\n" COMMENT:" minimum average maximum current\n" COMMENT:"Use
                                    Aug 2 16:33:24 php: /status_rrd_graph_img.php: rrdcolors.inc.php for theme pfsense_ng does not exist, using defaults!
                                    Aug 2 16:33:24 php: /status_rrd_graph_img.php: Failed to create graph with error code 1, the error is: ERROR: This RRD was created on other architecture/usr/bin/nice -n20 /usr/local/bin/rrdtool graph /tmp/system-processor.rrd-week.png --start 1280700000 --end 1281304800 --vertical-label "utilization, number" --color SHADEA#eeeeee --color SHADEB#eeeeee --title "hostname - System :: Processor - 1 week - 1 hour average" --height 200 --width 620 DEF:"user=/var/db/rrd/system-processor.rrd:user:AVERAGE" DEF:"nice=/var/db/rrd/system-processor.rrd:nice:AVERAGE" DEF:"system=/var/db/rrd/system-processor.rrd:system:AVERAGE" DEF:"interrupt=/var/db/rrd/system-processor.rrd:interrupt:AVERAGE" DEF:"processes=/var/db/rrd/system-processor.rrd:processes:AVERAGE" AREA:"user#990000:user" AREA:"nice#a83c3c:nice:STACK" AREA:"system#b36666:system:STACK" AREA:"interrupt#bd9090:interrupt:STACK" LINE2:"processes#cccccc:processes" COMMENT:"\n" COMMENT:" minimum average maximum current\n" COMMENT:"User
                                    Aug 2 16:33:24 php: /status_rrd_graph_img.php: rrdcolors.inc.php for theme pfsense_ng does not exist, using defaults!
                                    (...)

                                    Any Idea?

                                    Thank

                                    1 Reply Last reply Reply Quote 0
                                    • jimpJ
                                      jimp Rebel Alliance Developer Netgate
                                      last edited by

                                      @itsmorefun:

                                      Aug 2 16:33:24 php: /status_rrd_graph_img.php: Failed to create graph with error code 1, the error is: ERROR: This RRD was created on other architecture

                                      Did you switch between 32 and 64-bit releases? You may just need to rm /var/db/rrd/* and then re-save on the RRD settings.

                                      Remember: Upvote with the 👍 button for any user/post you find to be helpful, informative, or deserving of recognition!

                                      Need help fast? Netgate Global Support!

                                      Do not Chat/PM for help!

                                      1 Reply Last reply Reply Quote 0
                                      • I
                                        itsmorefun
                                        last edited by

                                        @jimp:

                                        @itsmorefun:

                                        Aug 2 16:33:24 php: /status_rrd_graph_img.php: Failed to create graph with error code 1, the error is: ERROR: This RRD was created on other architecture

                                        Did you switch between 32 and 64-bit releases?

                                        No… :-\

                                        @jimp:

                                        You may just need to rm /var/db/rrd/* and then re-save on the RRD settings.

                                        That work!

                                        Thank :-)

                                        1 Reply Last reply Reply Quote 0
                                        • M
                                          marrandy
                                          last edited by

                                          I just downloaded and am testing the latest update -pfSense-2.0-BETA4-4g-20100803-1244-nanobsd-upgrade.img.gz

                                          I don't get the  'quality'  on the RRD graphs.

                                          Any ideas or a fix yet ?

                                          Thanks…its looking really good.

                                          1 Reply Last reply Reply Quote 0
                                          • J
                                            Jonb
                                            last edited by

                                            I went from beta 1 to beta 4 build 04/08/10 and that has broken the RRD graphs apart from from the quality one. I did delete all the rrd files then switch RRD off then back up, I saw it recreate the files but still didn't log anything. Is there anything else I can try to get it to work.

                                            Hosted desktops and servers with support without complication.
                                            www.blueskysystems.co.uk

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.