From: Andy Bavier Date: Fri, 5 Nov 2004 20:42:54 +0000 (+0000) Subject: Added 'top' output to slice reset message, added -f option to sendmail X-Git-Tag: pl_dod_0_2_15~1 X-Git-Url: http://git.onelab.eu/?p=mom.git;a=commitdiff_plain;h=4465839356566503834dacaafdf119d4173853fe Added 'top' output to slice reset message, added -f option to sendmail --- diff --git a/pl_dod.spec b/pl_dod.spec index 18e0e91..6f5f669 100644 --- a/pl_dod.spec +++ b/pl_dod.spec @@ -1,6 +1,6 @@ %define name pl_dod %define version 0.2 -%define release 12.planetlab%{?date:.%{date}} +%define release 15.planetlab%{?date:.%{date}} Summary: PlanetLab mom -- Cleans up your mess Name: %{name} diff --git a/pl_mom.pl b/pl_mom.pl index 86edd29..99eef4b 100755 --- a/pl_mom.pl +++ b/pl_mom.pl @@ -7,7 +7,8 @@ use LWP::Simple; $debug = 0; $proc = "pl_mom"; -$alias = "pl-mom"; +$alias_addr = "pl-mom\@planet-lab.org"; +$from_addr = "support\@planet-lab.org"; if (! $debug) { $kill_thresh = 90; @@ -16,7 +17,7 @@ if (! $debug) { $change_thresh = 5; $min_thresh = 10; - $sendmail = "/usr/sbin/sendmail -t"; + $sendmail = "/usr/sbin/sendmail -t -f$from_addr"; $pidfile = "/var/run/$proc.pid"; $rebootfile = "/var/lib/misc/pl_mom.reboot"; } else { @@ -78,12 +79,15 @@ while (1) { #slice_warning_mail($hog); } } else { + my $id = `id -u $hog`; + chomp($id); + my $top = `chcontext --ctx $id top -b -n 1`; syslog ("warning", "pl_mom: Resetting slice $hog"); if (! $debug) { slice_reset($hog); } syslog ("warning", "pl_mom: Sending mail to slice $hog"); - slice_reset_mail($hog); + slice_reset_mail($hog, $top); } } } @@ -117,8 +121,8 @@ sub shutdown_mail { = localtime(time); my $date = sprintf("%4d-%02d-%02d %02d:%02d:%02d", $year+1900, $mon+1, $mday, $hour, $min, $sec); - my $to = "To: $alias\@planet-lab.org\n"; - my $from = "From: support\@planet-lab.org\n"; + my $to = "To: $alias_addr\n"; + my $from = "From: $from_addr\n"; my $subject = "Subject: $proc rebooted $hostname\n"; my $msg ="Swap space was exhausted on $hostname and so $proc rebooted ". "it.\n\nAs of $date, the node has successfully come back online.\n". @@ -135,6 +139,7 @@ sub shutdown_mail { sub slice_reset_mail { my $hog = $_[0]; + my $top = $_[1]; my $hog_mem = sprintf ("%0.f", $Slice{$hog}{pmem}/1000); my $hog_pct = $Slice{$hog}{mem_pct}; my $hostname = hostname(); @@ -142,15 +147,16 @@ sub slice_reset_mail { = localtime(time); my $date = sprintf("%4d-%02d-%02d %02d:%02d:%02d", $year+1900, $mon+1, $mday, $hour, $min, $sec); - my $to = "To: $alias\@planet-lab.org, $hog\@slices.planet-lab.org\n"; - my $from = "From: support\@planet-lab.org\n"; - my $subject = "Subject: $proc resetting slice $hog on $hostname\n"; + my $to = "To: $alias_addr, $hog\@slices.planet-lab.org\n"; + my $from = "From: $from_addr\n"; + my $subject = "Subject: $proc reset slice $hog on $hostname\n"; my $msg = "As of $date, swap space is nearly exhausted on $hostname.\n\n". "Slice $hog is being reset since it is the largest consumer ". "of physical memory at ${hog_mem}MB ($hog_pct%).\n\n". "Please reply to this message explaining the nature of your ". "experiment, and what you are doing to address the problem.\n". - "\n$date $hostname reset $hog\n"; + "\nOutput of 'top -b -n 1' in your slice prior to reset:\n". + "$top\n\n$date $hostname reset $hog\n"; open(SENDMAIL, "|$sendmail") or die "Cannot open $sendmail: $!"; print SENDMAIL $to; @@ -172,12 +178,12 @@ sub slice_warning_mail { $year+1900, $mon+1, $mday, $hour, $min, $sec); if ($hog =~ /^root$/) { - $to = "To: $alias\@planet-lab.org\n"; + $to = "To: $alias_addr\n"; } else { - $to = "To: $alias\@planet-lab.org, $hog\@slices.planet-lab.org\n"; + $to = "To: $alias_addr, $hog\@slices.planet-lab.org\n"; } - my $from = "From: support\@planet-lab.org\n"; + my $from = "From: $from_addr\n"; my $subject = "Subject: $proc may reset slice $hog on $hostname\n"; my $msg = "As of $date, swap space is over $log_thresh% full on ". "$hostname.\n\nSlice $hog is the largest consumer ". @@ -205,12 +211,12 @@ sub unkillable_alarm_mail { $year+1900, $mon+1, $mday, $hour, $min, $sec); if ($hog =~ /^root$/) { - $to = "To: $alias\@planet-lab.org\n"; + $to = "To: $alias_addr\n"; } else { - $to = "To: $alias\@planet-lab.org, $hog\@slices.planet-lab.org\n"; + $to = "To: $alias_addr, $hog\@slices.planet-lab.org\n"; } - my $from = "From: support\@planet-lab.org\n"; + my $from = "From: $from_addr\n"; my $subject = "Subject: $proc: alarm for slice $hog on $hostname\n"; my $msg = "As of $date, swap space is over $log_thresh% full on ". "$hostname.\n\nSlice $hog is the largest consumer ".