--- loncom/loncron 2003/03/10 17:39:21 1.37 +++ loncom/loncron 2003/09/10 19:13:09 1.42 @@ -49,6 +49,128 @@ sub errout { ENDERROUT } +sub start_daemon { + my ($fh,$daemon,$pidfile) = @_; + system("$perlvar{'lonDaemons'}/$daemon 2>>$perlvar{'lonDaemons'}/logs/${daemon}_errors"); + sleep 2; + if (-e $pidfile) { + print $fh "Seems like it started ...
"; + my $lfh=IO::File->new("$pidfile"); + my $daemonpid=<$lfh>; + chomp($daemonpid); + sleep 2; + if (kill 0 => $daemonpid) { + return 1; + } else { + return 0; + } + } + print $fh "Seems like that did not work!
"; + $errors++; + return 0; +} + +sub checkon_daemon { + my ($fh,$daemon,$maxsize,$sendusr1)=@_; + + print $fh '
'; + printf("%-10s ",$daemon); + if (-e "$perlvar{'lonDaemons'}/logs/$daemon.log"){ + open (DFH,"tail -n25 $perlvar{'lonDaemons'}/logs/$daemon.log|"); + while ($line="; + + my $pidfile="$perlvar{'lonDaemons'}/logs/$daemon.pid"; + + my $restartflag=1; + + if (-e $pidfile) { + my $lfh=IO::File->new("$pidfile"); + my $daemonpid=<$lfh>; + chomp($daemonpid); + if (kill 0 => $daemonpid) { + print $fh ") { + print $fh "$line"; + if ($line=~/INFO/) { $notices++; } + if ($line=~/WARNING/) { $notices++; } + if ($line=~/CRITICAL/) { $warnings++; } + }; + close (DFH); + } + print $fh "
"; + print " "; + if (&start_daemon($fh,$daemon,$pidfile)) { + print $fh "
"; + } + } + + if (-e "$perlvar{'lonDaemons'}/logs/$daemon.log"){ + print $fh "
"; + open (DFH,"tail -n100 $perlvar{'lonDaemons'}/logs/$daemon.log|"); + while ($line="; + } + } + + $fname="$perlvar{'lonDaemons'}/logs/$daemon.log"; + + my ($dev,$ino,$mode,$nlink, + $uid,$gid,$rdev,$size, + $atime,$mtime,$ctime, + $blksize,$blocks)=stat($fname); + + if ($size>$maxsize) { + print $fh "Rotating logs ...) { + print $fh "$line"; + if ($line=~/WARNING/) { $notices++; } + if ($line=~/CRITICAL/) { $notices++; } + }; + close (DFH); + print $fh "
";
+ rename("$fname.2","$fname.3");
+ rename("$fname.1","$fname.2");
+ rename("$fname","$fname.1");
+ }
+
+ &errout($fh);
+}
# ================================================================ Main Program
# --------------------------------- Read loncapa_apache.conf and loncapa.conf
@@ -131,6 +253,7 @@ $date=localtime($now);
{
my $fh=IO::File->new(">$statusdir/newstatus.html");
+my %simplestatus=();
print $fh (< ";
- my $lfh=IO::File->new("$lonsqlfile");
- my $lonsqlpid=<$lfh>;
- chomp($lonsqlpid);
- sleep 2;
- if (kill 0 => $lonsqlpid) {
- print $fh " ";
- system(
- "$perlvar{'lonDaemons'}/lonsql 2>>$perlvar{'lonDaemons'}/logs/lonsql_errors");
- sleep 2;
- }
- } else {
- print $fh "Seems like that did not work! ";
- $errors++;
- }
- if (-e "$perlvar{'lonDaemons'}/logs/lonsql.log"){
- print $fh " ";
- rename("$fname.2","$fname.3");
- rename("$fname.1","$fname.2");
- rename("$fname","$fname.1");
- }
-
- &errout($fh);
-}
# ------------------------------------------------------------------------ lond
-print $fh ' ";
- my $lfh=IO::File->new("$londfile");
- my $londpid=<$lfh>;
- chomp($londpid);
- sleep 2;
- if (kill 0 => $londpid) {
- print $fh " ";
- system(
- "$perlvar{'lonDaemons'}/lond 2>>$perlvar{'lonDaemons'}/logs/lond_errors");
- sleep 2;
- }
- } else {
- print $fh "Seems like that did not work! ";
- $errors++;
- }
- if (-e "$perlvar{'lonDaemons'}/logs/lond.log"){
- print $fh " ";
- rename("$fname.2","$fname.3");
- rename("$fname.1","$fname.2");
- rename("$fname","$fname.1");
-}
+&checkon_daemon($fh,'lond',40000,1);
-&errout($fh);
# ------------------------------------------------------------------------ lonc
-print $fh ' ";
- my $lfh=IO::File->new("$loncfile");
- my $loncpid=<$lfh>;
- chomp($loncpid);
- sleep 2;
- if (kill 0 => $loncpid) {
- print $fh " ";
- system(
- "$perlvar{'lonDaemons'}/lonc 2>>$perlvar{'lonDaemons'}/logs/lonc_errors");
- sleep 2;
- }
- } else {
- print $fh "Seems like that did not work! ";
- $errors++;
- }
- if (-e "$perlvar{'lonDaemons'}/logs/lonc.log") {
- print $fh " ";
- rename("$fname.2","$fname.3");
- rename("$fname.1","$fname.2");
- rename("$fname","$fname.1");
-}
-
-
-&errout($fh);
# -------------------------------------------------------------------- lonhttpd
-print $fh ' ";
- my $lfh=IO::File->new("$lonhttpdfile");
- my $lonhttpdpid=<$lfh>;
- chomp($lonhttpdpid);
- sleep 2;
- if (kill 0 => $lonhttpdpid) {
- print $fh " ";
- 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 " ";
- rename("$fname.2","$fname.3");
- rename("$fname.1","$fname.2");
- rename("$fname","$fname.1");
-}
-
-
-&errout($fh);
# ---------------------------------------------------------------------- lonnet
print $fh ' \n";
$warnings=$warnings+5*$unsend;
+if ($unsend) { $simplestatus{'unsend'}=$unsend; }
print $fh "lonsql
Log
';
- print "lonsql\n";
- if (-e "$perlvar{'lonDaemons'}/logs/lonsql.log"){
- open (DFH,"tail -n100 $perlvar{'lonDaemons'}/logs/lonsql.log|");
- while ($line=
";
-
- my $lonsqlfile="$perlvar{'lonDaemons'}/logs/lonsql.pid";
-
- $restartflag=1;
-
- if (-e $lonsqlfile) {
- my $lfh=IO::File->new("$lonsqlfile");
- my $lonsqlpid=<$lfh>;
- chomp($lonsqlpid);
- if (kill 0 => $lonsqlpid) {
- print $fh "lonsql at pid $lonsqlpid responding
";
- $restartflag=0;
- } else {
- $errors++; $errors++;
- print $fh "lonsql at pid $lonsqlpid not responding
";
- $restartflag=1;
- print $fh
- "Decided to clean up stale .pid file and restart lonsql
";
- }
- }
- if ($restartflag==1) {
- $errors++;
- print $fh '
Killall lonsql: '.
- system('killall lonsql').' - ';
- sleep 2;
- print $fh unlink($lonsqlfile).' - '.
- system('killall -9 lonsql').
- '
';
- print $fh "lonsql not running, trying to start
";
- system(
- "$perlvar{'lonDaemons'}/lonsql 2>>$perlvar{'lonDaemons'}/logs/lonsql_errors");
- sleep 2;
- if (-e $lonsqlfile) {
- print $fh "Seems like it started ...lonsql at pid $lonsqlpid responding
";
- } else {
- $errors++; $errors++;
- print $fh "lonsql at pid $lonsqlpid not responding
";
- print $fh "Give it one more try ...";
- open (DFH,"tail -n100 $perlvar{'lonDaemons'}/logs/lonsql.log|");
- while ($line=
";
- }
- }
-
- $fname="$perlvar{'lonDaemons'}/logs/lonsql.log";
+&checkon_daemon($fh,'lonsql',200000);
- my ($dev,$ino,$mode,$nlink,
- $uid,$gid,$rdev,$size,
- $atime,$mtime,$ctime,
- $blksize,$blocks)=stat($fname);
-
- if ($size>40000) {
- print $fh "Rotating logs ...lond
Log
';
-print "lond\n";
-
-if (-e "$perlvar{'lonDaemons'}/logs/lond.log"){
-open (DFH,"tail -n25 $perlvar{'lonDaemons'}/logs/lond.log|");
-while ($line=
";
-
-my $londfile="$perlvar{'lonDaemons'}/logs/lond.pid";
-
-$restartflag=1;
-if (-e $londfile) {
- my $lfh=IO::File->new("$londfile");
- my $londpid=<$lfh>;
- chomp($londpid);
- if (kill 0 => $londpid) {
- print $fh "lond at pid $londpid responding, sending USR1
";
- kill USR1 => $londpid;
- $restartflag=0;
- } else {
- $errors++;
- print $fh "lond at pid $londpid not responding
";
- $restartflag=1;
- print $fh
- "Decided to clean up stale .pid file and restart lond
";
- }
-}
-if ($restartflag==1) {
- $errors++;
- print $fh '
Killall lond: '.
- system('killall lond').' - ';
- sleep 2;
- print $fh unlink($londfile).' - '.system('killall -9 lond').
- '
';
- print $fh "lond not running, trying to start
";
- system(
- "$perlvar{'lonDaemons'}/lond 2>>$perlvar{'lonDaemons'}/logs/lond_errors");
- sleep 2;
- if (-e $londfile) {
- print $fh "Seems like it started ...lond at pid $londpid responding
";
- } else {
- $errors++; $errors++;
- print $fh "lond at pid $londpid not responding
";
- print $fh "Give it one more try ...";
- open (DFH,"tail -n100 $perlvar{'lonDaemons'}/logs/lond.log|");
- while ($line=
";
- }
-}
-
-$fname="$perlvar{'lonDaemons'}/logs/lond.log";
-
- my ($dev,$ino,$mode,$nlink,
- $uid,$gid,$rdev,$size,
- $atime,$mtime,$ctime,
- $blksize,$blocks)=stat($fname);
-
-if ($size>40000) {
- print $fh "Rotating logs ...lonc
Log
';
-print "lonc\n";
-
-if (-e "$perlvar{'lonDaemons'}/logs/lonc.log"){
-open (DFH,"tail -n25 $perlvar{'lonDaemons'}/logs/lonc.log|");
-while ($line=
";
-
-my $loncfile="$perlvar{'lonDaemons'}/logs/lonc.pid";
-
-$restartflag=1;
-if (-e $loncfile) {
- my $lfh=IO::File->new("$loncfile");
- my $loncpid=<$lfh>;
- chomp($loncpid);
- if (kill 0 => $loncpid) {
- print $fh "lonc at pid $loncpid responding, sending USR1
";
- kill USR1 => $loncpid;
- $restartflag=0;
- } else {
- $errors++;
- print $fh "lonc at pid $loncpid 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 lonc
";
- }
-}
-if ($restartflag==1) {
- $errors++;
- print $fh '
Killall lonc: '.
- system('killall lonc').' - ';
- sleep 2;
- print $fh unlink($loncfile).' - '.system('killall -9 lonc').
- '
';
- print $fh "lonc not running, trying to start
";
- system(
- "$perlvar{'lonDaemons'}/lonc 2>>$perlvar{'lonDaemons'}/logs/lonc_errors");
- sleep 2;
- if (-e $loncfile) {
- print $fh "Seems like it started ...lonc at pid $loncpid responding
";
- } else {
- $errors++; $errors++;
- print $fh "lonc at pid $loncpid not responding
";
- print $fh "Give it one more try ...";
- open (DFH,"tail -n100 $perlvar{'lonDaemons'}/logs/lonc.log|");
- while ($line=
";
- }
-}
-
-$fname="$perlvar{'lonDaemons'}/logs/lonc.log";
-
- my ($dev,$ino,$mode,$nlink,
- $uid,$gid,$rdev,$size,
- $atime,$mtime,$ctime,
- $blksize,$blocks)=stat($fname);
+&checkon_daemon($fh,'lonc',40000,1);
-if ($size>40000) {
- print $fh "Rotating logs ...lonhttpd
Log
';
-print "lonhttpd\n";
-
-if (-e "$perlvar{'lonDaemons'}/logs/lonhttpd.log"){
-open (DFH,"tail -n25 $perlvar{'lonDaemons'}/logs/lonhttpd.log|");
-while ($line=
";
-
-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) {
- $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 ...lonhttpd at pid $lonhttpdpid responding
";
- } else {
- $errors++; $errors++;
- print $fh "lonhttpd at pid $lonhttpdpid not responding
";
- print $fh "Give it one more try ...";
- open (DFH,"tail -n100 $perlvar{'lonDaemons'}/logs/lonhttpd.log|");
- while ($line=
";
- }
-}
-
-$fname="$perlvar{'lonDaemons'}/logs/lonhttpd.log";
+&checkon_daemon($fh,'lonhttpd',40000);
- my ($dev,$ino,$mode,$nlink,
- $uid,$gid,$rdev,$size,
- $atime,$mtime,$ctime,
- $blksize,$blocks)=stat($fname);
-
-if ($size>40000) {
- print $fh "Rotating logs ...lonnet
Temp Log
';
-print "lonnet\n";
+print "checking logs\n";
if (-e "$perlvar{'lonDaemons'}/logs/lonnet.log"){
open (DFH,"tail -n50 $perlvar{'lonDaemons'}/logs/lonnet.log|");
while ($line=
";
# ----------------------------------------------------------------- Connections
print $fh 'Connections
';
-
+print "testing connections\n";
print $fh "";
foreach $tryserver (sort(keys(%hostname))) {
-
+ print(".");
$answer=reply("pong",$tryserver);
if ($answer eq "$tryserver:$perlvar{'lonHostID'}") {
$result="ok";
@@ -752,6 +504,7 @@ foreach $tryserver (sort(keys(%hostname)
$warnings++;
if ($answer eq 'con_lost') { $warnings++; }
}
+ if ($answer =~ /con_lost/) { print(" $tryserver down\n"); }
print $fh "
";
# ------------------------------------------------------------ Delayed messages
print $fh ' \n";
}
@@ -761,7 +514,7 @@ print $fh "$tryserver $result Delayed Messages
';
-print "buffers\n";
+print "checking buffers\n";
print $fh 'Scanning Permanent Log
';
@@ -772,7 +525,7 @@ $unsend=0;
($time,$sdf,$dserv,$dcmd)=split(/:/,$line);
if ($sdf eq 'F') {
$local=localtime($time);
- print "Failed: $time, $dserv, $dcmd
";
+ print $fh "Failed: $time, $dserv, $dcmd
";
$warnings++;
}
if ($sdf eq 'S') { $unsend--; }
@@ -782,6 +535,7 @@ $unsend=0;
print $fh "Total unsend messages: $unsendOutgoing Buffer
";
open (DFH,"ls -lF $perlvar{'lonSockDir'}/delayed|");
@@ -798,15 +552,27 @@ print $fh "Total Error Count: $total
$now=time;
$date=localtime($now);
print $fh "
$date ($now)