version 1.16, 2003/08/05 18:33:08
|
version 1.24, 2005/04/13 18:30:46
|
Line 1
|
Line 1
|
#!/usr/bin/perl |
#!/usr/bin/perl |
$|=1; |
$|=1; |
# The LearningOnline Network with CAPA |
# Generates a html page showing various sataus reports about the cluster |
# Cluster Status |
|
# |
|
# $Id$ |
# $Id$ |
|
# |
|
# Copyright Michigan State University Board of Trustees |
|
# |
|
# This file is part of the LearningOnline Network with CAPA (LON-CAPA). |
|
# |
|
# LON-CAPA is free software; you can redistribute it and/or modify |
|
# it under the terms of the GNU General Public License as published by |
|
# the Free Software Foundation; either version 2 of the License, or |
|
# (at your option) any later version. |
|
# |
|
# LON-CAPA is distributed in the hope that it will be useful, |
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
# GNU General Public License for more details. |
|
# |
|
# You should have received a copy of the GNU General Public License |
|
# along with LON-CAPA; if not, write to the Free Software |
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
# |
|
# /home/httpd/html/adm/gpl.txt |
|
# |
|
# http://www.lon-capa.org/ |
|
# |
|
|
use lib '/home/httpd/lib/perl/'; |
use lib '/home/httpd/lib/perl/'; |
use LONCAPA::Configuration; |
use LONCAPA::Configuration; |
Line 26 my $fromcache;
|
Line 47 my $fromcache;
|
my %domaindescription = (); |
my %domaindescription = (); |
my %domain_auth_def = (); |
my %domain_auth_def = (); |
my %domain_auth_arg_def = (); |
my %domain_auth_arg_def = (); |
|
my %domain_lang_def=(); |
|
my %domain_city=(); |
|
my %domain_longi=(); |
|
my %domain_lati=(); |
|
|
my %hostname=(); |
my %hostname=(); |
my %hostip=(); |
my %hostip=(); |
Line 212 sub server {
|
Line 237 sub server {
|
print &otherwindow($local,'/server-status','Server Status'); |
print &otherwindow($local,'/server-status','Server Status'); |
} |
} |
|
|
|
sub announcement { |
|
my $local=shift; |
|
print &otherwindow($local,'/announcement.txt','Announcement'); |
|
} |
|
|
|
sub takeonline { |
|
my $local=shift; |
|
print &otherwindow($local,'/cgi-bin/takeonline.pl','Take online'); |
|
} |
|
|
|
sub takeoffline { |
|
my $local=shift; |
|
print &otherwindow($local,'/cgi-bin/takeoffline.pl','Take offline'); |
|
} |
|
|
|
sub reroute { |
|
my ($local,$remote)=@_; |
|
print &otherwindow($local,'/cgi-bin/takeoffline.pl?'. |
|
$hostname{$remote}.'&'.$hostdom{$local} |
|
,$remote)."\n"; |
|
} |
|
|
|
sub allreroutes { |
|
my $local=shift; |
|
&takeoffline($local); |
|
print ' Reroute to: <font size="1">'; |
|
foreach my $remote (sort keys %hostname) { |
|
unless ($local eq $remote) { |
|
&reroute($local,$remote); |
|
} |
|
} |
|
print '</font>'; |
|
} |
|
|
# ========================================================= Produce a green bar |
# ========================================================= Produce a green bar |
sub bar { |
sub bar { |
my $parm=shift; |
my $parm=shift; |
Line 233 sub serverstatus {
|
Line 292 sub serverstatus {
|
<tr><td bgcolor="#BBDDBB"><font color="#225522" face="arial"><b> |
<tr><td bgcolor="#BBDDBB"><font color="#225522" face="arial"><b> |
$local $hostdom{$local}</b> <tt>($hostname{$local}; $hostrole{$local})</tt> |
$local $hostdom{$local}</b> <tt>($hostname{$local}; $hostrole{$local})</tt> |
<br />$domaindescription{$hostdom{$local}} |
<br />$domaindescription{$hostdom{$local}} |
|
$domain_city{$hostdom{$local}} |
</font></th></tr><tr><td bgcolor="#DDDDBB"><font color="#225522"> |
</font></th></tr><tr><td bgcolor="#DDDDBB"><font color="#225522"> |
ENDHEADER |
ENDHEADER |
&login($local);&server($local);&users($local);&versions($local); |
&login($local);&server($local);&users($local);&versions($local); |
|
&announcement($local); |
&loncron($local);&lond($local);&lonc($local);&runloncron($local); |
&loncron($local);&lond($local);&lonc($local);&runloncron($local); |
print "</font></td></tr>"; |
print "</font></td></tr>"; |
if ($trouble) { |
if ($trouble) { |
print ("<tr><td bgcolor='#DDBBBB'><font color='#552222' size='+2'>$trouble</font></td></tr>"); |
print ("<tr><td bgcolor='#DDBBBB'><font color='#552222' size='+2'>$trouble</font></td></tr>"); |
} |
} |
print "<tr><td bgcolor='#BBBBBB'>"; |
print "<tr><td bgcolor='#BBBBBB'>"; |
|
# re-routing |
|
if ($host{$local.'_reroute'}) { |
|
print "<br />Reroute: ".$host{$local.'_reroute'}; |
|
&takeonline($local); |
|
} |
# version |
# version |
if ($host{$local.'_version'}) { |
if ($host{$local.'_version'}) { |
print "<br />Version: ".$host{$local.'_version'} |
print "<br />Version: ".$host{$local.'_version'} |
Line 276 ENDHEADER
|
Line 342 ENDHEADER
|
if ($host{$local.'_errors'}) { |
if ($host{$local.'_errors'}) { |
print "<br />loncron errors: ".$host{$local.'_errors'}; |
print "<br />loncron errors: ".$host{$local.'_errors'}; |
} |
} |
|
print "</td></tr><tr><td bgcolor='#DDDDDD'>"; |
|
&allreroutes($local); |
print "</td></tr></table><br />"; |
print "</td></tr></table><br />"; |
} |
} |
|
|
Line 303 sub resetvars {
|
Line 371 sub resetvars {
|
$stat_total=0; |
$stat_total=0; |
$stat_notyet=0; |
$stat_notyet=0; |
$stat_fromcache=0; |
$stat_fromcache=0; |
|
$concount=0; |
undef %host; |
undef %host; |
%host=(); |
%host=(); |
} |
} |
Line 361 foreach my $local (sort keys %hostname)
|
Line 429 foreach my $local (sort keys %hostname)
|
} |
} |
$host{$local.'_load'}=$userstatus{'loadavg'}; |
$host{$local.'_load'}=$userstatus{'loadavg'}; |
} |
} |
|
# -- Check reroute status |
|
&statuslist($local,'Reroute'); |
|
my %reroute=&replyhash($local,'/lon-status/reroute.txt',1800); |
|
if ($reroute{'status'} eq 'rerouting') { |
|
if ($reroute{'server'}) { |
|
$host{$local.'_reroute'}= |
|
'Rerouting to <tt>'.$reroute{'server'}. |
|
'</tt>, domain: '.$reroute{'domain'}. |
|
' (since '.localtime($reroute{'time'}).')'; |
|
} else { |
|
$host{$local.'_reroute'}='offline'; |
|
} |
|
} |
# -- Check mysql status |
# -- Check mysql status |
&statuslist($local,'Database'); |
&statuslist($local,'Database'); |
my %mysql=&replyhash($local,'/lon-status/mysql.txt',3600); |
my %mysql=&replyhash($local,'/lon-status/mysql.txt',3600); |
Line 431 sub reports {
|
Line 512 sub reports {
|
"<table cellspacing='3' cellpadding='3' border='0' bgcolor='#225522'>". |
"<table cellspacing='3' cellpadding='3' border='0' bgcolor='#225522'>". |
"<tr><td bgcolor='#225522'> </td>"; |
"<tr><td bgcolor='#225522'> </td>"; |
foreach my $remote (sort keys %hostname) { |
foreach my $remote (sort keys %hostname) { |
print '<th bgcolor="#DDDDBB">'.$remote.'</th>'; |
print '<td bgcolor="#DDDDBB">'.$remote.'</td>'; |
} |
} |
print "</tr>\n"; |
print "</tr>\n"; |
# connection matrix |
# connection matrix |
foreach my $local (sort keys %hostname) { |
foreach my $local (sort keys %hostname) { |
print '<tr><th bgcolor="#DDDDBB">'.$local.'</th>'; |
print '<tr><td bgcolor="#DDDDBB">'.$local.'</td>'; |
foreach my $remote (sort keys %hostname) { |
foreach my $remote (sort keys %hostname) { |
if ($connectionstatus{$local.'_TO_'.$remote} eq 'not_yet') { |
if ($connectionstatus{$local.'_TO_'.$remote} eq 'not_yet') { |
my $cellcolor='#FFFFFF'; |
my $cellcolor='#FFFFFF'; |
Line 448 sub reports {
|
Line 529 sub reports {
|
print |
print |
'<td bgcolor="'.$cellcolor.'"><font color="#225522" face="arial"><b>ok</b></td>'; |
'<td bgcolor="'.$cellcolor.'"><font color="#225522" face="arial"><b>ok</b></td>'; |
} else { |
} else { |
my $cellcolor='#DDBBBB'; |
my $cellcolor='#DDCCAA'; |
if ($connectionstatus{$local.'_TO_'.$remote} eq 'local_error') { |
if ($connectionstatus{$local.'_TO_'.$remote} eq 'local_error') { |
if ($local eq $remote) { |
if ($local eq $remote) { |
$cellcolor='#DD88AA'; |
$cellcolor='#DD88AA'; |
Line 456 sub reports {
|
Line 537 sub reports {
|
$cellcolor='#DDAACC'; |
$cellcolor='#DDAACC'; |
} |
} |
} else { |
} else { |
if ($local eq $remote) { $cellcolor='#DD9999'; } |
if ($local eq $remote) { $cellcolor='#DDBB77'; } |
} |
} |
print |
print |
'<td bgcolor="'.$cellcolor.'"><font color="#552222" size="-2">'. |
'<td bgcolor="'.$cellcolor.'"><font color="#552222" size="-2">'. |
Line 529 sub reports {
|
Line 610 sub reports {
|
} |
} |
if ($host{$local.'_errors'}) { |
if ($host{$local.'_errors'}) { |
$trouble='Has loncron errors.<br />'; |
$trouble='Has loncron errors.<br />'; |
} elsif ($host{$local.'_loncron_doomed'}>600) { |
} elsif ($host{$local.'_loncron_doomed'}>2500) { |
$trouble='High loncron count.<br />'; |
$trouble='High loncron count.<br />'; |
} |
} |
if ($host{$local.'_load_doomed'}>5) { |
if ($host{$local.'_load_doomed'}>5) { |
Line 544 sub reports {
|
Line 625 sub reports {
|
if ($host{$local.'_checkrpms_doomed'}>100) { |
if ($host{$local.'_checkrpms_doomed'}>100) { |
$trouble='RPMs outdated.<br />'; |
$trouble='RPMs outdated.<br />'; |
} |
} |
|
if ($host{$local.'_reroute'}) { |
|
$trouble='Rerouting<br >'; |
|
} |
if ($trouble) { $count++; &serverstatus($local,$trouble); } |
if ($trouble) { $count++; &serverstatus($local,$trouble); } |
} |
} |
unless ($count) { print "No mayor trouble."; } |
unless ($count) { print "No mayor trouble."; } |
Line 641 delete $perlvar{'lonSqlAccess'}; # remov
|
Line 725 delete $perlvar{'lonSqlAccess'}; # remov
|
while (<$fh>) { |
while (<$fh>) { |
next if (/^(\#|\s*$)/); |
next if (/^(\#|\s*$)/); |
chomp; |
chomp; |
my ($domain, $domain_description, $def_auth, $def_auth_arg) |
my ($domain, $domain_description, $def_auth, $def_auth_arg, |
= split(/:/,$_,4); |
$def_lang, $city, $longi, $lati) = split(/:/,$_); |
$domain_auth_def{$domain}=$def_auth; |
$domain_auth_def{$domain}=$def_auth; |
$domain_auth_arg_def{$domain}=$def_auth_arg; |
$domain_auth_arg_def{$domain}=$def_auth_arg; |
$domaindescription{$domain}=$domain_description; |
$domaindescription{$domain}=$domain_description; |
|
$domain_lang_def{$domain}=$def_lang; |
|
$domain_city{$domain}=$city; |
|
$domain_longi{$domain}=$longi; |
|
$domain_lati{$domain}=$lati; |
} |
} |
} |
} |
} |
} |