]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/commitdiff
Added memory and cpu util graphs for services
authormaniacikarus <maniacikarus@ea5c0bd1-69bd-2848-81d8-4f18e57aeed8>
Thu, 13 Mar 2008 19:29:35 +0000 (19:29 +0000)
committermaniacikarus <maniacikarus@ea5c0bd1-69bd-2848-81d8-4f18e57aeed8>
Thu, 13 Mar 2008 19:29:35 +0000 (19:29 +0000)
Changed collectd config

git-svn-id: http://svn.ipfire.org/svn/ipfire/branches/2.1/trunk@1266 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8

config/cfgroot/graphs.pl
config/collectd/collectd.conf
config/rootfiles/core/10/files
config/rootfiles/core/10/update.sh
html/cgi-bin/graphs.cgi
html/cgi-bin/qos.cgi
html/cgi-bin/services.cgi

index 9de45f944044cbc30b71ccd967408f26a688a393..e4789e16b29b16fd2868156f2ea88a695bfdc88c 100644 (file)
@@ -38,8 +38,9 @@ my $value;
 my @args = ();
 my $count = 0;
 my @mbmongraphs = ();
-if ( -e "/var/log/rrd/collectd/localhost/mbmon" ){
-        @mbmongraphs = `ls /var/log/rrd/collectd/localhost/mbmon/`;
+my @processesgraph = `ls -dA $rrdlog/collectd/localhost/processes-*/`;
+if ( -e "$rrdlog/collectd/localhost/mbmon" ){
+        @mbmongraphs = `ls $rrdlog/collectd/localhost/mbmon/`;
         foreach (@mbmongraphs){
                 chomp($_);
                                         my @name=split(/\./,$_);my $label = $name[0]; $label=~ s/-//;
@@ -47,7 +48,7 @@ if ( -e "/var/log/rrd/collectd/localhost/mbmon" ){
                                         $mbmonsettings{'LINE-'.$name[0]}="checked";
                                 }
         }
-        
+
 &General::readhash("${General::swroot}/mbmon/settings", \%mbmonsettings);
 use Encode 'from_to';
 
@@ -76,8 +77,8 @@ sub updatecpugraph {
         "--color", "SHADEB".$color{"color19"},
         "--color", "BACK".$color{"color21"},
         "-t $Lang::tr{'cpu usage per'} $Lang::tr{$period}");
-        
-        if ( -e "/var/log/rrd/collectd/localhost/cpu-1/" ){
+
+        if ( -e "$rrdlog/collectd/localhost/cpu-1/" ){
         push(@command,"DEF:iowait0=$rrdlog/collectd/localhost/cpu-0/cpu-wait.rrd:value:AVERAGE",
                                "DEF:nice0=$rrdlog/collectd/localhost/cpu-0/cpu-nice.rrd:value:AVERAGE",
                                "DEF:interrupt0=$rrdlog/collectd/localhost/cpu-0/cpu-interrupt.rrd:value:AVERAGE",
@@ -513,7 +514,7 @@ sub overviewgraph {
                if ( $classline[0] eq $qossettings{'DEV'} )
                {
                        $color=random_hex_color(6);
-                       push(@command, "DEF:$classline[1]=/var/log/rrd/class_$qossettings{'CLASSPRFX'}-$classline[1]_$qossettings{'DEV'}.rrd:bytes:AVERAGE");
+                       push(@command, "DEF:$classline[1]=$rrdlog/class_$qossettings{'CLASSPRFX'}-$classline[1]_$qossettings{'DEV'}.rrd:bytes:AVERAGE");
 
                        if ($count eq "1") {
                                push(@command, "AREA:$classline[1]$color:Klasse $classline[1] -".sprintf("%15s",$classline[8]));
@@ -621,6 +622,63 @@ sub updatehwfangraph {
        print "$ERROR";
 }
 
+sub updateprocessesgraph {
+
+  my $period = $_[0];
+  my $count="0";
+
+  my @command = ("$graphs/processes-$period.png",
+       "--start", "-1$period", "-aPNG", "-i", "-W www.ipfire.org",
+       "--alt-y-grid", "-w 600", "-h 125",
+       "--color", "SHADEA".$color{"color19"},"--color",
+       "SHADEB".$color{"color19"},"--color",
+       "BACK".$color{"color21"},
+       "-t $Lang::tr{'processes'} $Lang::tr{'graph per'} $Lang::tr{$period}");
+
+       foreach(@processesgraph){
+                       chomp($_);my @name=split(/\-/,$_);chop($name[1]);
+                       push(@command,"DEF:".$name[1]."user=".$_."ps_cputime.rrd:user:AVERAGE");
+                       push(@command,"DEF:".$name[1]."system=".$_."ps_cputime.rrd:syst:AVERAGE");
+                       push(@command,"CDEF:".$name[1]."=".$name[1]."user,".$name[1]."system,+");}
+
+                       push(@command,"COMMENT:".$Lang::tr{'caption'}."\\j");
+
+       foreach(@processesgraph){
+                       chomp($_);my @name=split(/\-/,$_);chop($name[1]);
+                       if ($count eq "0") {push(@command,"AREA:".$name[1].random_hex_color(6)."A0:".$name[1]);}
+                       else {push(@command,"STACK:".$name[1].random_hex_color(6)."A0:".$name[1]);}
+                       $count++;}
+
+       RRDs::graph (@command);
+       $ERROR = RRDs::error;
+       print "$ERROR";
+
+  my $count="0";
+
+  my @command = ("$graphs/processesmem-$period.png",
+       "--start", "-1$period", "-aPNG", "-i", "-W www.ipfire.org",
+       "--alt-y-grid", "-w 600", "-h 125",
+       "--color", "SHADEA".$color{"color19"},"--color",
+       "SHADEB".$color{"color19"},"--color",
+       "BACK".$color{"color21"},
+       "-t $Lang::tr{'processes'} $Lang::tr{'memory'} $Lang::tr{'graph per'} $Lang::tr{$period}");
+
+       foreach(@processesgraph){
+                       chomp($_);my @name=split(/\-/,$_);chop($name[1]);
+                       push(@command,"DEF:".$name[1]."=".$_."ps_rss.rrd:value:AVERAGE");}
+                       push(@command,"COMMENT:".$Lang::tr{'caption'}."\\j");
+
+       foreach(@processesgraph){
+                       chomp($_);my @name=split(/\-/,$_);chop($name[1]);
+                       if ($count eq "0") {push(@command,"AREA:".$name[1].random_hex_color(6)."A0:".$name[1]);}
+                       else {push(@command,"STACK:".$name[1].random_hex_color(6)."A0:".$name[1]);}
+                       $count++;}
+
+       RRDs::graph (@command);
+       $ERROR = RRDs::error;
+       print "$ERROR";
+}
+
 # Generate a random color, used by Qos Graph to be independent from the amount of values
 
 sub random_hex_color {
index 931fc37cca6fb5d346064eeaa31696a9260ac72f..f1c7e655d353179c0a7aa7b32483a9325c2ab728 100644 (file)
@@ -12,83 +12,19 @@ TypesDB     "/usr/lib/collectd/types.db"
 Interval     30
 ReadThreads  3
 
-#LoadPlugin apache
-#LoadPlugin battery
 LoadPlugin cpu
-#LoadPlugin cpufreq
-#LoadPlugin df
 LoadPlugin disk
-#LoadPlugin dns
-#LoadPlugin email
-#LoadPlugin entropy
-#LoadPlugin exec
-#LoadPlugin hddtemp
 LoadPlugin interface
 LoadPlugin iptables
-#LoadPlugin ipvs
-#LoadPlugin irq
 LoadPlugin load
 #LoadPlugin logfile
 LoadPlugin mbmon
-#LoadPlugin memcached
 LoadPlugin memory
-#LoadPlugin multimeter
-#LoadPlugin mysql
-#LoadPlugin netlink
-#LoadPlugin network
-#LoadPlugin nfs
-#LoadPlugin nginx
-#LoadPlugin ntpd
-#LoadPlugin nut
-#LoadPlugin perl
 LoadPlugin ping
-#LoadPlugin processes
+LoadPlugin processes
 LoadPlugin rrdtool
-#LoadPlugin sensors
-#LoadPlugin serial
 LoadPlugin swap
 LoadPlugin syslog
-#LoadPlugin tape
-#LoadPlugin tcpconns
-#LoadPlugin unixsock
-#LoadPlugin users
-
-#<Plugin apache>
-#      URL "http://localhost/status?auto"
-#      User "www-user"
-#      Password "secret"
-#      CACert "/etc/ssl/ca.crt"
-#</Plugin>
-
-
-#<Plugin df>
-#      Device "/dev/hda"
-#      Device "192.168.0.2:/mnt/nfs"
-#      MountPoint "/home"
-#      FSType "ext3"
-#      IgnoreSelected false
-#</Plugin>
-
-#<Plugin dns>
-#      Interface "eth0"
-#      IgnoreSource "192.168.0.1"
-#</Plugin>
-
-#<Plugin email>
-#      SocketFile "/usr/var/run/collectd-email"
-#      SocketGroup "collectd"
-#      SocketPerms "0770"
-#      MaxConns 5
-#</Plugin>
-
-#<Plugin exec>
-#      Exec "user:group" "/path/to/exec"
-#</Plugin>
-
-#<Plugin hddtemp>
-#      Host "127.0.0.1"
-#      Port "7634"
-#</Plugin>
 
 <Plugin interface>
        Interface "ppp0"
@@ -109,13 +45,6 @@ LoadPlugin syslog
        Chain filter FORWARD DROP_Wirelessforward
 </Plugin>
 
-#<Plugin irq>
-#      Irq 7
-#      Irq 8
-#      Irq 9
-#      IgnoreSelected true
-#</Plugin>
-
 #<Plugin logfile>
 #      LogLevel info
 #      File STDOUT
@@ -126,64 +55,27 @@ LoadPlugin syslog
        Port "411"
 </Plugin>
 
-#<Plugin memcached>
-#      Host "127.0.0.1"
-#      Port "11211"
-#</Plugin>
-
-#<Plugin mysql>
-#      Host "database.serv.er"
-#      User "db_user"
-#      Password "secret"
-#      Database "db_name"
-#</Plugin>
-
-#<Plugin netlink>
-#      Interface "All"
-#      VerboseInterface "All"
-#      QDisc "eth0" "pfifo_fast-1:0"
-#      Class "ppp0" "htb-1:10"
-#      Filter "ppp0" "u32-1:0"
-#</Plugin>
-
-#<Plugin network>
-#      Server "ff18::efc0:4a42" "25826"
-#      Server "239.192.74.66" "25826"
-#      Listen "ff18::efc0:4a42" "25826"
-#      Listen "239.192.74.66" "25826"
-#      TimeToLive "128"
-#      Forward false
-#      CacheFlush 1800
-#</Plugin>
-
-#<Plugin nginx>
-#      URL "http://localhost/status?auto"
-#      User "www-user"
-#      Password "secret"
-#      CACert "/etc/ssl/ca.crt"
-#</Plugin>
-
-#<Plugin ntpd>
-#      Host "localhost"
-#      Port 123
-#</Plugin>
-
-#<Plugin nut>
-#      UPS "upsname@hostname:port"
-#</Plugin>
-
-#<Plugin perl>
-#      IncludeDir "/my/include/path"
-#      BaseName "Collectd::Plugin"
-#      LoadPlugin foo
-#</Plugin>
 
 <Plugin ping>
        Host "gateway"
 </Plugin>
 
 <Plugin processes>
-       Process "collectd"
+       Process "sshd"
+       Process "smdb"
+       Process "nmbd"
+       Process "squid"
+       Process "squidguard"
+       Process "pluto"
+       Process "snort"
+       Process "openvpn"
+       Process "qemu"
+       Process "rtorrent"
+       Process "mpd"
+       Process "asterisk"
+       Process "java"
+       Process "mysqld"
+       Process "spamd"
 </Plugin>
 
 <Plugin rrdtool>
@@ -192,25 +84,6 @@ LoadPlugin syslog
        CacheFlush   900
 </Plugin>
 
-#<Plugin sensors>
-#      Sensor "it8712-isa-0290/temperature-temp1"
-#      Sensor "it8712-isa-0290/fanspeed-fan3"
-#      Sensor "it8712-isa-0290/voltage-in8"
-#      IgnoreSelected false
-#</Plugin>
-
 <Plugin syslog>
        LogLevel info
 </Plugin>
-
-#<Plugin tcpconns>
-#      ListeningPorts false
-#      LocalPort "6882"
-#      RemotePort "80"
-#</Plugin>
-
-#<Plugin unixsock>
-#      SocketFile "/usr/var/run/collectd-unixsock"
-#      SocketGroup "collectd"
-#      SocketPerms "0660"
-#</Plugin>
index 7c23532ac30d08c2bbab9e881fdfcfe89837f3c3..851b03501394003e5640c4a4690b00e939cdc9ab 100644 (file)
@@ -2,6 +2,9 @@ usr/local/bin/wirelessctrl
 srv/web/ipfire/cgi-bin/optionsfw.cgi
 srv/web/ipfire/cgi-bin/gui.cgi
 srv/web/ipfire/cgi-bin/qos.cgi
+srv/web/ipfire/cgi-bin/services.cgi
+srv/web/ipfire/cgi-bin/graphs.cgi
 var/ipfire/langs
+var/ipfire/graphs.pl
 lib/modules/2.6.16.57-ipfire/kernel/drivers/parport/pt_drv.ko
 lib/modules/2.6.16.57-ipfire-smp/kernel/drivers/parport/pt_drv.ko
index 3e4c5db7887485ca2fb39b0e52c5ddb0688b3aa8..a5b3c62f022644f3c388fb18c62e297132f9321c 100644 (file)
@@ -4,3 +4,4 @@
 extract_files
 perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang"
 depmod -a
+/etc/init.d/collectd restart
index 4c7c7e181ac3d9535e3d0f6f222a83f949f3e77b..3c1961e59127c96a8c639b1ac1ed80d749d1dec8 100644 (file)
@@ -48,6 +48,7 @@ $cgigraphs[1] = '' unless defined $cgigraphs[1];
 
 if ($cgigraphs[1] =~ /(load)/) {&Graphs::updateloadgraph ("hour");&Graphs::updateloadgraph ("week");&Graphs::updateloadgraph ("month");&Graphs::updateloadgraph ("year");}
 if ($cgigraphs[1] =~ /(cpu)/) {&Graphs::updatecpugraph ("hour");&Graphs::updatecpugraph ("week");&Graphs::updatecpugraph ("month");&Graphs::updatecpugraph ("year");}
+if ($cgigraphs[1] =~ /(processes)/) {&Graphs::updateprocessesgraph ("hour");&Graphs::updateprocessesgraph ("week");&Graphs::updateprocessesgraph ("month");&Graphs::updateprocessesgraph ("year");}
 if ($cgigraphs[1] =~ /(memory|swap)/) {&Graphs::updatememgraph ("hour");&Graphs::updatememgraph ("week");&Graphs::updatememgraph ("month");&Graphs::updatememgraph ("year");}
 if ($cgigraphs[1] =~ /disk/){
           my @devices = `kudzu -qps -c HD | grep device: | cut -d" " -f2 | sort | uniq`;
@@ -70,7 +71,7 @@ if ($cgigraphs[1] =~ /(network|green|blue|orange|red|ipsec|lq)/) {
 
 &Header::openbigbox('100%', 'left');
 
-if ($cgigraphs[1] =~ /(green|blue|orange|red|ipsec|lq|cpu|memory|swap|disk|load|fwhits)/) {
+if ($cgigraphs[1] =~ /(green|blue|orange|red|ipsec|lq|cpu|memory|swap|disk|load|fwhits|processes)/) {
        my $graph = $cgigraphs[1];
        my $graphname = ucfirst(lc($cgigraphs[1]));
        &Header::openbox('100%', 'center', "$graphname $Lang::tr{'graph'}");
index bb78d2889f1b05dad24f198a6cfbaa19d1038065..70ec4286c5686cb753286e3e8e71132d184575c7 100644 (file)
@@ -554,6 +554,7 @@ END
 200;imq0;icmp;;;;;
 203;imq0;esp;;;;;
 203;imq0;tcp;;;;1194;
+203;imq0;udp;;;;1194;
 203;imq0;udp;;4500;;4500;
 203;imq0;udp;;500;;500;
 204;imq0;tcp;;;;80;
index c7314be9264af45d99dbfd91f908f555875f35c1..67dd04353663f18e4e2a97c36c42489829d88f15 100644 (file)
@@ -28,6 +28,7 @@ use strict;
 require '/var/ipfire/general-functions.pl';
 require "${General::swroot}/lang.pl";
 require "${General::swroot}/header.pl";
+require "${General::swroot}/graphs.pl";
 
 #workaround to suppress a warning when a variable is used only once
 my @dummy = ( ${Header::colourred} );
@@ -41,6 +42,8 @@ my %mainsettings = ();
 my %netsettings=();
 &General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
 
+&Graphs::updateprocessesgraph ("day");
+
 my %cgiparams=();
 # Maps a nice printable name to the changing part of the pid file, which
 # is also the name of the program
@@ -141,7 +144,7 @@ my @pak = `find /opt/pakfire/db/installed/meta-* | cut -d"-" -f2`;
 foreach (@pak)
 {
        chomp($_);
-       
+
        # Check which of the paks are services
        my @svc = `find /etc/init.d/$_ | cut -d"/" -f4`;
        foreach (@svc)
@@ -154,7 +157,7 @@ foreach (@pak)
            if ($_ ne "alsa")
            {
                $lines++;
-               if ($lines % 2) 
+               if ($lines % 2)
                {
                    print "<tr bgcolor='$color{'color22'}'>";
                }
@@ -169,7 +172,7 @@ foreach (@pak)
                print "<td align='center'><A HREF=services.cgi?$_!stop><img alt='$Lang::tr{'stop'}' title='$Lang::tr{'stop'}' src='/images/go-down.png' border='0' /></A></td> ";
                my $status = &isrunningaddon($_);
                $status =~ s/\\e\[[0-1]\;[0-9]+m//g;
-               
+
                chomp($status);
                print "$status";
                print "</tr>";
@@ -179,6 +182,32 @@ foreach (@pak)
 
 print "</table></div>\n";
 
+&Header::closebox();
+
+&Header::openbox('100%', 'center', "$Lang::tr{'processes'} $Lang::tr{'graph'}");
+if (-e "$Header::graphdir/processes-day.png") {
+       my $ftime = localtime((stat("$Header::graphdir/processes-day.png"))[9]);
+       print "<center><b>$Lang::tr{'the statistics were last updated at'}: $ftime</b></center><br />\n";
+       print "<a href='/cgi-bin/graphs.cgi?graph=processes'>";
+       print "<img alt='' src='/graphs/processes-day.png' border='0' />";
+       print "</a>";
+} else {
+       print $Lang::tr{'no information available'};
+}
+print "<br />\n";
+&Header::closebox();
+
+&Header::openbox('100%', 'center', "$Lang::tr{'processes'} $Lang::tr{'memory'} $Lang::tr{'graph'}");
+if (-e "$Header::graphdir/processesmem-day.png") {
+       my $ftime = localtime((stat("$Header::graphdir/processesmem-day.png"))[9]);
+       print "<center><b>$Lang::tr{'the statistics were last updated at'}: $ftime</b></center><br />\n";
+       print "<a href='/cgi-bin/graphs.cgi?graph=processesmem'>";
+       print "<img alt='' src='/graphs/processesmem-day.png' border='0' />";
+       print "</a>";
+} else {
+       print $Lang::tr{'no information available'};
+}
+print "<br />\n";
 &Header::closebox();
 &Header::closebigbox();
 &Header::closepage();
@@ -197,7 +226,7 @@ sub isautorun
        if ($init ne '') {
   $status = "<td align='center'><A HREF=services.cgi?$_!enable><img alt='$Lang::tr{'activate'}' title='$Lang::tr{'activate'}' src='/images/off.gif' border='0' width='16' height='16' /></A></td>";
        }
-       
+
 return $status;
 }
 
@@ -240,7 +269,7 @@ sub isrunningaddon
        my $testcmd = '';
        my $exename;
        my @memory;
-       
+
        my $testcmd = `/usr/local/bin/addonctrl $_ status`;
 
        if ( $testcmd =~ /is\ running/ && $testcmd !~ /is\ not\ running/){
@@ -249,9 +278,9 @@ sub isrunningaddon
 
        my @pid = split(/\s/,$testcmd);
        $status .="<td align='center'>$pid[0]</td>";
-       
+
        my $memory = 0;
-       
+
        foreach (@pid){
        chomp($_);
        if (open(FILE, "/proc/$_/statm")){