--- loncom/cgi/clusterstatus.pl 2003/09/14 19:00:03 1.23 +++ loncom/cgi/clusterstatus.pl 2009/01/15 22:34:18 1.27 @@ -1,7 +1,7 @@ #!/usr/bin/perl $|=1; -# Generates a html page showing various sataus reports about the cluster -# $Id: clusterstatus.pl,v 1.23 2003/09/14 19:00:03 www Exp $ +# Generates a html page showing various status reports about the domain or cluster +# $Id: clusterstatus.pl,v 1.27 2009/01/15 22:34:18 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -26,14 +26,20 @@ $|=1; # http://www.lon-capa.org/ # -use lib '/home/httpd/lib/perl/'; -use LONCAPA::Configuration; use strict; +use lib '/home/httpd/lib/perl/'; +use Apache::lonnet; +use Apache::lonlocal; +use LONCAPA::Configuration; +use LONCAPA::loncgi; +use LONCAPA::lonauthcgi; use LWP::UserAgent(); use HTTP::Headers; use IO::File; +my $perlvar=&LONCAPA::Configuration::read_conf('loncapa.conf'); + my %host=(); my $oneday=60*60*24; @@ -44,19 +50,16 @@ my $mode; my $concount=0; my $fromcache; -my %domaindescription = (); -my %domain_auth_def = (); -my %domain_auth_arg_def = (); -my %domain_lang_def=(); -my %domain_city=(); -my %domain_longi=(); -my %domain_lati=(); - -my %hostname=(); -my %hostip=(); -my %hostdom=(); -my %hostrole=(); -my %libserv=(); +my %domaininfo = &Apache::lonnet::domain_info(); +my %allhostname = &Apache::lonnet::all_hostnames(); +my (%hostname,%hostip); +my %hostdom = &Apache::lonnet::all_host_domain(); +my %iphost = &Apache::lonnet::get_iphost(); +my %libserv= &Apache::lonnet::all_library(); + +foreach my $ip (keys(%iphost)) { + $hostip{$iphost{$ip}} = $ip; +} my $maxusers=0; my $maxload=0; @@ -71,10 +74,10 @@ my $stat_fromcache=0; sub select_form { my ($def,$name,%hash) = @_; my $selectform = ""; return $selectform; @@ -90,7 +93,7 @@ sub key { sub hidden { my ($name,$value)=@_; - print "\n"; + print("\n"); } sub request { @@ -102,11 +105,11 @@ sub request { # if fromcache flag is set, only return cached values if ($fromcache) { if ($FORM{$key.'_time'}) { + $stat_fromcache++; return $FORM{$key}; - $stat_fromcache++; } else { + $stat_notyet++; return 'not_yet'; - $stat_notyet++; } } # normal mode, refresh when expired or not yet present @@ -118,25 +121,20 @@ sub request { } } unless ($reply) { - unless ($hostname{$local}) { - $reply='local_unknown'; - } else { - - my $ua=new LWP::UserAgent(timeout => 10); - + if ($hostname{$local}) { + my $ua=new LWP::UserAgent(timeout => 20); my $request=new HTTP::Request('GET', "http://".$hostname{$local}.$url); - $request->authorization_basic('lonadm','litelite'); - my $response=$ua->request($request); - - unless ($response->is_success) { + if ($response->is_success) { + $reply=$response->content; + chomp($reply); + } else { $reply='local_error'; - } else { - $reply=$response->content; - chomp($reply); } - } + } else { + $reply='local_unknown'; + } &hidden($key.'_time',time); } &hidden($key,$reply); @@ -198,149 +196,168 @@ sub otherwindow { sub login { my $local=shift; - print &otherwindow($local,'/adm/login?domain='.$perlvar{'lonDefDomain'}, - 'Login'); + print(&otherwindow($local,'/adm/login?domain='.$perlvar{'lonDefDomain'}, + 'Login')); } sub runloncron { my $local=shift; - print &otherwindow($local,'/cgi-bin/loncron.pl','Run loncron'); + print(&otherwindow($local,'/cgi-bin/loncron.pl',&Apache::lonlocal::mt('Run loncron'))); } sub loncron { my $local=shift; - print &otherwindow($local,'/lon-status','loncron'); + print(&otherwindow($local,'/lon-status','loncron')); } sub lonc { my $local=shift; - print &otherwindow($local,'/lon-status/loncstatus.txt','lonc'); + print(&otherwindow($local,'/lon-status/loncstatus.txt','lonc')); } sub lond { my $local=shift; - print &otherwindow($local,'/lon-status/londstatus.txt','lond'); + print(&otherwindow($local,'/lon-status/londstatus.txt','lond')); } sub users { my $local=shift; - print &otherwindow($local,'/cgi-bin/userstatus.pl','Users'); + print(&otherwindow($local,'/cgi-bin/userstatus.pl',&Apache::lonlocal::mt('Users'))); } sub versions { my $local=shift; - print &otherwindow($local,'/cgi-bin/lonversions.pl','Versions'); + print(&otherwindow($local,'/cgi-bin/lonversions.pl',&Apache::lonlocal::mt('Versions'))); } sub server { my $local=shift; - print &otherwindow($local,'/server-status','Server Status'); + print(&otherwindow($local,'/server-status',&Apache::lonlocal::mt('Server Status'))); } sub announcement { my $local=shift; - print &otherwindow($local,'/announcement.txt','Announcement'); + print(&otherwindow($local,'/announcement.txt',&Apache::lonlocal::mt('Announcement'))); } sub takeonline { my $local=shift; - print &otherwindow($local,'/cgi-bin/takeonline.pl','Take online'); + print(&otherwindow($local,'/cgi-bin/takeonline.pl',&Apache::lonlocal::mt('Take online'))); } sub takeoffline { my $local=shift; - print &otherwindow($local,'/cgi-bin/takeoffline.pl','Take offline'); + print(&otherwindow($local,'/cgi-bin/takeoffline.pl',&Apache::lonlocal::mt('Take offline'))); } sub reroute { my ($local,$remote)=@_; - print &otherwindow($local,'/cgi-bin/takeoffline.pl?'. + print(&otherwindow($local,'/cgi-bin/takeoffline.pl?'. $hostname{$remote}.'&'.$hostdom{$local} - ,$remote)."\n"; + ,$remote)."\n"); } sub allreroutes { my $local=shift; &takeoffline($local); - print ' Reroute to: '; - foreach my $remote (sort keys %hostname) { + my $reroute; + foreach my $remote (sort(keys(%hostname))) { unless ($local eq $remote) { - &reroute($local,$remote); + $reroute .= &reroute($local,$remote); } } - print ''; + if ($reroute) { + print(&Apache::lonlocal::mt('Reroute to:').' '.$reroute.''); + } } # ========================================================= Produce a green bar sub bar { my $parm=shift; my $number=int($parm+0.5); - print "
";
+ print('
|
-$local $hostdom{$local} ($hostname{$local}; $hostrole{$local})
- $domaindescription{$hostdom{$local}} -$domain_city{$hostdom{$local}} +$local $hostdom{$local} ($hostname{$local}); $hostrole + $domaininfo{$hostdom{$local}}{'description'} +$domaininfo{$hostdom{$local}}{'city'} | ||||||
ENDHEADER &login($local);&server($local);&users($local);&versions($local); &announcement($local); &loncron($local);&lond($local);&lonc($local);&runloncron($local); - print " | ||||||
$trouble | ||||||
$trouble | ||||||
"; + print(" | ||||||
");
# re-routing
if ($host{$local.'_reroute'}) {
- print " Reroute: ".$host{$local.'_reroute'}; + print(' '.$lt{'rero'}.' '.$host{$local.'_reroute'}); &takeonline($local); } # version if ($host{$local.'_version'}) { - print " Version: ".$host{$local.'_version'} + print(' '.$lt{'vers'}.' '.$host{$local.'_version'}); } # load if (($host{$local.'_load_doomed'}>0.5) || ($mode eq 'load_doomed')) { - print " Load: ".$host{$local.'_load'} + print(' '.$lt{'load'}.' '.$host{$local.'_load'}); } # users if (($host{$local.'_users_doomed'}>10) || ($mode eq 'users_doomed')) { - print " Active Users: ".$host{$local.'_users'} + print(' '.$lt{'acti'}.' '.$host{$local.'_users'}); } # checkrpms if ($host{$local.'_checkrpms'}) { - print " RPMs: ".$host{$local.'_checkrpms'} + print(' '.$lt{'rpms'}.' '.$host{$local.'_checkrpms'}); } # mysql if ($host{$local.'_mysql'}) { - print " MySQL Database: ".$host{$local.'_mysql'} + print(' '.$lt{'mysq'}.' '.$host{$local.'_mysql'}); } # connections if ($host{$local.'_notconnected'}) { - print " Not connected: "; - foreach (split(/ /,$host{$local.'_notconnected'})) { - if ($_) { - print " $_"; + print(' '.$lt{'notc'}.' '); + foreach my $item (split(/ /,$host{$local.'_notconnected'})) { + if ($item) { + print(' '.$item.''); } } } # errors if ($host{$local.'_errors'}) { - print " loncron errors: ".$host{$local.'_errors'}; + print(' '.$lt{'lonc'}.' '.$host{$local.'_errors'}); } print " | ||||||
"; &allreroutes($local); @@ -380,7 +397,7 @@ sub mainloop { &resetvars(); # ==================================================== Main Loop over all Hosts -foreach my $local (sort keys %hostname) { +foreach my $local (sort(keys(%hostname))) { $host{$local.'_unresponsive_doomed'}=0; # -- Check general status &statuslist($local,'General'); @@ -450,7 +467,7 @@ foreach my $local (sort keys %hostname) $host{$local.'_unresponsive_doomed'}++; } else { if ((time-$mysql{'time'})>(7*$oneday)) { - if ($hostrole{$local} eq 'library') { + if (exists($libserv{$local})) { $host{$local.'_mysql'}='Stale.'; $host{$local.'_mysql_doomed'}=1; } @@ -527,7 +544,7 @@ sub reports { my $cellcolor='#BBDDBB'; if ($local eq $remote) { $cellcolor='#99DD99'; } print -' | ok | '; +''.&Apache::lonlocal::mt('ok').' | '; } else { my $cellcolor='#DDCCAA'; if ($connectionstatus{$local.'_TO_'.$remote} eq 'local_error') { @@ -553,27 +570,27 @@ sub reports { # Users if ($maxusers) { my $factor=50/$maxusers; - print "
'.$local.
' '. - $domaindescription{$hostdom{$local}}. + $domaininfo{$hostdom{$local}}{'description'}. ' | '; &users($local); print ' | '. $host{$local.'_users'}.' |