]>
git.ipfire.org Git - people/teissler/ipfire-2.x.git/blob - src/scripts/qosd
4 ##########################################
8 ## The tc-graph daemon script: "tc-collector"
9 ## Which is part of the ADSL-optimizer.
11 ## The script will become a daemon and periodically collect data
12 ## from the Linux traffic control system. The collected data is
13 ## stored in some RRD-data files, which is created automatically by
14 ## the script if they don't exist.
18 ## How the RRD-data is displayed as graphs is not part of the
19 ## tc-collector tool. But we recommend using the RRD-frontend 'ddraw'.
20 ## We have included some 'ddraw' examples (which is hardcoded to use
21 ## files from '/var/spool/rrdqueues').
23 ## drraw: http://web.taranis.org/drraw/
28 ## RRDtools Perl interface RRDs
33 ## Jesper Dangaard Brouer <hawk@diku.dk>, d.16/4-2004
36 ## 2004-04-16: Initial version.
37 ## 2004-05-27: Daemon version.
39 ## $Id: tc-collector.pl,v 1.12 2005/03/19 19:31:08 hawk Exp $
40 ##########################################
43 # * Calc time used to parse, use to make time steps more precise
44 # * Device list support
45 # * Detecting the correct devices
47 # Configuration options:
49 my $device = "$ARGV[0]";
50 our $rrd_datadir = "/var/log/rrd/";
51 our $event_datadir = $rrd_datadir;
53 our $tc_command = "/sbin/tc";
55 # A trick is to set the environment PERL5LIB to include $GRAPHDIR
56 # This is done by the init-script
57 # ($GRAPHDIR is obtained from /usr/local/etc/ADSL-optimizer.conf)
58 my $include_dir = '/var/ipfire/qos/bin';
61 # Create the $rrd_datadir if it doesn't exists
62 if ( ! -d
$rrd_datadir ) {
63 print "RRD-datadir not found, creating it: $rrd_datadir \n";
64 my $status = system("mkdir $rrd_datadir");
65 die "\nERROR cannot create \"$rrd_datadir\"\n" unless $status == 0;
71 # or die "Can't become a daemon: $!";
73 # The init scripts will do the right "daemon" thing...
75 print "Becoming a daemon...\n";
78 die "Couldn't fork: $!" unless defined($pid);
85 $SIG{INT
} = $SIG{TERM
} = $SIG{HUP
} = \
&signal_handler
;
86 $SIG{PIPE
} = 'IGNORE';
90 require "$include_dir/parse-func.pl";
91 require "$include_dir/event-func.pl";
92 require "$include_dir/RRD-func.pl";
94 until ($time_to_die) {
96 #print "Parsing tc statistics on $device\n";
97 my $res = parse_class
($device);
99 print " Error when parsing classes on $device\n";
102 #print "Updating RRD data-files\n";
103 $res = update_rrds
();
105 # print " Error updating RRDs: \"$res\"\n";
110 # my $timestamp = time;
111 # print "$timestamp\n";
116 print "tc-collector daemon exiting ... bye bye!\n";