Added 'top' output to slice reset message, added -f option to sendmail
authorAndy Bavier <acb@cs.princeton.edu>
Fri, 5 Nov 2004 20:42:54 +0000 (20:42 +0000)
committerAndy Bavier <acb@cs.princeton.edu>
Fri, 5 Nov 2004 20:42:54 +0000 (20:42 +0000)
pl_dod.spec
pl_mom.pl

index 18e0e91..6f5f669 100644 (file)
@@ -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}
index 86edd29..99eef4b 100755 (executable)
--- 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 ".