Date: Thu, 14 Dec 1995 23:44:30 -0600 From: Rich Murphey <rich@lamprey.utmb.edu> To: joed@engg.ksu.edu Cc: hackers@freebsd.org Subject: Re: Logging length of PPP connections... Message-ID: <199512150544.XAA29950@id.slip.bcm.tmc.edu> In-Reply-To: <199512132345.RAA07713@gandalf.me.ksu.edu> (message from Joe Diehl on Wed, 13 Dec 1995 17:45:52 -0600 (CST))
next in thread | previous in thread | raw e-mail | index | archive | help
|From: Joe Diehl <joed@engg.ksu.edu> |Date: Wed, 13 Dec 1995 17:45:52 -0600 (CST) | |I'm getting ready to sign up with a new Internet Service Provider, and |was wondering if there was a way to find out how much my FreeBSD 2.1R |machine is connected to my current ISP per month? | |I am running FreeBSD 2.1.0-Release, and the ppp program in dial-on-demand |mode (note that I am not using pppd). | |There is no way for me to get connection statistics from my current ISP. | |Thank you in advance. :-) If you are using 'ppp' (aka ijppp) for dial-on-demand use, the perl script below produces the following: - lists connections longer than some arbitrary threshold - daily usage totals - monthly averages - histogram of usage for each hour of the day Just feed /var/log/ppp.log as standard input to the script. Rich ================================================================ ./report.perl </var/log/ppp.log PPP log report start stop hours 09-03 07:45:54 -> 09-03 10:46:28 3 09-03 20:36:19 -> 09-03 21:43:47 1.1 09-03 total: 6.49 hrs 19 conn. 09-04 02:00:49 -> 09-04 08:24:33 6.4 09-04 14:00:25 -> 09-04 17:18:06 3.3 09-04 total: 10.82 hrs 12 conn. ... Statistics for month 09: 727 connections of 33.36 min average duration. 404.15 hours total at 13.47 hours per day. 24.23 connections per day for 30 days. ... Statistics for connections started on a given hour of the day: Hour # Conn min. min/conn % of total min. 0 11 188 17 0 1 15 289 19 0 2 58 8683 149 19 3 32 2977 93 6 4 6 35 5 0 5 5 47 9 0 6 3 125 41 0 7 25 5408 216 12 8 32 630 19 1 9 53 2831 53 6 10 34 1786 52 4 11 31 829 26 1 12 26 894 34 2 13 31 1160 37 2 14 32 2438 76 5 15 31 2858 92 6 16 29 2359 81 5 17 33 2646 80 6 18 29 1645 56 3 19 5 79 15 0 20 1 67 67 0 21 5 2131 426 4 22 11 311 28 0 23 44 3075 69 7 During off peak hours 0-7: 295.94 total hours (40%) in 155 conn. During on peak hours 7-23: 429.11 total hours (59%) in 427 conn. ================================================================ #!/usr/bin/perl $time_threshold = 60; # connections longer than this (in min.) are listed. print "PPP log report\n\n"; print "start stop hours\n"; $day = ""; $month = ""; $days = 0; $day_total_time = 0; $day_connections = 0; $start = 0; $month = ""; $month_cnt = 0; $month_total_time = 0; $month_days = 1; $month_connections = 0; $last_month_days = 1; sub monthstat { print "\n\n"; print "Statistics for month $month:\n"; printf ("$month_connections connections of %10.2f min average duration.\n", $month_total_time / $month_connections); printf ("%10.2f hours total at %10.2f hours per day.\n", $month_total_time / 60., $month_total_time / (60. * $month_days)); printf ("%10.2f connections per day for $month_days days.\n", $month_connections / $month_days); print "\n\n"; } sub getln { $_ = <>; if ($_ =~ / (\d\d):(\d\d):(\d\d) /) { $hour = $1; $minute = $2; $second = $3; } if ($_ =~ /^(\d\d)-(\d\d) /) { if ($day ne $2) { if ($day ne "") { printf ("$month-$day total: %6.2f hrs $day_connections conn.\n", $day_total_time / 60.); } $day_total_time = 0; $day_connections = 0; $day = $2; $days ++; if ($month ne $1) { if ($month ne "") { &monthstat; } $month_total_time = 0; $last_month_days = $month_days; $month_days = 1; $month_connections = 0; $month = $1; $months ++; } else { $month_days = $2; } } } $_;} while (!eof (STDIN)) { &getln(); if (m/Phase: Network/) { $connections ++; $month_connections ++; $start = $second + 60 * ($minute + $hour * 60); $start_day = $day; $start_month = $month; $start_hour = $hour; $start_minute = $minute; $_ =~ / (\d\d:\d\d:\d\d) /; $start_time = $1; next; } elsif (m/(Phase: Dead|PPP Started.)/) { if ($start == 0) { next; } $end = $second + 60 * ($minute + $hour * 60); $duration = ($end - $start) / 60.; # minutes if ($start_day < $day) { $duration += ($day - $start_day) * 60 * 24.; } if ($start_month < $month) { $duration += ($day + $last_month_days - $start_day) * 60 * 24.; } if ($duration < 0) { print "bad duration: $duration\n"; $duration = 0; } $histogram[$start_hour] += $duration; $histogram_cnt[$start_hour] ++; $total_time += $duration; $day_total_time += $duration; $month_total_time += $duration; $day_connections ++; $month_connections ++; if ($duration > $time_threshold ) { printf("$start_month-$start_day $start_time -> $month-$day $hour:$minute:$second %.2g\n", $duration / 60.); } $start = 0; next; } } printf ("$month-$day total: %6.2g hrs %4g conn\n", $day_total_time / 60., $day_connections); $last_month_days = 31.; &monthstat; $total_time /= 60.; print "\nStatistics for connections started on a given hour of the day:\n"; print "\nHour # Conn min. min/conn % of total min.\n"; foreach $i (0..23) { if ($histogram_cnt[$i] > 0) { $avg = int ($histogram[$i] / $histogram_cnt[$i]); } else { $avg = 0; } $dur = int $histogram[$i]; $cent = int (100. * ($histogram[$i] / 60) / $total_time); print "$i $histogram_cnt[$i] $dur $avg $cent\n"; } $off_peak = 0; $off_peak_cnt = 0; foreach $i (0..7) { $off_peak += ($histogram[$i] / 60.); $off_peak_cnt += $histogram_cnt[$i]; } $on_peak = 0; $on_peak_cnt = 0; foreach $i (8..23) { $on_peak += ($histogram[$i] / 60.); $on_peak_cnt += $histogram_cnt[$i]; } print "\n"; printf ("During off peak hours 0-7: %6.2f total hours (%2d%%) in $off_peak_cnt conn.\n", $off_peak, 100. * $off_peak / $total_time); printf ("During on peak hours 7-23: %6.2f total hours (%2d%%) in $on_peak_cnt conn.\n", $on_peak, 100. * $on_peak / $total_time); print "\n"; exit 0;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199512150544.XAA29950>