--- loncom/cgi/clusterstatus.pl 2003/07/30 21:20:16 1.8 +++ loncom/cgi/clusterstatus.pl 2003/08/05 12:52:23 1.15 @@ -2,10 +2,8 @@ $|=1; # The LearningOnline Network with CAPA # Cluster Status -# (Versions -# (Running loncron -# 09/06/01 Gerd Kortemeyer) -# 02/18/02,02/19/02 Gerd Kortemeyer) +# +# $Id: clusterstatus.pl,v 1.15 2003/08/05 12:52:23 www Exp $ use lib '/home/httpd/lib/perl/'; use LONCAPA::Configuration; @@ -18,6 +16,23 @@ my %host=(); my $oneday=60*60*24; my %connectionstatus=(); +my %perlvar=(); + +my $mode; +my $concount=0; + +sub select_form { + my ($def,$name,%hash) = @_; + my $selectform = ""; + return $selectform; +} + sub key { my ($local,$url)=@_; @@ -33,6 +48,7 @@ sub hidden { sub request { my ($local,$url,$cachetime)=@_; + $cachetime*=(0.5+rand); my $key=&key($local,$url); my $reply=''; if ($FORM{$key.'_time'}) { @@ -47,7 +63,7 @@ sub request { $reply='local_unknown'; } else { - my $ua=new LWP::UserAgent(timeout => 20); + my $ua=new LWP::UserAgent(timeout => 10); my $request=new HTTP::Request('GET', "http://".$hostname{$local}.$url); @@ -77,16 +93,21 @@ sub connected { unless ($hostname{$remote}) { return 'remote_unknown'; } my $url='/cgi-bin/ping.pl?'.$remote; # -# Slowly phase this in: if not cached, only do 10 percent of the cases +# Slowly phase this in: if not cached, only do 5 percent of the cases, +# but always do the first five. # unless ($FORM{&key($local,$url)}) { - unless (rand>0.9) { return 'not_yet'; } + unless (($concount<=5) || (rand>0.95)) { + return 'not_yet'; + } else { + $concount++; + } } # # Actually do the query # &statuslist($local,'connecting '.$remote); - my $reply=&request($local,$url,1800); + my $reply=&request($local,$url,3600); $reply=(split("\n",$reply))[0]; $reply=~s/\W//g; if ($reply ne $remote) { return $reply; } @@ -106,17 +127,98 @@ sub replyhash { return %returnhash; } -# ========================================================== Show server status +# ================================================================ Link to host sub otherwindow { my ($local,$url,$label)=@_; return - "$label"; + " $label "; } -sub serverstatus { +sub login { + my $local=shift; + print &otherwindow($local,'/adm/login?domain='.$perlvar{'lonDefDomain'}, + 'Login'); +} + +sub runloncron { + my $local=shift; + print &otherwindow($local,'/cgi-bin/loncron.pl','Run loncron'); +} + +sub loncron { + my $local=shift; + print &otherwindow($local,'/lon-status','loncron'); +} + +sub lonc { + my $local=shift; + print &otherwindow($local,'/lon-status/loncstatus.txt','lonc'); +} + +sub lond { + my $local=shift; + print &otherwindow($local,'/lon-status/londstatus.txt','lond'); +} + +sub users { + my $local=shift; + print &otherwindow($local,'/cgi-bin/userstatus.pl','Users'); +} + +sub versions { + my $local=shift; + print &otherwindow($local,'/cgi-bin/lonversions.pl','Versions'); +} + +sub server { my $local=shift; - print "\n
"; + for (my $i=0;$i<$number;$i++) { + print "+"; + } + print " |
+$local $hostdom{$local} ($hostname{$local}; $hostrole{$local})
+ $domaindescription{$hostdom{$local}} + |
+ENDHEADER + &login($local);&server($local);&users($local);&versions($local); + &loncron($local);&lond($local);&lonc($local);&runloncron($local); + print " |
$trouble |
";
+# version
+ if ($host{$local.'_version'}) {
+ print " Version: ".$host{$local.'_version'} + } +# load + if (($host{$local.'_load_doomed'}>0.5) || ($mode eq 'load_doomed')) { + print " Load: ".$host{$local.'_load'} + } +# users + if (($host{$local.'_users_doomed'}>10) || ($mode eq 'users_doomed')) { + print " Active Users: ".$host{$local.'_users'} + } + # checkrpms if ($host{$local.'_checkrpms'}) { print " RPMs: ".$host{$local.'_checkrpms'} @@ -125,6 +227,37 @@ sub serverstatus { if ($host{$local.'_mysql'}) { print " MySQL Database: ".$host{$local.'_mysql'} } +# connections + if ($host{$local.'_notconnected'}) { + print " Not connected: "; + foreach (split(/ /,$host{$local.'_notconnected'})) { + if ($_) { + print " $_"; + } + } + } +# errors + if ($host{$local.'_errors'}) { + print " loncron errors: ".$host{$local.'_errors'}; + } + print " |