On Mon, 19 Sep 2005 14:55:40 -0800, "Jim W. Weller" wrote in <[EMAIL PROTECTED]>: > > I have a mail log that I parse with an external script to do counts > of sent and recipients (which are bcc's). ... > Why are my graphs for this (http://bb.uaa.alaska.edu/mrtg2/emails. > html) always zero? > Even when I send a bunch of mails to make sure the values > for last and this are different and verify the numeric difference. ... > I think I'm clear on the difference between "normal", gauge, and > absolute. This one is normal because the counter continues to grow > and I want mrtg to calc the diff between this and last.
My suggestion: 1) Read MRTG manual http://people.ee.ethz.ch/~oetiker/webtools/mrtg/mrtg-reference.html 2) repeat step 1 several times. 3) Use 'gauge' option. I wrote template script so that you can use 'gauge' option: --- >8 ------ >8 ------ >8 ------ >8 ------ >8 ------ >8 ------ >8 --- #!/usr/bin/perl -w use strict; use constant BASE_DIR => '.'; use constant LASTSEEN_LOG => BASE_DIR . '/app.lastseen.log'; use constant APP_LOG => BASE_DIR . '/app.log'; sub load_lastseen() { my $lastseen; if (open(LASTSEEN, '<', LASTSEEN_LOG)) { $lastseen = <LASTSEEN>; close(LASTSEEN); chomp($lastseen); } else { $lastseen = '00000000000000'; } return $lastseen; } sub save_lastseen($) { my ($lastseen) = @_; open(LASTSEEN, '>', LASTSEEN_LOG) or die "open failed: " . LASTSEEN_LOG . ": $!"; print LASTSEEN $lastseen, "\n"; # add NL for human readability close(LASTSEEN); } sub process_applog($) { my ($lastseen) = @_; my ($in_val, $out_val) = (0, 0); my ($timestamp); my ($year, $mon_str, $day, $hour, $min, $sec); my %str2mon = ( 'Jan' => 1, 'Feb' => 2, 'Mar' => 3, 'Apr' => 4, 'May' => 5, 'Jun' => 6, 'Jul' => 7, 'Aug' => 8, 'Sep' => 9, 'Oct' => 10, 'Nov' => 11, 'Dec' => 12, ); $year = (localtime(time))[5] + 1900; open(APPLOG, '<', APP_LOG) or die "open failed: " . APP_LOG . ": $!"; while (<APPLOG>) { # expect syslogd style log format ($mon_str, $day, $hour, $min, $sec) = (m/^(\S+)\s+(\d+)\s+(\d+):(\d+):(\d+)\s+/o); $timestamp = sprintf("%04d%02d%02d%02d%02d%02d", $year, $str2mon{$mon_str}, $day, $hour, $min, $sec); next if ($timestamp le $$lastseen); $$lastseen = $timestamp; # your matching logic goes here if (m/something in/o) { $in_val++; } elsif (m/anything out/o) { $out_val++; } } close(APPLOG); return ($in_val, $out_val); } sub show_result($$) { my ($in_val, $out_val) = @_; print $in_val, "\n"; print $out_val, "\n"; print "\n"; # uptime in human readable format print "app name\n"; # target name } sub main() { my ($lastseen, $in_val, $out_val); $lastseen = load_lastseen(); ($in_val, $out_val) = process_applog(\$lastseen); save_lastseen($lastseen); show_result($in_val, $out_val); } main(); # EOF --- >8 ------ >8 ------ >8 ------ >8 ------ >8 ------ >8 ------ >8 --- Hope this helps, Takumi Yamane <[EMAIL PROTECTED]> -- Unsubscribe mailto:[EMAIL PROTECTED] Archive http://lists.ee.ethz.ch/mrtg FAQ http://faq.mrtg.org Homepage http://www.mrtg.org WebAdmin http://lists.ee.ethz.ch/lsg2.cgi
