]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] rspamd_stats: add basic summary 1130/head
authorAlexander Moisseev <moiseev@mezonplus.ru>
Mon, 14 Nov 2016 14:28:34 +0000 (17:28 +0300)
committerAlexander Moisseev <moiseev@mezonplus.ru>
Mon, 14 Nov 2016 14:28:34 +0000 (17:28 +0300)
utils/rspamd_stats.pl

index 53b65cef0a9c57c3e2c93db7d24ba9688f4297aa..f360de8affdb174434f11a5448878419ed172833 100644 (file)
@@ -1,5 +1,6 @@
 #!/usr/bin/env perl
 
+use 5.010;
 use Data::Dumper;
 use Getopt::Long;
 use Pod::Usage;
@@ -58,6 +59,12 @@ my %sym_res;
 my $rspamd_log;
 my $enabled = 0;
 
+my %timeStamp;
+my %scanTime = (
+    max   => 0,
+    total => 0,
+);
+
 if ($log_file eq '-' || $log_file eq '') {
   $rspamd_log = \*STDIN;
   &ProcessLog();
@@ -158,6 +165,20 @@ Junk changes / total junk hits : %6d/%-6d (%7.3f%%)
   }
 }
 
+print "
+=== Summary ", '=' x 68, "
+Messages scanned: $total";
+printf " [ %s / %s ]
+", $timeStamp{'start'}, $timeStamp{'end'}
+  if defined $timeStamp{'start'};
+say '';
+printf "scan time min/avg/max = %.2f/%.2f/%.2f s
+", $scanTime{'min'} / 1000,
+  ($total) ? $scanTime{'total'} / $total / 1000 : undef,
+  $scanTime{'max'} / 1000
+  if exists $scanTime{'min'};
+say '=' x 80;
+
 exit;
 
 sub ProcessLog {
@@ -169,14 +190,20 @@ sub ProcessLog {
     next if !$enabled;
 
     if (/^.*rspamd_task_write_log.*$/) {
-      my @elts = split /\s+/;
-      my $ts = $elts[0] . ' ' . $elts[1];
+      $timeStamp{'end'} = join ' ', ( split /\s+/ )[ 0 .. 1 ];
 
-      if ($_ !~ /\[(-?\d+(?:\.\d+)?)\/(-?\d+(?:\.\d+)?)\]\s+\[([^\]]+)\]/) {
+      if ($_ !~ /\[(-?\d+(?:\.\d+)?)\/(-?\d+(?:\.\d+)?)\]\s+\[([^\]]+)\].+? time: (\d+\.\d+)ms real/) {
         #print "BAD: $_\n";
         next;
       }
 
+      $timeStamp{'start'} //= $timeStamp{'end'};
+      $scanTime{'min'} = $4
+        if ( !exists $scanTime{'min'} || $scanTime{'min'} > $4 );
+      $scanTime{'max'} = $4
+        if ( $scanTime{'max'} < $4 );
+      $scanTime{'total'} += $4;
+
       $total ++;
       my $score = $1 * 1.0;