The new filter feature in 1.24 is really useful for consolidating RRDs from 
various
sources but also to separate probes on a single box into different process so a 
timeout
doesnt affect all the probes.

There is 2 bugs in 1.24 that needs attention.

The first one is proper GetOpt handling for the new --filter argument (maybe my 
version of GetOpt is picky)

The second one is that even if you specify a filter, smokeping will still 
update *all* the RRDs regardless if they match the filter or not in update_rrds.

Yes it does only the measures for the filtered ones but all RRDs are updated 
which cause packet lost to mysteriously appears in FPing RRDs when another 
smokeping process just updating Curl RRDs write null values to FPing RRDs as 
well.

Patch is below, hope it helps others.

Francois Baligant ([EMAIL PROTECTED])
Wanadoo S.A. - Network Strategy
Tel : +33 1 58 88 53 19
48 Rue Camille Desmoulins
92791 Issy les Moulineaux Cedex 9
France


--- smokeping-1.24-orig/lib/Smokeping.pm        2003-10-05 16:20:05.000000000 
+0200
+++ smokeping-1.24/lib/Smokeping.pm     2003-12-01 19:56:04.000000000 +0100
@@ -724,6 +724,7 @@
        remark => ($tree->{remark} || ''),
        overview => get_overview( $cfg,$q,$tree,$open ),
        body => get_detail( $cfg,$q,$tree,$open ),
+       target_ip => ($tree->{host} || ''),
        owner => $cfg->{General}{owner},
         contact => $cfg->{General}{contact},
         author => '<A HREF="http://tobi.oetiker.ch/";>Tobi&nbsp;Oetiker</A>',
@@ -757,8 +758,25 @@
     my $probe = shift;
     my $tree = shift;
     my $name = shift;
+
     $probe = $tree->{probe} if defined $tree->{probe};
     foreach my $prop (keys %{$tree}) {
+
+       if ($opt{filter} && scalar @{$opt{filter}}){
+            my $ok = 0;
+            for (@{$opt{filter}}){
+              /^\!(.+)$/ && do {
+                "$name/$prop" =~ /^$1/ && do{ $ok = 0};
+                next;
+              };
+              /^(.+)$/ && do {
+                "$name/$prop" =~ /^$1/ && do {$ok = 1};
+                next;
+              };
+            }
+            next unless $ok;
+        };
+
        next if $prop eq "PROBE_CONF";
         if (ref $tree->{$prop} eq 'HASH'){
             update_rrds $cfg, $probes, $probe, $tree->{$prop}, $name."/$prop";
@@ -1776,7 +1794,7 @@
     my $cfgfile = shift;
     $opt{filter}=[];
     GetOptions(\%opt, 'version', 'email', ,'man','help',
-                      'makepod','debug','restart', 'nodemon|nodaemon') or 
pod2usage(2);
+                      'makepod','debug','restart', 'filter=s', 
'nodemon|nodaemon') or pod2usage(2);
     if($opt{version})  { print "$RCS_VERSION\n"; exit(0) };
     if($opt{man})      {  pod2usage(-verbose => 2); exit 0 };
     if($opt{help})     {  pod2usage(-verbose => 1); exit 0 };

--
Unsubscribe mailto:[EMAIL PROTECTED]
Help        mailto:[EMAIL PROTECTED]
Archive     http://www.ee.ethz.ch/~slist/smokeping-users
WebAdmin    http://www.ee.ethz.ch/~slist/lsg2.cgi

Reply via email to