On Fri, 27 Jan 2006, Ed McLain wrote:

Heh.. Sadly, I never thought of that ;)  But that does tend to make more
sense.

What about:

http://search.cpan.org/~clintdw/Sys-CpuLoad-0.03/

Cheers.


Ed


On Thu, 26 Jan 2006 23:55:58 -0600, Peter Eisch wrote:

On 1/26/06 10:42 PM, "Robert Spier" <[EMAIL PROTECTED]> wrote:

I'm sure there is a module that
someone has written that abstracts this all away.

Sorry for the text inline, I'm somewhat encumbered at the moment:

#!/usr/bin/perl

=head1 NAME

loadcheck

=head1 DESCRIPTION

Only takes email transactions if the system load is at or below a
specified level.

=head1 CONFIG

max_load

  This is the 1 minute system load where we won't take transactions
if our load is higher than this value.  (Default: 7)

uptime

  The path to the command 'uptime' if different than the default.
(Default: /usr/bin/uptime)

Example:

loadcheck max_load 7 uptime /usr/bin/uptime

=over 4

=head1 AUTHOR

Written by Peter Eisch <[EMAIL PROTECTED]>.

=cut

my $VERSION = 0.01;

sub register {
  my ($self, $qp, @args) = @_;

  %{$self->{_args}} = @args;

  $self->{_args}->{max_load} = 7
      if (! defined $self->{_args}->{max_load});

  $self->{_args}->{uptime} = '/usr/bin/uptime'
      if (! defined $self->{_args}->{uptime});

  $self->register_hook("connect", "loadcheck");
}

sub loadcheck {
  my ($self, $transaction) = @_;

  my $hiload = 0;

  my $cmd = $self->{_args}->{uptime};
  #10:33AM  up  2:06, 1 user, load averages: 6.55, 3.76, 2.48
  # 12:29am  2 users,  load average: 0.05, 0.05, 0.06
  # 12:30am  up 5 days, 12:43,  1 user,  load average: 0.00, 0.00, 0.00

  my $res = `$self->{_args}->{uptime}`;
  if ($res =~ /aver\S+: (\d+\.\d+)/) {
      $hiload = $1;
  }

  if ($hiload > $self->{_args}->{max_load}) {
      $self->log(LOGERROR, "local load too high: $hiload");
      return DENYSOFT;
  }

  return (DECLINED, "continuing with load: $hiload");
}




--
Mark Powell - UNIX System Administrator - The University of Salford
Information Services Division, Clifford Whitworth Building,
Salford University, Manchester, M5 4WT, UK.
Tel: +44 161 295 4837  Fax: +44 161 295 5888  www.pgp.com for PGP key

Reply via email to