diff --git a/config/cfgroot/graphs.pl b/config/cfgroot/graphs.pl
index 9de45f944..e4789e16b 100644
--- a/config/cfgroot/graphs.pl
+++ b/config/cfgroot/graphs.pl
@@ -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 {
diff --git a/config/collectd/collectd.conf b/config/collectd/collectd.conf
index 931fc37cc..f1c7e655d 100644
--- a/config/collectd/collectd.conf
+++ b/config/collectd/collectd.conf
@@ -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
-
-#
-# URL "http://localhost/status?auto"
-# User "www-user"
-# Password "secret"
-# CACert "/etc/ssl/ca.crt"
-#
-
-
-#
-# Device "/dev/hda"
-# Device "192.168.0.2:/mnt/nfs"
-# MountPoint "/home"
-# FSType "ext3"
-# IgnoreSelected false
-#
-
-#
-# Interface "eth0"
-# IgnoreSource "192.168.0.1"
-#
-
-#
-# SocketFile "/usr/var/run/collectd-email"
-# SocketGroup "collectd"
-# SocketPerms "0770"
-# MaxConns 5
-#
-
-#
-# Exec "user:group" "/path/to/exec"
-#
-
-#
-# Host "127.0.0.1"
-# Port "7634"
-#
Interface "ppp0"
@@ -109,13 +45,6 @@ LoadPlugin syslog
Chain filter FORWARD DROP_Wirelessforward
-#
-# Irq 7
-# Irq 8
-# Irq 9
-# IgnoreSelected true
-#
-
#
# LogLevel info
# File STDOUT
@@ -126,64 +55,27 @@ LoadPlugin syslog
Port "411"
-#
-# Host "127.0.0.1"
-# Port "11211"
-#
-
-#
-# Host "database.serv.er"
-# User "db_user"
-# Password "secret"
-# Database "db_name"
-#
-
-#
-# Interface "All"
-# VerboseInterface "All"
-# QDisc "eth0" "pfifo_fast-1:0"
-# Class "ppp0" "htb-1:10"
-# Filter "ppp0" "u32-1:0"
-#
-
-#
-# 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
-#
-
-#
-# URL "http://localhost/status?auto"
-# User "www-user"
-# Password "secret"
-# CACert "/etc/ssl/ca.crt"
-#
-
-#
-# Host "localhost"
-# Port 123
-#
-
-#
-# UPS "upsname@hostname:port"
-#
-
-#
-# IncludeDir "/my/include/path"
-# BaseName "Collectd::Plugin"
-# LoadPlugin foo
-#
Host "gateway"
- 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"
@@ -192,25 +84,6 @@ LoadPlugin syslog
CacheFlush 900
-#
-# Sensor "it8712-isa-0290/temperature-temp1"
-# Sensor "it8712-isa-0290/fanspeed-fan3"
-# Sensor "it8712-isa-0290/voltage-in8"
-# IgnoreSelected false
-#
-
LogLevel info
-
-#
-# ListeningPorts false
-# LocalPort "6882"
-# RemotePort "80"
-#
-
-#
-# SocketFile "/usr/var/run/collectd-unixsock"
-# SocketGroup "collectd"
-# SocketPerms "0660"
-#
diff --git a/config/rootfiles/core/10/files b/config/rootfiles/core/10/files
index 7c23532ac..851b03501 100644
--- a/config/rootfiles/core/10/files
+++ b/config/rootfiles/core/10/files
@@ -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
diff --git a/config/rootfiles/core/10/update.sh b/config/rootfiles/core/10/update.sh
index 3e4c5db78..a5b3c62f0 100644
--- a/config/rootfiles/core/10/update.sh
+++ b/config/rootfiles/core/10/update.sh
@@ -4,3 +4,4 @@
extract_files
perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang"
depmod -a
+/etc/init.d/collectd restart
diff --git a/html/cgi-bin/graphs.cgi b/html/cgi-bin/graphs.cgi
index 4c7c7e181..3c1961e59 100644
--- a/html/cgi-bin/graphs.cgi
+++ b/html/cgi-bin/graphs.cgi
@@ -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'}");
diff --git a/html/cgi-bin/qos.cgi b/html/cgi-bin/qos.cgi
index bb78d2889..70ec4286c 100644
--- a/html/cgi-bin/qos.cgi
+++ b/html/cgi-bin/qos.cgi
@@ -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;
diff --git a/html/cgi-bin/services.cgi b/html/cgi-bin/services.cgi
index c7314be92..67dd04353 100644
--- a/html/cgi-bin/services.cgi
+++ b/html/cgi-bin/services.cgi
@@ -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 "
";
}
@@ -169,7 +172,7 @@ foreach (@pak)
print " | ";
my $status = &isrunningaddon($_);
$status =~ s/\\[[0-1]\;[0-9]+m//g;
-
+
chomp($status);
print "$status";
print "
";
@@ -179,6 +182,32 @@ foreach (@pak)
print "\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 "$Lang::tr{'the statistics were last updated at'}: $ftime
\n";
+ print "";
+ print "
";
+ print "";
+} else {
+ print $Lang::tr{'no information available'};
+}
+print "
\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 "$Lang::tr{'the statistics were last updated at'}: $ftime
\n";
+ print "";
+ print "
";
+ print "";
+} else {
+ print $Lang::tr{'no information available'};
+}
+print "
\n";
&Header::closebox();
&Header::closebigbox();
&Header::closepage();
@@ -197,7 +226,7 @@ sub isautorun
if ($init ne '') {
$status = " | ";
}
-
+
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 .="$pid[0] | ";
-
+
my $memory = 0;
-
+
foreach (@pid){
chomp($_);
if (open(FILE, "/proc/$_/statm")){