--- loncom/loncron 2002/07/25 18:24:27 1.31 +++ loncom/loncron 2003/07/30 16:49:27 1.41 @@ -9,13 +9,9 @@ # # 7/14,7/15,7/19,7/21,7/22,11/18, # 2/8 Gerd Kortemeyer -# 12/6/2000,12/8 Scott Harrison # 12/23 Gerd Kortemeyer # YEAR=2001 -# 1/10/2001, 2/12/, 2/26, 3/15, 04/11, 04/21,8/27 Scott Harrison # 09/04,09/06,11/26 Gerd Kortemeyer -# YEAR=2002 -# 5/11/2002 Scott Harrison $|=1; @@ -56,8 +52,7 @@ ENDERROUT # ================================================================ Main Program # --------------------------------- Read loncapa_apache.conf and loncapa.conf -my $perlvarref=LONCAPA::Configuration::read_conf('loncapa_apache.conf', - 'loncapa.conf'); +my $perlvarref=LONCAPA::Configuration::read_conf('loncapa.conf'); %perlvar=%{$perlvarref}; undef $perlvarref; delete $perlvar{'lonReceipt'}; # remove since sensitive and not needed @@ -136,6 +131,7 @@ $date=localtime($now); { my $fh=IO::File->new(">$statusdir/newstatus.html"); +my %simplestatus=(); print $fh (< @@ -155,6 +151,7 @@ print $fh (<lonsql
  • lond
  • lonc +
  • lonhttpd
  • lonnet
  • Connections
  • Delayed Messages @@ -220,7 +217,7 @@ while ($line=) { } elsif ($usage>60) { $notices++; } - if ($usage>95) { $warnings++; $warnings++ } + if ($usage>95) { $warnings++; $warnings++; $simplestatus{'diskfull'}++; } } close (DFH); print $fh ""; @@ -264,7 +261,7 @@ while ($fname=<$perlvar{'lonDaemons'}/tm $cleaned++; unlink("$fname"); } else { - if ($since>100*$perlvar{'lonExpire'}) { + if ($since>365*$perlvar{'lonExpire'}) { $cleaned++; unlink("$fname"); } else { $old++; } @@ -320,8 +317,6 @@ print $fh ""; # ---------------------------------------------------------------------- lonsql my $restartflag=1; -if ($perlvar{'lonRole'} eq "library") { - print $fh '

    lonsql

    Log

    ';
         print "lonsql\n";
         if (-e "$perlvar{'lonDaemons'}/logs/lonsql.log"){
    @@ -356,6 +351,7 @@ if ($perlvar{'lonRole'} eq "library") {
     	}
         }
         if ($restartflag==1) {
    +	$simplestatus{'lonsql'}='off';
     	$errors++;
     	         print $fh '
    Killall lonsql: '. system('killall lonsql').' - '; @@ -375,6 +371,7 @@ if ($perlvar{'lonRole'} eq "library") { sleep 2; if (kill 0 => $lonsqlpid) { print $fh "

    lonsql at pid $lonsqlpid responding

    "; + $simplestatus{'lonsql'}='restarted'; } else { $errors++; $errors++; print $fh "

    lonsql at pid $lonsqlpid not responding

    "; @@ -407,7 +404,7 @@ if ($perlvar{'lonRole'} eq "library") { $atime,$mtime,$ctime, $blksize,$blocks)=stat($fname); - if ($size>40000) { + if ($size>200000) { print $fh "Rotating logs ...

    "; rename("$fname.2","$fname.3"); rename("$fname.1","$fname.2"); @@ -415,7 +412,6 @@ if ($perlvar{'lonRole'} eq "library") { } &errout($fh); -} # ------------------------------------------------------------------------ lond print $fh '


    lond

    Log

    ';
    @@ -453,6 +449,7 @@ if (-e $londfile) {
        }
     } 
     if ($restartflag==1) {
    +    $simplestatus{'lond'}='off';
        $errors++;
     	  print $fh '
    Killall lond: '. system('killall lond').' - '; @@ -471,6 +468,7 @@ if ($restartflag==1) { sleep 2; if (kill 0 => $londpid) { print $fh "

    lond at pid $londpid responding

    "; + $simplestatus{'lond'}='restarted'; } else { $errors++; $errors++; print $fh "

    lond at pid $londpid not responding

    "; @@ -549,6 +547,7 @@ if (-e $loncfile) { } } if ($restartflag==1) { + $simplestatus{'lonc'}='off'; $errors++; print $fh '
    Killall lonc: '. system('killall lonc').' - '; @@ -567,6 +566,7 @@ if ($restartflag==1) { sleep 2; if (kill 0 => $loncpid) { print $fh "

    lonc at pid $loncpid responding

    "; + $simplestatus{'lonc'}='restarted'; } else { $errors++; $errors++; print $fh "

    lonc at pid $loncpid not responding

    "; @@ -608,6 +608,104 @@ if ($size>40000) { &errout($fh); +# -------------------------------------------------------------------- lonhttpd + +print $fh '

    lonhttpd

    Log

    ';
    +print "lonhttpd\n";
    +
    +if (-e "$perlvar{'lonDaemons'}/logs/lonhttpd.log"){
    +open (DFH,"tail -n25 $perlvar{'lonDaemons'}/logs/lonhttpd.log|");
    +while ($line=) { 
    +   print $fh "$line";
    +   if ($line=~/INFO/) { $notices++; }
    +   if ($line=~/WARNING/) { $notices++; }
    +   if ($line=~/CRITICAL/) { $warnings++; }
    +};
    +close (DFH);
    +}
    +print $fh "
    "; + +my $lonhttpdfile="$perlvar{'lonDaemons'}/logs/lonhttpd.pid"; + +$restartflag=1; +if (-e $lonhttpdfile) { + my $lfh=IO::File->new("$lonhttpdfile"); + my $lonhttpdpid=<$lfh>; + chomp($lonhttpdpid); + if (kill 0 => $lonhttpdpid) { + print $fh "

    lonhttpd at pid $lonhttpdpid responding

    "; + $restartflag=0; + } else { + $errors++; + print $fh "

    lonhttpd at pid $lonhttpdpid not responding

    "; + # Solution: kill parent and children processes, remove .pid and restart + $restartflag=1; + print $fh + "

    Decided to clean up stale .pid file and restart lonhttpd

    "; + } +} +if ($restartflag==1) { + $simplestatus{'lonhttpd'}='off'; + $errors++; + print $fh '
    Killall lonhttpd: '. + system('killall lonhttpd').' - '; + sleep 2; + print $fh unlink($lonhttpdfile).' - '.system('killall -9 lonhttpd'). + '
    '; + print $fh "

    lonhttpd not running, trying to start

    "; + system( + "$perlvar{'lonDaemons'}/lonhttpd 2>>$perlvar{'lonDaemons'}/logs/lonhttpd_errors"); + sleep 2; + if (-e $lonhttpdfile) { + print $fh "Seems like it started ...

    "; + my $lfh=IO::File->new("$lonhttpdfile"); + my $lonhttpdpid=<$lfh>; + chomp($lonhttpdpid); + sleep 2; + if (kill 0 => $lonhttpdpid) { + print $fh "

    lonhttpd at pid $lonhttpdpid responding

    "; + $simplestatus{'lonhttpd'}='restarted'; + } else { + $errors++; $errors++; + print $fh "

    lonhttpd at pid $lonhttpdpid not responding

    "; + print $fh "Give it one more try ...

    "; + system( + "$perlvar{'lonDaemons'}/lonhttpd 2>>$perlvar{'lonDaemons'}/logs/lonhttpd_errors"); + sleep 2; + } + } else { + print $fh "Seems like that did not work!

    "; + $errors++; + } + if (-e "$perlvar{'lonDaemons'}/logs/lonhttpd.log") { + print $fh "

    ";
    +    open (DFH,"tail -n100 $perlvar{'lonDaemons'}/logs/lonhttpd.log|");
    +    while ($line=) { 
    +      print $fh "$line";
    +      if ($line=~/WARNING/) { $notices++; }
    +      if ($line=~/CRITICAL/) { $notices++; }
    +    };
    +    close (DFH);
    +    print $fh "
    "; + } +} + +$fname="$perlvar{'lonDaemons'}/logs/lonhttpd.log"; + + my ($dev,$ino,$mode,$nlink, + $uid,$gid,$rdev,$size, + $atime,$mtime,$ctime, + $blksize,$blocks)=stat($fname); + +if ($size>40000) { + print $fh "Rotating logs ...

    "; + rename("$fname.2","$fname.3"); + rename("$fname.1","$fname.2"); + rename("$fname","$fname.1"); +} + + +&errout($fh); # ---------------------------------------------------------------------- lonnet print $fh '


    lonnet

    Temp Log

    ';
    @@ -690,6 +788,7 @@ $unsend=0;
     print $fh "Total unsend messages: $unsend

    \n"; $warnings=$warnings+5*$unsend; +if ($unsend) { $simplestatus{'unsend'}=$unsend; } print $fh "

    Outgoing Buffer

    "; open (DFH,"ls -lF $perlvar{'lonSockDir'}/delayed|"); @@ -707,13 +806,28 @@ $now=time; $date=localtime($now); print $fh "
    $date ($now)\n"; print "writing done\n"; +$fh->close(); } +if ($errors) { $simplestatus{'errors'}=$errors; } +if ($warnings) { $simplestatus{'warnings'}=$warnings; } +if ($notices) { $simplestatus{'notices'}=$notices; } +$simplestatus{'time'}=time; rename ("$statusdir/newstatus.html","$statusdir/index.html"); - +{ +my $sfh=IO::File->new(">$statusdir/loncron_simple.txt"); +foreach (keys %simplestatus) { + print $sfh $_.'='.$simplestatus{$_}.'&'; +} +print $sfh "\n"; +$sfh->close(); +} if ($totalcount>200) { print "mailing\n"; - $emailto="$perlvar{'lonAdmEMail'},$perlvar{'lonSysEMail'}"; + $emailto="$perlvar{'lonAdmEMail'}"; + if ($totalcount>1000) { + $emailto.=",$perlvar{'lonSysEMail'}"; + } $subj="LON: $perlvar{'lonHostID'} E:$errors W:$warnings N:$notices"; system( "metasend -b -t $emailto -s '$subj' -f $statusdir/index.html -m text/html");